U
    M»{já3 ã                   @   s0  d dl Z d dlZd dlZd dlZd dlmZ d dlZd dlZd dlZd dl	m
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mZmZmZmZmZmZmZmZ d dlm  m Z! d dl"m#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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dd	„ ZEd
d„ ZFG dd„ dƒZGG dd„ dƒZHG dd„ dƒZIG dd„ dƒZJG dd„ dƒZKG dd„ dƒZLG dd„ dƒZMG dd„ dƒZNG dd„ dƒZOG dd„ dƒZPG d d!„ d!ƒZQG d"d#„ d#ƒZRG d$d%„ d%ƒZSG d&d'„ d'ƒZTG d(d)„ d)ƒZUG d*d+„ d+ƒZVG d,d-„ d-ƒZWG d.d/„ d/ƒZXG d0d1„ d1ƒZYG d2d3„ d3ƒZZdud5d6„Z[dvd8d9„Z\G d:d;„ d;ƒZ]G d<d=„ d=ƒZ^G d>d?„ d?ƒZ_G d@dA„ dAƒZ`eja bdBdCejcdD  ejcdE  ¡eja bdFd dGdHg¡G dIdJ„ dJƒƒƒZdG dKdL„ dLƒZeG dMdN„ dNƒZfG dOdP„ dPƒZgG dQdR„ dRƒZhG dSdT„ dTƒZiG dUdV„ dVƒZjG dWdX„ dXƒZkG dYdZ„ dZƒZlG d[d\„ d\ƒZmG d]d^„ d^ƒZnG d_d`„ d`ƒZoG dadb„ dbƒZpG dcdd„ ddƒZqG dedf„ dfƒZrG dgdh„ dhƒZsG didj„ djƒZtG dkdl„ dlƒZuG dmdn„ dnƒZvG dodp„ dpƒZwG dqdr„ drƒZxG dsdt„ dtƒZydS )wé    N©ÚFraction)Úarrays)Úma)Úassert_Úassert_equalÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_raisesÚassert_allcloseÚIS_PYPYÚassert_warnsÚassert_raises_regexÚsuppress_warningsÚHAS_REFCOUNT)Úrand) Úadd_newdoc_ufuncÚangleÚaverageÚbartlettÚblackmanÚcorrcoefÚcovÚdeleteÚdiffÚdigitizeÚextractÚflipudÚgradientÚhammingÚhanningÚi0ÚinsertÚinterpÚkaiserÚmeshgridÚmsortÚ	piecewiseÚplaceÚrot90ÚselectÚsetxor1dÚsincÚtrapzÚ
trim_zerosÚunwrapÚuniqueÚ	vectorizec                 C   s   t  | ¡}t j ||¡}|S ©N)ÚnpÚarangeÚaddÚouter)ÚnÚdata© r:   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/numpy/lib/tests/test_function_base.pyÚget_mat   s    
r<   c                 C   s(   t  t  | |¡jt j¡}| |_||_|S )za
    Like real + 1j * imag, but behaves as expected when imag contains non-finite
    values
    )r4   ÚzerosÚ	broadcastÚshapeÚcomplex_ÚrealÚimag)rA   rB   Úretr:   r:   r;   Ú_make_complex$   s    rD   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestRot90c                 C   s¤  t ttt d¡ƒ t ttt d¡dd� t ttt d¡dd� t ttt d¡dd� t ttt d¡dd� d	d
dgdddgg}ddgd
dgd	dgg}dddgdd
d	gg}dd	gdd
gddgg}d	d
dgdddgg}tdddƒD ]}tt||d�|ƒ qÞtdddƒD ]}tt||d�|ƒ �qtdddƒD ]}tt||d�|ƒ �q(td	ddƒD ]}tt||d�|ƒ �qNttt|dd�dd�|ƒ tt|d
dd�t|ddd�ƒ d S )Né   ©é   rH   rH   ©r   é   rH   ©Úaxes©rH   rH   ©r   rH   ©rJ   rJ   )éþÿÿÿrJ   r   rJ   rH   é   é   éýÿÿÿé   )ÚkrP   éÿÿÿÿ©r   rJ   ©rJ   r   ©rU   rL   )r   Ú
ValueErrorr*   r4   ÚonesÚranger   )ÚselfÚaÚb1Úb2Zb3Zb4rU   r:   r:   r;   Ú
test_basic0   s@    ÿþÿþÿzTestRot90.test_basicc                 C   sR   t  d¡}tt|ƒjdƒ tt|dd�t|dd�ƒ tt|dd�t|dd�ƒ d S )N)é2   é(   rQ   )rc   rb   rQ   rN   rK   ©r   rV   ©rJ   rH   ©rP   rV   )r4   r[   r   r*   r?   ©r]   r^   r:   r:   r;   Ú	test_axesP   s    
zTestRot90.test_axesc                 C   sü   t  d¡ d¡}ddgddggddgd	d
ggg}ddgddggd
dgd	dggg}d	dgddggd
dgddggg}d	d
gddggddgddggg}tt|dd�|ƒ tt|dd�|ƒ tt|dd�|ƒ tdd
ƒD ]&}tt||dd�t||d dd�ƒ qÐd S )Né   rG   rH   rQ   é   é   r   rJ   rF   rR   rW   rK   rX   re   )rH   r   rY   )r4   r5   Úreshaper   r*   r\   )r]   r^   Z
a_rot90_01Z
a_rot90_12Z
a_rot90_20Z
a_rot90_10rU   r:   r:   r;   Útest_rotation_axesV   sH    ÿÿþÿÿþÿÿþÿÿþÿzTestRot90.test_rotation_axesN)Ú__name__Ú
__module__Ú__qualname__ra   rh   rm   r:   r:   r:   r;   rE   /   s    rE   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 )ÚTestFlipc                 C   sl   t tjtjt d¡dd� t tjtjt d¡dd� t tjtjt d¡dd� t tjtjt d¡dd� d S )NrF   rJ   ©Úaxis©rF   rF   rH   rS   ©r   rQ   )r   r4   Ú	AxisErrorÚflipr[   ©r]   r:   r:   r;   rh   u   s    zTestFlip.test_axesc                 C   sn   t dƒ}|d d …d d d…f }tt |d¡|ƒ dddgdddgg}dddgdddgg}tt |d¡|ƒ d S )NrF   rV   rJ   r   rH   rQ   rR   ©r<   r   r4   rw   ©r]   r^   Úbr:   r:   r;   Útest_basic_lr{   s    ÿÿzTestFlip.test_basic_lrc                 C   sn   t dƒ}|d d d…d d …f }tt |d¡|ƒ dddgdddgg}dddgdddgg}tt |d¡|ƒ d S )NrF   rV   r   rJ   rH   rQ   rR   ry   rz   r:   r:   r;   Útest_basic_ud…   s    ÿÿzTestFlip.test_basic_udc                 C   sb   t  ddgddggddgddggg¡}t  ddgddggddgddggg¡}tt  |d¡|ƒ d S ©	Nr   rJ   rH   rQ   rF   rR   rj   rk   ©r4   Úarrayr   rw   rz   r:   r:   r;   Útest_3d_swap_axis0�   s    
ÿÿþ
ÿÿþzTestFlip.test_3d_swap_axis0c                 C   sb   t  ddgddggddgddggg¡}t  ddgddggddgddggg¡}tt  |d¡|ƒ d S r~   r   rz   r:   r:   r;   Útest_3d_swap_axis1œ   s    
ÿÿþ
ÿÿþzTestFlip.test_3d_swap_axis1c                 C   sb   t  ddgddggddgddggg¡}t  ddgddggddgddggg¡}tt  |d¡|ƒ d S r~   r   rz   r:   r:   r;   Útest_3d_swap_axis2©   s    
ÿÿþ
ÿÿþzTestFlip.test_3d_swap_axis2c              	   C   sR   t  d¡ dddd¡}t|jƒD ],}tt  ||¡t  | d|¡¡ |d¡ƒ q d S )Néx   rH   rQ   rF   rR   r   )	r4   r5   rl   r\   Úndimr   rw   r   Úswapaxes)r]   r^   Úir:   r:   r;   Útest_4d¶   s
    ÿzTestFlip.test_4dc                 C   sH   t  dddgdddgg¡}t  dddgdddgg¡}tt  |¡|ƒ d S )NrJ   rH   rQ   rF   rR   rj   r   rz   r:   r:   r;   Útest_default_axis¼   s    ÿÿzTestFlip.test_default_axisc                 C   s²   t  ddgddggddgddggg¡}tt j|d	d
�|ƒ t  ddgddggddgddggg¡}tt j|dd
�|ƒ t  ddgddggddgddggg¡}tt j|dd
�|ƒ d S )Nr   rJ   rH   rQ   rF   rR   rj   rk   r:   rr   rN   re   r   ©r]   r^   r{   Úcr:   r:   r;   Útest_multiple_axesÃ   s0    
ÿÿþ
ÿÿþ
ÿÿþzTestFlip.test_multiple_axesN)rn   ro   rp   rh   r|   r}   r�   r‚   rƒ   rˆ   r‰   rŒ   r:   r:   r:   r;   rq   s   s   

rq   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAnyc                 C   sT   ddddg}ddddg}ddddg}t t |¡ƒ t t |¡ƒ t t |¡ ƒ d S ©Nr   rJ   )r   r4   Úany©r]   Úy1Úy2Úy3r:   r:   r;   ra   Ü   s    zTestAny.test_basicc                 C   sb   dddgdddgdddgg}t t |¡ƒ ttj|dd�dddgƒ ttj|dd�dddgƒ d S ©Nr   rJ   rr   )r   r4   r�   r   Zsometrue©r]   r‘   r:   r:   r;   Útest_ndä   s    zTestAny.test_ndN©rn   ro   rp   ra   r–   r:   r:   r:   r;   r�   Ú   s   r�   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAllc                 C   sl   ddddg}ddddg}ddddg}t t |¡ ƒ t t |¡ƒ t t |¡ ƒ t t t |¡ ¡ƒ d S rŽ   )r   r4   Úallr€   r�   r:   r:   r;   ra   í   s    zTestAll.test_basicc                 C   sd   dddgdddgdddgg}t t |¡ ƒ ttj|dd�dddgƒ ttj|dd�dddgƒ d S r”   )r   r4   r™   r   Zalltruer•   r:   r:   r;   r–   ö   s    zTestAll.test_ndNr—   r:   r:   r:   r;   r˜   ë   s   	r˜   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCopyc                 C   sR   t  ddgddgg¡}t  |¡}t||ƒ d|d< t|d dƒ t|d dƒ d S )NrJ   rH   rQ   rF   é
   )r   r   )r4   r€   Úcopyr   r   )r]   r^   Úa_copyr:   r:   r;   ra   ÿ   s    

zTestCopy.test_basicc                 C   s°   t  ddgddgg¡}t|jjƒ t|jj ƒ t jddgddggdd�}t|jj ƒ t|jjƒ t  |¡}t|jjƒ t|jj ƒ t  |¡}t|jj ƒ t|jjƒ d S )NrJ   rH   rQ   rF   ÚF©Úorder)r4   r€   r   ÚflagsÚc_contiguousÚf_contiguousrœ   )r]   r^   Za_fortr�   Za_fort_copyr:   r:   r;   Ú
test_order  s    

zTestCopy.test_orderc                 C   sV   t  d¡}tt  tj|dd�¡ ƒ tt  tj|dd�¡ƒ tt  t |¡¡ ƒ d S )NrR   F)ZsubokT)r   r[   r   ZisMaskedArrayr4   rœ   )r]   Zmxr:   r:   r;   Ú
test_subok  s    
zTestCopy.test_subokN)rn   ro   rp   ra   r¤   r¥   r:   r:   r:   r;   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S )ÚTestAveragec                 C   sæ   t  dddg¡}tt|dd�dkƒ t  dddg¡}tt|dd�dkƒ d	d	d	g}tt|dd�d	kƒ t  d
¡}d|d< d|d< t| d¡t|dƒƒ t| d¡t|dƒƒ tddƒ}t| d¡t|dƒƒ t| d¡t|dƒƒ d S )NrJ   rH   rQ   r   rr   ç       @ç      ð?ç      @ç        rt   rW   rX   rR   )r4   r€   r   r   r[   r	   Úmeanr   )r]   r‘   r’   r“   Zy4Zy5r:   r:   r;   ra   "  s    


zTestAverage.test_basicc                 C   sT  t  d¡}t  d¡}t||d�}t  d¡d  ¡ d t  d¡ ¡  }t||ƒ t  dddgddd	gg¡}ddg}t||d
d�}t  dddg¡}t||ƒ d
d
dg}t||dd�}t  ddg¡}t||ƒ d
d
dgd
d
dgg}t  ddg¡}tt||dd�|ƒ tt||d�dƒ tdƒ 	t j
¡}	tdƒ 	t j¡}
tt j|	|
d�jt  |	|
¡kƒ d S )Nr›   ©ÚweightsrH   r¨   rJ   rQ   rF   rR   rj   r   )r­   rs   r©   ç      @ç      @ç      @)r4   r5   r   Úsumr	   r€   r   r   r   ÚastypeÚfloat32Úfloat64r   ÚdtypeÚresult_type)r]   ÚyÚwÚactualZdesiredr‘   Úw0Úw1Úw2r“   Zw3r:   r:   r;   Útest_weights4  s*    

$



zTestAverage.test_weightsc                 C   s&  t  dddgdddgg¡}t|dd�\}}t|d	ƒ t|d
dd�\}}t|t  dddg¡ƒ t|ddd�\}}t|t  ddg¡ƒ ddg}t||d
dd�\}}t|t  dddg¡ƒ dddg}t||ddd�\}}t|t  d	d	g¡ƒ d
d
dgdddgg}t||ddd�\}}t|t  dd	g¡ƒ d S )NrJ   rH   rQ   rF   rR   rj   T)Úreturnedr°   r   r§   r©   )r­   rs   r¾   r¨   )r4   r€   r   r   r   )r]   r·   ÚavgZsclrº   r»   r¼   r:   r:   r;   Útest_returnedT  s     

zTestAverage.test_returnedc                 C   sz   G dd„ dt jƒ}t  ddgddgg¡ |¡}t  ddgddgg¡ |¡}ttt  |¡ƒ|ƒ ttt j||d�ƒ|ƒ d S )Nc                   @   s   e Zd ZdS )z-TestAverage.test_subclasses.<locals>.subclassN©rn   ro   rp   r:   r:   r:   r;   Úsubclasso  s   rÂ   rJ   rH   rQ   rF   r¬   )r4   Úndarrayr€   Úviewr   Útyper   )r]   rÂ   r^   r¸   r:   r:   r;   Útest_subclassesn  s
    zTestAverage.test_subclassesc                 C   sr   dddddg}|D ]Z\}}}t jddgdd	gg|d
�}t jddgdd	gg|d
�}tt j||d�jt  |¡ƒ qd S )N)Úi4rÇ   Úf8)rÇ   Úf4rÈ   )rÉ   rÇ   rÈ   )rÉ   rÉ   rÉ   )rÉ   rÈ   rÈ   rJ   rH   rQ   rF   ©rµ   r¬   )r4   r€   r   r   rµ   )r]   ZtypsÚatZwtÚrtr^   r¸   r:   r:   r;   Útest_upcastingw  s     ÿzTestAverage.test_upcastingc                 C   sX   t  dd„ tdƒD ƒ¡}t  dd„ tdƒD ƒ¡}|| ¡  }t| d¡t||d�ƒ d S )Nc                 S   s   g | ]}t  |¡‘qS r:   ©ÚdecimalÚDecimal)Ú.0Úxr:   r:   r;   Ú
<listcomp>€  s     z1TestAverage.test_object_dtype.<locals>.<listcomp>r›   c                 S   s   g | ]}t  d ¡‘qS ©rJ   rÎ   )rÑ   Ú_r:   r:   r;   rÓ   �  s     r   r¬   )r4   r€   r\   r±   r	   r«   r   )r]   r^   r¸   r:   r:   r;   Útest_object_dtype  s    zTestAverage.test_object_dtypeN)	rn   ro   rp   ra   r½   rÀ   rÆ   rÍ   rÖ   r:   r:   r:   r;   r¦      s    	r¦   c                   @   s¢   e Zd Ze dddg¡e dddg¡e ddd	g¡gZe d
d
d
g¡e d
dd
g¡e d
d
dg¡gZddd„Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ ZdS )Ú
TestSelectrJ   rH   rQ   rF   rR   rj   rk   ri   é	   FTr   c                    s<   g }t t|ƒƒD ]&‰ |‡ fdd„t||ƒD ƒp2|g7 }q|S )Nc                    s    g | ]\}}|ˆ  r|ˆ  ‘qS r:   r:   )rÑ   ÚVÚC©Úmr:   r;   rÓ   �  s      z&TestSelect._select.<locals>.<listcomp>)r\   ÚlenÚzip)r]   ZcondÚvaluesÚdefaultÚoutputr:   rÛ   r;   Ú_select�  s    $zTestSelect._selectc                 C   sL   | j }| j}tt||dd�| j||dd�ƒ tt|ƒdƒ tt|ƒdƒ d S )Né   ©rà   rQ   )ÚchoicesÚ
conditionsr   r+   râ   r   rÝ   ©r]   rå   ræ   r:   r:   r;   ra   “  s    ÿzTestSelect.test_basicc                 C   sf   t  d¡t  dddg¡g}dt  d¡ dd¡g}tt||ƒt  d¡ƒ ttdgdgdgd	�jd
ƒ d S )NTFrJ   é   rF   rQ   ©rF   rQ   r   rä   rÔ   )	r4   r€   r5   rl   r   r+   r[   r   r?   ©r]   ræ   rå   r:   r:   r;   Útest_broadcastingœ  s    zTestSelect.test_broadcastingc                 C   sˆ   t t| j| jdƒjtjƒ dd„ | jD ƒ}t t| j|ƒjtjƒ t dddtj	ddg¡}t 
|¡}t t|g|gƒd	d	d	tj	d	d	gƒ d S )
Nù              ð?c                 S   s   g | ]}|  tj¡‘qS r:   )r²   r4   Úint8)rÑ   Úchoicer:   r:   r;   rÓ   ¨  s     z0TestSelect.test_return_dtype.<locals>.<listcomp>rJ   rH   rQ   rR   rk   r   )r   r+   ræ   rå   rµ   r4   r@   rí   r€   ÚnanÚisnan)r]   rå   ÚdrÜ   r:   r:   r;   Útest_return_dtype£  s    ÿ
zTestSelect.test_return_dtypec                 C   s"   t ttg g dƒ t ttg g ƒ d S )Nù              @)r   rZ   r+   rx   r:   r:   r;   Útest_deprecated_empty¯  s    z TestSelect.test_deprecated_emptyc                 C   sj   | j }| jd d … }|d  tj¡|d< ttt||ƒ |d  tj¡|d< ttt||ƒ ttt||ƒ d S ©Nr   )	rå   ræ   r²   r4   Úint_r   Ú	TypeErrorr+   Úuint8rç   r:   r:   r;   Útest_non_bool_deprecation³  s    z$TestSelect.test_non_bool_deprecationc                 C   s2   t  dg¡gd }t  dg¡gd }t||ƒ d S )NFéd   rJ   )r4   r€   r+   rê   r:   r:   r;   Útest_many_arguments¼  s    zTestSelect.test_many_argumentsN)r   )rn   ro   rp   r4   r€   rå   ræ   râ   ra   rë   rò   rô   rù   rû   r:   r:   r:   r;   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	e
j dddg¡dd„ ƒZdS )Ú
TestInsertc              
   C   sª  dddg}t t|ddƒddddgƒ t t|ddƒddddgƒ t t|dddgdddgƒddddddgƒ t t|ddddgƒddddddgƒ t t|dddgdƒddddddgƒ t t|tdd dƒdƒddddddgƒ t t|dddgdddgƒddddddgƒ tjddgtjd	�}t t|d|d ƒd
d
dgƒ t t|g g ƒ|ƒ tjdd��R}t ddt	¡ t t|t dgd ¡dƒdddddddgƒ t
|d jt	kƒ W 5 Q R X d S )NrJ   rH   rQ   r   rV   rØ   rk   ri   rÊ   rª   r¨   T©ÚrecordÚalwaysÚ rF   )r   r#   Úslicer4   r€   r´   ÚwarningsÚcatch_warningsÚfilterwarningsÚFutureWarningr   Úcategory)r]   r^   r{   r¸   r:   r:   r;   ra   Å  s$    
*$$&* ÿzTestInsert.test_basicc              
   C   s’  dddgg}dddgdddgg}t t|ddgƒddddgƒ t t|ddddgdd�|ƒ t t|dddd�|ƒ t t|dddd�ddddggƒ t ddgddgddgg¡}t dd¡ d¡ dd¡}tj|d d …dd…f t dd¡ d¡ dd¡j|d d …dd…f fdd�}t t|dgdgdgdggdd�|ƒ t t|dgdddgdd�|ƒ t t|ddddgdd�|ƒ t t|ddgdgdggdd�|ƒ t d¡ dd¡}t t|d d …d d…f d|d d …df dd�|ƒ t t|d d…d d …f d|dd d …f dd�|ƒ t d¡ d¡}t t|d|d d …d d …df d	d�t|d|d d …d d …df dd�ƒ t t|d|d d …dd d …f d
d�t|d|d d …dd d …f dd�ƒ t	tj
t|d|d d …dd d …f dd� t	tj
t|d|d d …dd d …f dd� t d¡ d¡}t t|d|d d …d d …df d	d�t|d|d d …d d …df dd�ƒ t t|d|d d …dd d …f d
d�t|d|d d …dd d …f dd�ƒ d S )NrJ   rH   r   rr   rQ   rF   é   ©rH   rQ   rF   rV   rP   éüÿÿÿ)r   r#   r4   r€   r5   Úrepeatrl   ZconcatenateÚTr   rv   )r]   r^   Úrr{   r‹   r:   r:   r;   Útest_multidimÙ  sN    ÿ ,ÿþ$"22" ÿ" ÿ((" ÿ" ÿzTestInsert.test_multidimc              	   C   s\   t  d¡}t t j¡� t|g ddd� W 5 Q R X t t¡� t|g ddd� W 5 Q R X d S )NrJ   rH   r   rr   Únonsense)r4   r€   ÚpytestÚraisesrv   r#   r÷   rg   r:   r:   r;   Útest_0d  s
    
zTestInsert.test_0dc              	   C   sä   G dd„ dt jƒ}t  d¡ |¡}ttt  |ddg¡|ƒƒ ttt  |g g ¡|ƒƒ ttt  |ddgddg¡|ƒƒ ttt  |tddƒddg¡|ƒƒ ttt  |tdddƒg ¡|ƒƒ t  d¡ |¡}ttt  |ddg¡|ƒƒ d S )	Nc                   @   s   e Zd ZdS )z*TestInsert.test_subclass.<locals>.SubClassNrÁ   r:   r:   r:   r;   ÚSubClass  s   r  r›   r   rJ   rH   rP   rV   )	r4   rÃ   r5   rÄ   r   Ú
isinstancer#   r  r€   ©r]   r  r^   r:   r:   r;   Útest_subclass
  s     " zTestInsert.test_subclassc                 C   sD   t  dddg¡}t  dddg|dddg¡ t|t  dddg¡ƒ d S )NrJ   r   rH   rQ   rF   rR   )r4   r€   r#   r   ©r]   rÒ   r:   r:   r;   Útest_index_array_copied  s    z"TestInsert.test_index_array_copiedc                 C   s‚   t jdddgddgd�}d}t  |d|¡}t|d t j||jd�ƒ dgd	 }t  |dd	g|¡}t|dd
g t j||jd�ƒ d S )N)rJ   r^   )rH   r{   )rQ   r‹   )Úfoor‡   )ÚbarÚa1rÊ   )rF   rñ   r   rH   rQ   )r4   r€   r#   r   rµ   )r]   r^   Úvalr{   r:   r:   r;   Útest_structured_array  s    ÿ
z TestInsert.test_structured_arrayc              	   C   sp   t  t¡�( t dddgt ddg¡ddg¡ W 5 Q R X t  t¡�$ t dddgtjg td�g ¡ W 5 Q R X d S )	Nr   rJ   rH   r¨   r§   r›   é   rÊ   )r  r  Ú
IndexErrorr4   r#   r€   Úfloatrx   r:   r:   r;   Útest_index_floats&  s    ,zTestInsert.test_index_floatsÚidxrF   r	  c              	   C   s8   t jtdd��  t dddg|gddg¡ W 5 Q R X d S )Nzout of bounds©Úmatchr   rJ   rH   rQ   rF   )r  r  r  r4   r#   )r]   r!  r:   r:   r;   Útest_index_out_of_bounds,  s    z#TestInsert.test_index_out_of_boundsN)rn   ro   rp   ra   r  r  r  r  r  r   r  ÚmarkÚparametrizer$  r:   r:   r:   r;   rü   Ã  s   *
rü   c                   @   s   e Zd Zdd„ ZdS )ÚTestAmaxc                 C   sv   dddddddg}t t |¡dƒ ddd	gddd
gdddgg}t tj|dd�ddd	gƒ t tj|dd�d	ddgƒ d S )NrQ   rF   rR   r›   rS   éûÿÿÿr°   ç      $@ç      "@r¯   ri   r©   r§   r   rr   ç       @rJ   )r   r4   Zamaxrz   r:   r:   r;   ra   4  s    þzTestAmax.test_basicN©rn   ro   rp   ra   r:   r:   r:   r;   r'  2  s   r'  c                   @   s   e Zd Zdd„ ZdS )ÚTestAminc                 C   sv   dddddddg}t t |¡dƒ ddd	gdd
dgdddgg}t tj|dd�dddgƒ t tj|dd�dddgƒ d S )NrQ   rF   rR   r›   rS   r(  r°   g      Àr*  r)  r¯   ri   r©   r§   r   rr   rJ   r®   )r   r4   Zaminrz   r:   r:   r;   ra   @  s    þzTestAmin.test_basicNr,  r:   r:   r:   r;   r-  >  s   r-  c                   @   s   e Zd Zdd„ ZdS )ÚTestPtpc              	   C   s´   t  dddddddg¡}t|jdd	�d
ƒ t  dddgdddgdddgg¡}t|jdd	�dddgƒ t|jdd	�dddgƒ t|jddd�dddggƒ t|jddd�dggƒ d S )NrQ   rF   rR   r›   rS   r(  r°   r   rr   ç      .@r*  r)  r¯   ri   r©   r§   ç      @rV   T©rs   ÚkeepdimsrW   r+  )r4   r€   r   Zptprz   r:   r:   r;   ra   L  s    þzTestPtp.test_basicNr,  r:   r:   r:   r;   r.  J  s   r.  c                   @   s   e Zd Zdd„ ZdS )Ú
TestCumsumc              
   C   s,  dddddddg}ddddgddd	d
gddddgg}t jt jt jt jt jt jt jt jt j	t j
f
D ]Æ}t  ||¡}t  ||¡}t  dddddddg|¡}tt j|dd�|ƒ t  ddddgddddgddddgg|¡}tt j|dd�|ƒ t  ddddgddddgddddgg|¡}tt j|dd�|ƒ q`d S )NrJ   rH   r›   é   rj   rR   rF   rQ   rk   rØ   rT   r  é   é#   é'   r   rr   ri   é   é   é   é   é   é   )r4   rí   rø   Úint16Úuint16Úint32Úuint32r³   r´   Ú	complex64Ú
complex128r€   r   Úcumsum)r]   ÚbaÚba2Úctyper^   Úa2Útgtr:   r:   r;   ra   [  s.    "   þ  ÿ  ÿzTestCumsum.test_basicNr,  r:   r:   r:   r;   r3  Y  s   r3  c                   @   s   e Zd Zdd„ ZdS )ÚTestProdc              	   C   sö   dddddddg}ddddgddd	d
gddddgg}t jt jt jt jt jt jt jt jfD ]˜}t  	||¡}t  	||¡}|dkrœt
tt j|ƒ t
tt j|dƒ qXt|jdd�dƒ t|jdd�t  	ddddg|¡ƒ t|jdd�t  	dddg|¡ƒ qXd S )NrJ   rH   r›   r4  rj   rR   rF   rQ   rk   rØ   ©Ú1r{   r   rr   é g  rb   é$   éT   é´   rV   r  éb  éX  )r4   r>  r?  r@  rA  r³   r´   rB  rC  r€   r   ÚArithmeticErrorÚprodr   r   ©r]   rE  rF  rG  r^   rH  r:   r:   r;   ra   r  s(    "   ÿÿÿzTestProd.test_basicNr,  r:   r:   r:   r;   rJ  p  s   rJ  c                   @   s   e Zd Zdd„ ZdS )ÚTestCumprodc                 C   sN  dddddddg}ddddgddd	d
gddddgg}t jt jt jt jt jt jt jt jfD ]ð}t  	||¡}t  	||¡}|dkrªt
tt j|ƒ t
tt j|dƒ t
tt j|ƒ qXtt j|dd�t  	dddddddg|¡ƒ tt j|dd�t  	ddddgddddgddddgg|¡ƒ tt j|dd�t  	ddddgddddgddddgg|¡ƒ qXd S ) NrJ   rH   r›   r4  rj   rR   rF   rQ   rk   rØ   rK  rV   rr   r  éÜ   i(  iÈ  rM  r   rè   é   rN  rb   rO  rP  r  r5  éÒ   rQ  r„   rR  )r4   r>  r?  r@  rA  r³   r´   rB  rC  r€   r   rS  Zcumprodr   rU  r:   r:   r;   ra   †  sN    "   ÿ  ÿÿÿ

þþÿ

þþÿzTestCumprod.test_basicNr,  r:   r:   r:   r;   rV  „  s   rV  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 )ÚTestDiffc                 C   sì   dddddg}t  ddddg¡}t  d	d	dg¡}t  d
dg¡}tt|ƒ|ƒ tt|dd�|ƒ tt|dd�|ƒ dddddg}t  ddddg¡}tt|ƒ|ƒ ddddg}t  dddg¡}t  ddg¡}tt|ƒ|ƒ tt|dd�|ƒ d S )NrJ   rF   rj   rk   rè   rQ   rH   rR   rV   r   ©r8   çš™™™™™ñ?çš™™™™™@r©   gš™™™™™É¿çš™™™™™¹¿gš™™™™™é?gš™™™™™	Àçš™™™™™¹?TF)r4   r€   r   r   r	   )r]   rÒ   ÚoutÚout2Úout3r:   r:   r;   ra   ¡  s    zTestDiff.test_basicc                 C   sö   t  d¡}d|d d …dd d…d d …f< t  d¡}d|d d …dd d…d d …f< tt|ƒt  d¡ƒ tt|dd�t  d¡ƒ tt|dd�t  d	¡ƒ tt|dd�|ƒ tt|d
d�|ƒ tt jt|dd� tt jt|dd� t  dt j¡}tt	t|ƒ d S )N)r›   r  r5  rJ   rH   )r›   é   r5  rV   )r›   r  é   rr   r   )rØ   r  r5  rP   rQ   r	  gæÇqÇñ?)
r4   r=   r[   r   r   r   rv   r€   r´   rZ   )r]   rÒ   Úexpr:   r:   r;   Ú	test_axis´  s    

zTestDiff.test_axisc                 C   s*  dt dddƒ }|d 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 …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  }tt|ƒ|ƒ tt|dd�|ƒ tt|dd	�|ƒ tt|ddd
�|ƒ d S )Nr  r›   r5  rJ   rV   rH   r[  r   rr   )r8   rs   )r   r   r   )r]   rÒ   Zout1ra  rb  Zout4r:   r:   r;   r–   Ä  s    4444zTestDiff.test_ndc                    sÄ   t tdƒƒ‰ tttˆ dd� ‡ fdd„tddƒD ƒ}ddgdgg g g}ttˆ dd�ˆ kƒ tt||ƒdd	�D ]R\}\}}tt|ƒt	j
kƒ t||ƒ t|jt	jƒ tt|ƒtdtˆ ƒ| ƒƒ qld S )
NrQ   rV   r[  c                    s   g | ]}t ˆ |d �‘qS )r[  )r   )rÑ   r8   ©rÒ   r:   r;   rÓ   Ò  s     z#TestDiff.test_n.<locals>.<listcomp>rJ   rR   r   ©Ústart)Úlistr\   r   rZ   r   r   Ú	enumeraterÞ   rÅ   r4   rÃ   r   r   rµ   rö   rÝ   Úmax)r]   rá   Úexpectedr8   r`  r:   rg  r;   Útest_nÏ  s    
zTestDiff.test_nc                 C   sŒ   t jddt jd�}t jddgdd�t jdgdd�g}| t jg dd�gd ¡ t|dd�D ],\}}t||d	�}t||ƒ t|j	|j	ƒ qZd S )
Nz
1066-10-13z
1066-10-16rÊ   rJ   útimedelta64[D]r   rQ   rh  r[  )
r4   r5   Z
datetime64r€   Úextendrk  r   r   r   rµ   )r]   rÒ   rm  r8   re  r`  r:   r:   r;   Ú
test_timesÛ  s    þ
zTestDiff.test_timesc                 C   sö   t jddgddgddgddgd	d
ggddgddgddgddgddggd�}t|ƒ}t|jdgdgdgdgdggƒ t|jdgdgdgdgdggƒ tt|ƒt|ƒkƒ t|dd�}t|jg g g g g gƒ t|jg g g g g gƒ tt|ƒt|ƒkƒ d S )NrJ   rH   rQ   rF   rR   rj   rk   ri   rØ   r›   FT©Úmaskr[  )r   r€   r   r   r9   rs  r   rÅ   )r]   rÒ   r`  rb  r:   r:   r;   r  ç  s&    $  ÿÿ   ÿzTestDiff.test_subclassc                 C   sN  t  d¡d }tt|dd�t  d¡ƒ tt|dgd�t  d¡ƒ tt  t j|dd�¡|ƒ tt|ddgd�t  d¡ƒ t  d¡ dd¡}t j|ddd	�}ddgddgg}t||ƒ t j|ddgdggd	�}t||ƒ t j|ddd	�}ddgddgg}t||ƒ t j|dddggd	�}t||ƒ ttt j|t  	d
¡d� tt j
t|ddd� d S )NrR   rJ   r   )ÚprependrV   rj   rF   rH   )rs   rt  ©rQ   rQ   rQ   )rt  rs   )r4   r5   r   r   r[   rD  rl   r   rZ   r=   rv   ©r]   rÒ   Úresultrm  r:   r:   r;   Útest_prependö  s$    



zTestDiff.test_prependc                 C   sB  t  d¡}t|dd�}dddddg}t||ƒ t|dgd�}t||ƒ t|ddgd�}|dg }t||ƒ t  d¡ dd¡}t j|ddd�}dd	gdd
gg}t||ƒ t j|ddgdggd�}t||ƒ t j|ddd�}ddgdd
gg}t||ƒ t j|dddggd�}t||ƒ ttt j|t  d¡d� tt jt|ddd� d S )NrR   r   )ÚappendrJ   r	  rH   rF   )rs   ry  rV   rS   rP   ru  rQ   )ry  rs   )	r4   r5   r   r   rl   r   rZ   r=   rv   rv  r:   r:   r;   Útest_append  s,    








zTestDiff.test_appendN)rn   ro   rp   ra   rf  r–   rn  rq  r  rx  rz  r:   r:   r:   r;   rZ  Ÿ  s   rZ  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 )Ú
TestDeletec                 C   s,   t  d¡| _t  d¡ d¡ ddd¡| _d S )NrR   rH   rJ   )r4   r5   r^   r
  rl   Únd_arx   r:   r:   r;   Úsetup-  s    zTestDelete.setupc                 C   sˆ   t | j|ƒ}t | j|dd�}d| }tt|| j|f ƒ| j|d� t|dd d …df | jd|df ƒ}t|| jdd d …df |d� d S )NrJ   rr   zDelete failed for obj: %r)Úerr_msgr   )r   r^   r|  r   r,   )r]   ÚindicesZa_delZnd_a_delÚmsgÚxorr:   r:   r;   Ú_check_inverse_of_slicing1  s    ÿ$z$TestDelete._check_inverse_of_slicingc                 C   sV   dddddddg}dd	dd
g}|D ].}|D ]$}|D ]}t |||ƒ}|  |¡ q2q*q"d S )NéúÿÿÿrP   r   rJ   rH   rF   rR   rS   rV   rQ   )r  r‚  )r]   ZlimsZstepsri  ÚstopÚstepÚsr:   r:   r;   Útest_slices:  s    zTestDelete.test_slicesc              	   C   sú   |   t ddgddgg¡¡ t t¡� t| jdgƒ W 5 Q R X t t¡� t| jdgƒ W 5 Q R X |   ddddg¡ |   dddddg¡ t t¡� t| jdƒ W 5 Q R X t t¡� t| jdƒ W 5 Q R X t t¡� t| jdgd	 ƒ W 5 Q R X d S )
Nr   rJ   rH   rú   iœÿÿÿrV   TFrF   )	r‚  r4   r€   r  r  r  r   r^   rZ   rx   r:   r:   r;   Ú
test_fancyC  s    zTestDelete.test_fancyc                 C   s   |   d¡ |   d¡ d S )Nr   r	  )r‚  rx   r:   r:   r;   Útest_singleX  s    
zTestDelete.test_singlec              	   C   sX   t  d¡}t t j¡� t|g dd� W 5 Q R X t t¡� t|g dd� W 5 Q R X d S )NrJ   r   rr   r  )r4   r€   r  r  rv   r   r÷   rg   r:   r:   r;   r  \  s
    
zTestDelete.test_0dc                 C   s–   G dd„ dt jƒ}| j |¡}ttt|dƒ|ƒƒ ttt|g ƒ|ƒƒ ttt|ddgƒ|ƒƒ ttt|tddƒƒ|ƒƒ ttt|tddƒƒ|ƒƒ d S )Nc                   @   s   e Zd ZdS )z*TestDelete.test_subclass.<locals>.SubClassNrÁ   r:   r:   r:   r;   r  d  s   r  r   rJ   rH   rP   )r4   rÃ   r^   rÄ   r   r  r   r  r  r:   r:   r;   r  c  s    zTestDelete.test_subclassc                 C   sR   t  d¡jdddd�}t|tdd ƒdd�}t|jj|jjƒ t|jj|jjƒ d S )	Nr›   rH   rR   rž   rŸ   é<   rJ   rr   )	r4   r5   rl   r   r  r   r¡   r¢   r£   )r]   rU   rÜ   r:   r:   r;   Útest_array_order_preservem  s    z$TestDelete.test_array_order_preservec              	   C   sh   t  t¡�" t dddgt ddg¡¡ W 5 Q R X t  t¡�" t dddgtjg td�¡ W 5 Q R X d S )Nr   rJ   rH   r¨   r§   rÊ   )r  r  r  r4   r   r€   r  rx   r:   r:   r;   r   w  s    &zTestDelete.test_index_floatsN)rn   ro   rp   r}  r‚  r‡  rˆ  r‰  r  r  r‹  r   r:   r:   r:   r;   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ej dejejejejg¡dd„ ƒZej dejejejejg¡dd„ ƒZej dejejejejg¡dd„ ƒZej dejejejejg¡dd „ ƒZd!S )"ÚTestGradientc                 C   sf   ddgddgg}t  |¡}t  ddgddgg¡t  ddgddgg¡g}tt|ƒ|ƒ tt|ƒ|ƒ d S )NrJ   rQ   rF   r§   r©   rª   r¨   )r4   r€   r   r   ©r]   ÚvrÒ   Údxr:   r:   r;   ra   €  s    
ÿzTestGradient.test_basicc              	   C   sÌ   t  t  d¡¡}dddddg}t  d¡ dd¡}tt  d¡dƒ tt  d¡t  d¡ƒ tt  d¡|ƒ t|d	ƒ t|t  d	¡ƒ t|||ƒ t||d
ƒ t||dd� ttdt|t j	|gd
 dd�dƒ d S )NrR   r¨   r§   r¯   r*  ç      &@é   r©   ç      ø?rH   rJ   rr   z.*scalars or 1drV   )
r4   rD  r[   r5   rl   r   r€   r   rZ   Ústack)r]   r�  Z	dx_unevenÚf_2dr:   r:   r;   Ú	test_argsˆ  s"    
   ÿzTestGradient.test_argsc                 C   sÚ   t  d¡ dd¡}t  t  d¡¡}ttt||t  d¡ƒ ttt|dt  d¡ƒ ttt|t  d¡t  d¡ƒ ttt||ƒ ttt||dd� ttt||||ƒ ttt|dddƒ ttt|||dd� ttt|dddd� d S )Nr‘  rR   rH   rJ   rW   rr   )	r4   r5   rl   rD  r[   r   rZ   r   r÷   )r]   r”  rÒ   r:   r:   r;   Útest_badargs¡  s    zTestGradient.test_badargsc                 C   s^   t jdddddddgdd	�}t jd
ddddddgdd	�}tt|ƒ|ƒ t|jt  d¡kƒ d S )Nz
1910-08-16z
1910-08-11z
1910-08-10z
1910-08-12z
1910-10-12z
1910-12-12z
1912-12-12zdatetime64[D]rÊ   r(  rS   r   é   é=   iŒ  iÛ  ro  ©r4   r€   r   r   r   rµ   ©r]   rÒ   r�  r:   r:   r;   Útest_datetime64±  s      ÿýþzTestGradient.test_datetime64c                 C   s–   t jjddgddggddgddggd�}t|ƒd }tt|ƒt|ƒƒ t|j|jk	ƒ t j d¡}t jj	|d< t j|dd	� t
|jddd
ddgƒ d S )NrJ   rQ   rF   Frr  r   rR   rH   ©Ú
edge_orderT)r4   r   r€   r   r   rÅ   r   Z_maskr5   Úmaskedr   rs  )r]   rÒ   r`  Úx2r:   r:   r;   Útest_masked½  s    ÿzTestGradient.test_maskedc                 C   s  t  ddd¡}|d |d  }d|d  d|d   d|  }d|d  d|  d }t  t j||dd	�| d ¡}tt  |d
k ¡dkƒ t j d¡ t  t j d¡¡}d|d  d|d   d|  }d|d  d|  d }t  t j||dd	�| d ¡}tt  |d
k ¡dkƒ d S )Nr   rJ   r›   rH   rQ   rF   rj   ri   rœ  g¸…ëQ¸ž?T)	r4   ÚlinspaceÚabsr   r   r™   ÚrandomÚseedÚsort)r]   rÒ   r�  r·   Z
analyticalZ	num_errorr:   r:   r;   Útest_second_order_accurateÌ  s      z'TestGradient.test_second_order_accuratec                 C   s  t  ddddddg¡}t  |d¡| dd¡ }t  d	d
ddddg¡}t  d¡}t  ddddd
d	gd¡}t  ddddd
dgd¡}t  dddd
dd	gd¡}t  dddd
ddgd¡}d|fd|ffD ]ä\}}	t|dd|d�}
t|||d|d�}t|||d |d�}t|
|ƒ t||ƒ t|
d |	jƒ t|
d |	ƒ t|dd|d�}
t||d|d�}t	|
j
|j
kƒ t||	jƒ t|dd|d�}
t||d|d�}t	|
j
|j
kƒ t||	ƒ q¾d|fd|ffD ]Œ\}}	t|||d|d�}
t|||d |d�}t|
|ƒ t|
d |	jƒ t|
d |	ƒ t||d|d�}
t|
|	jƒ t||d|d�}
t|
|	ƒ �q´t|||ddd�}
t|||ddd�}t|
d |d ƒ t|
d |d ƒ t|
d |jƒ t|
d |ƒ t|||ddd�}
t|||ddd�}t|
d |d ƒ t|
d |d ƒ t|
d |jƒ t|
d |ƒ d S )Nr   r§   r©   r®   r¯   )rj   rJ   rV   rJ   rª   ç      à?r¨   r0  r°   r’  ç      @ç      à¿g333333û?ç      Ð?g      Ð¿rH   rW   )rs   r�  rX   )r4   r€   Ztilerl   r5   r   r   r	   r  r   r?   )r]   ÚfZx_unevenZx_evenZfdx_even_ord1Zfdx_even_ord2Zfdx_uneven_ord1Zfdx_uneven_ord2r�  Zexp_resÚres1Úres2Úres3r:   r:   r;   Útest_spacingà  st    
 ÿ ÿ

 ÿ ÿ
zTestGradient.test_spacingc                 C   s@  ddgddgg}t  |¡}t  ddgddgg¡t  ddgddgg¡g}tt|dd	�|d ƒ tt|dd	�|d ƒ tt|d
d	�|d ƒ tt|dd	�|d |d gƒ tt|d d	�|d |d gƒ tt|d d	�t|ƒƒ tt|dddd	�|d d |d d gƒ ttt|dddd	� tt jt|dd	� tt jt|dd	� d S )NrJ   rQ   rF   r§   r©   rª   r¨   r   rr   rV   rX   rH   rS   )r4   r€   r   r   r	   r   r÷   rv   r�  r:   r:   r;   Útest_specific_axes   s"    
ÿÿzTestGradient.test_specific_axesc                 C   s^   t jdddddddgdd	�}t jd
ddddddgdd	�}tt|ƒ|ƒ t|jt  d¡kƒ d S )Nr(  rS   r›   rè   r˜  iA  é,  ro  rÊ   rH   rk   r‘  éš   éw   iëÿÿÿr™  rš  r:   r:   r;   Útest_timedelta64:  s    þþzTestGradient.test_timedelta64c                 C   sF   t jt jt jfD ]0}t jdddg|d�}tt|ƒjt  |¡jƒ qd S )NrJ   rH   rQ   rÊ   )	r4   Úfloat16r³   r´   r€   r   r   rµ   r   )r]   ÚdtrÒ   r:   r:   r;   Útest_inexact_dtypesE  s    z TestGradient.test_inexact_dtypesc                 C   s–   t t d¡dd� t t d¡dd� ttt t d¡dd� ttt t d¡dd� ttt t d¡dd� ttt t d¡dd� ttt t d¡dd� d S )NrH   rJ   rœ  rQ   r   )r   r4   r5   r   rZ   rx   r:   r:   r;   Útest_valuesK  s    zTestGradient.test_valuesÚf_dtypec                 C   s8   t jdddddg|d�}t|ƒ}t|dgt|ƒ ƒ d S )NrR   rF   rQ   rH   rJ   rÊ   rV   ©r4   r€   r   r   rÝ   )r]   r¹  r«  Úgr:   r:   r;   Útest_f_decreasing_unsigned_intW  s    z+TestGradient.test_f_decreasing_unsigned_intc                 C   sR   t  |¡j}t  ddg¡}t jd|g|d�}t||ƒ}t||d d gd ƒ d S )NrJ   rQ   rV   rÊ   rH   )r4   Úiinforl  r€   r   r   )r]   r¹  ÚmaxintrÒ   r«  Údfdxr:   r:   r;   Útest_f_signed_int_big_jump^  s
    
z'TestGradient.test_f_signed_int_big_jumpÚx_dtypec                 C   sF   t jdddg|d�}t  dddg¡}t||ƒ}t|dgt|ƒ ƒ d S )NrQ   rH   rJ   rÊ   r   rF   rP   rº  )r]   rÁ  rÒ   r«  r¿  r:   r:   r;   Útest_x_decreasing_unsignedg  s    
z'TestGradient.test_x_decreasing_unsignedc                 C   sX   t  |¡j}t  |¡j}t jd|g|d�}t  |d dg¡}t||ƒ}t|ddgƒ d S )NrV   rÊ   rH   r   r§  )r4   r½  Úminrl  r€   r   r   )r]   rÁ  Zminintr¾  rÒ   r«  r¿  r:   r:   r;   Útest_x_signed_int_big_jumpo  s    
z'TestGradient.test_x_signed_int_big_jumpN)rn   ro   rp   ra   r•  r–  r›  r   r¦  r¯  r°  r´  r·  r¸  r  r%  r&  r4   rø   r?  rA  Zuint64r¼  rí   r>  r@  Zint64rÀ  rÂ  rÄ  r:   r:   r:   r;   rŒ  ~  s>   @ ÿ
 ÿ
 ÿ
 ÿrŒ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestAnglec                 C   s¸   dt  d¡d dt  d¡ d  dddddd	g}t|ƒ}t  d
¡t  d¡dt jd t jt j d t  d
¡ t jt  d
¡ g}t|dd�}t  |¡d t j }t||dƒ t||dƒ d S )Nù      ð?      @rH   r§   rì   rJ   rV   ù       €      ð¿ù      ð?      Ày      ð¿      @r©   r¨   r   T)ÚdegrP  r4  )r4   Úsqrtr   ÚarctanÚpir€   r
   )r]   rÒ   r·   ZyoÚzZzor:   r:   r;   ra   |  s,          ÿ    

 ýzTestAngle.test_basicc                 C   sŒ   t j ddt  d¡d d g¡}t jj|d< t j t  d¡dt  d¡g¡}t jj|d< t|ƒ}tt|ƒt|ƒƒ t|j	|j	ƒ t||ƒ d S )NrÆ  rJ   rH   ù      ð?      ð?r©   r   r¨   )
r4   r   r€   rÊ  rž  rË  r   r   rÅ   rs  )r]   rÒ   rm  r¹   r:   r:   r;   r  ‰  s     zTestAngle.test_subclassN)rn   ro   rp   ra   r  r:   r:   r:   r;   rÅ  z  s   rÅ  c                
   @   sÄ   e Zd Ze ddddddddg¡Ze e¡Ze e	¡Z
e e¡Zdd„ Zdd	„ Zd
d„ Zdd„ Zdd„ Zdd„ Zej de dddg¡e dddg¡e dddg¡g¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestTrimZerosr   rJ   rH   rQ   rF   c                    s   d}‡ fdd„|D ƒS )N)r^   r{   r‹   rñ   c                 3   s   | ]}t ˆ |ƒV  qd S r3   )Úgetattr)rÑ   Únamerx   r:   r;   Ú	<genexpr>�  s     z'TestTrimZeros.values.<locals>.<genexpr>r:   )r]   Z
attr_namesr:   rx   r;   rß   ›  s    zTestTrimZeros.valuesc                 C   s6   t jdd… }|  ¡ D ]}t|ƒ}t||| ƒ qd S )NrH   rV   ©r4   Ús_rß   r/   r   ©r]   ÚslcÚarrÚresr:   r:   r;   ra   Ÿ  s    zTestTrimZeros.test_basicc                 C   s:   t jd d… }|  ¡ D ]}t|dd�}t||| ƒ qd S )NrV   r{   ©ZtrimrÓ  rÕ  r:   r:   r;   Útest_leading_skip¥  s    zTestTrimZeros.test_leading_skipc                 C   s:   t jdd … }|  ¡ D ]}t|dd�}t||| ƒ qd S )NrH   rž   rÙ  rÓ  rÕ  r:   r:   r;   Útest_trailing_skip«  s    z TestTrimZeros.test_trailing_skipc                 C   sZ   |   ¡ D ]L}tj||jd�}t|dd�}t|ƒdks8t‚t|dd�}t|ƒdkst‚qd S )NrÊ   ÚBrÙ  r   r«  )rß   r4   Z
zeros_likerµ   r/   rÝ   ÚAssertionError)r]   Z_arrr×  r¬  r­  r:   r:   r;   Útest_all_zero±  s    zTestTrimZeros.test_all_zeroc                 C   s    t  d¡}t|ƒ}t||ƒ d S rõ   )r4   r=   r/   r   ©r]   r×  rØ  r:   r:   r;   Útest_size_zero»  s    
zTestTrimZeros.test_size_zeror×  l            l            l            c                 C   s(   t jdd… }t|ƒ}t||| ƒ d S )NrJ   rH   )r4   rÔ  r/   r   )r]   r×  rÖ  rØ  r:   r:   r;   Útest_overflowÀ  s    zTestTrimZeros.test_overflowc                 C   s&   t  d dd g¡}t|ƒ}t||ƒ d S ©NrJ   )r4   r€   r/   r   rß  r:   r:   r;   Útest_no_trimË  s    zTestTrimZeros.test_no_trimc                 C   s    t | j ¡ ƒ}t|tƒst‚d S r3   )r/   r^   Útolistr  rj  rÝ  )r]   rØ  r:   r:   r;   Útest_list_to_listÑ  s    zTestTrimZeros.test_list_to_listN)rn   ro   rp   r4   r€   r^   r²   r  r{   Úcomplexr‹   Úobjectrñ   rß   ra   rÚ  rÛ  rÞ  rà  r  r%  r&  rá  rã  rå  r:   r:   r:   r;   rÏ  ”  s(   



þþ
rÏ  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú
TestExtinsc              	   C   s>   t  dddddddg¡}t|dk|ƒ}t|dddddgƒ d S )NrJ   rQ   rH   )r4   r€   r   r   rz   r:   r:   r;   ra   ×  s    zTestExtins.test_basicc              	      s  t ttdddgddgddgƒ t dddddd	d
g¡‰ tˆ dddddddgdddgƒ tˆ ddddddd
gƒ tˆ t d
¡g ƒ tˆ t dd	¡ƒ tˆ dddddddgd	dgƒ tˆ d	dddd	ddgƒ tt	d‡ fdd„ƒ t ddg¡‰ tˆ ddgdƒ tˆ ddgƒ d S )NrJ   rH   rQ   TFr   rF   rR   ri   rk   rj   rØ   z!Cannot insert from an empty arrayc                	      s   t ˆ dddddddgg ƒS rŽ   )r)   r:   ©r^   r:   r;   Ú<lambda>ë  ó    z'TestExtins.test_place.<locals>.<lambda>Z12Z34Ú9)
r   r÷   r)   r4   r€   r   r=   r5   r   rZ   rx   r:   ré  r;   Ú
test_placeÜ  s     
ÿzTestExtins.test_placec                 C   sH   t dƒ}|dk}| ¡ }t||ƒ}t||dƒ t|||ƒ t||ƒ d S )Nr›   r§  r   )r   rœ   r   r)   r   )r]   r^   rs  Úacr‹   r:   r:   r;   Ú	test_bothò  s    
zTestExtins.test_bothN)rn   ro   rp   ra   rí  rï  r:   r:   r:   r;   rè  Õ  s   rè  r¨   c                 C   s   |t  | ¡ S r3   ©ÚmathÚfloor©rÒ   r·   r:   r:   r;   Ú_foo1þ  s    rô  rª   c                 C   s   |t  | ¡ | S r3   rð  )rÒ   r·   rÍ  r:   r:   r;   Ú_foo2  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!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d9d:„ Zd;d<„ Z d=d>„ Z!d?d@„ Z"dAdB„ Z#dCdD„ Z$dEdF„ Z%dGS )HÚTestVectorizec                 C   s@   dd„ }t |ƒ}|ddddgdddd	gƒ}t|dddd
gƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   ©r^   r{   r:   r:   r;   Úaddsubtract	  s    z.TestVectorize.test_simple.<locals>.addsubtractr   rQ   rj   rØ   rJ   rR   rk   rH   ©r2   r   ©r]   rø  r«  r  r:   r:   r;   Útest_simple  s    zTestVectorize.test_simplec                 C   s8   dd„ }t |ƒ}|ddddgdƒ}t|ddd	d
gƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   r÷  r:   r:   r;   rø    s    z.TestVectorize.test_scalar.<locals>.addsubtractr   rQ   rj   rØ   rR   ri   rJ   rF   rù  rú  r:   r:   r;   Útest_scalar  s    zTestVectorize.test_scalarc                 C   s0   t  ddd¡}tdd„ ƒ}||ƒ}t||ƒ d S )NrS   rH   i'  c                 S   s   | S r3   r:   rg  r:   r:   r;   rê     rë  z*TestVectorize.test_large.<locals>.<lambda>)r4   r¡  r2   r   )r]   rÒ   r«  r·   r:   r:   r;   Ú
test_large  s    zTestVectorize.test_largec                 C   sR   t tjƒ}t ddtj tjdtj dtj g¡}||ƒ}t |¡}t||ƒ d S )Nr   r§  r’  rH   )r2   rñ  Úcosr4   r€   rÌ  r
   )r]   r«  ÚargsÚr1Úr2r:   r:   r;   Ú
test_ufunc$  s
    
(
zTestVectorize.test_ufuncc                 C   sl   ddd„}t |ƒ}t dddg¡}||ƒ}t dddg¡}t||ƒ ||dƒ}t dddg¡}t||ƒ d S )	NrJ   c                 S   s   | | S r3   r:   r÷  r:   r:   r;   r  -  s    z(TestVectorize.test_keywords.<locals>.foorH   rQ   rF   rR   )rJ   ©r2   r4   r€   r   ©r]   r  r«  rÿ  r   r  r:   r:   r;   Útest_keywords+  s    


zTestVectorize.test_keywordsc                 C   s:   t ttgd�}|t d¡dƒ}|t d¡ƒ}t||ƒ d S ©N©Úotypesr©   r¨   ©r2   rô  r  r4   r5   r   ©r]   r«  r   r  r:   r:   r;   Ú test_keywords_with_otypes_order19  s    z.TestVectorize.test_keywords_with_otypes_order1c                 C   s:   t ttgd�}|t d¡ƒ}|t d¡dƒ}t||ƒ d S r  r	  r
  r:   r:   r;   Ú test_keywords_with_otypes_order2C  s    z.TestVectorize.test_keywords_with_otypes_order2c                 C   sT   t ttgd�}|t d¡ƒ}|t d¡dd�}|t d¡ƒ}t||ƒ t||ƒ d S )Nr  r©   r¨   ©r·   r	  ©r]   r«  r   r  Zr3r:   r:   r;   Ú test_keywords_with_otypes_order3N  s    
z.TestVectorize.test_keywords_with_otypes_order3c                 C   sd   t ttgd�}|ddd�}|ddd�}|dƒ}t|tddd�ƒ t|tddd�ƒ t|tdƒƒ d S )Nr  çÍÌÌÌÌÌ$@rú   )rÍ  rV   r  ©r2   rõ  r  r   r  r:   r:   r;   Ú+test_keywords_with_otypes_several_kwd_args1Z  s    z9TestVectorize.test_keywords_with_otypes_several_kwd_args1c                 C   sR   t ttgd�}|dddd�}|dddƒ}t|tdddd�ƒ t|tdddƒƒ d S )	Nr  rú   r  rV   )rÍ  rÒ   r·   rJ   rH   rQ   r  r
  r:   r:   r;   Ú+test_keywords_with_otypes_several_kwd_args2g  s
    z9TestVectorize.test_keywords_with_otypes_several_kwd_args2c                 C   s6   dd l }zt|jƒ W n tk
r0   tƒ ‚Y nX d S rõ   )r£  r2   Ú	randrangeÚ	ExceptionrÝ  )r]   r£  r:   r:   r;   Útest_keywords_no_func_coder  s
    z(TestVectorize.test_keywords_no_func_codec                 C   s†   ddd„}t |ƒ}t dddg¡}||d�}t dddg¡}t||ƒ |d|d�}t||ƒ ||dd	�}t ddd
g¡}t||ƒ d S )NrJ   c                 S   s   | | S r3   r:   r÷  r:   r:   r;   r    s    z5TestVectorize.test_keywords2_ticket_2100.<locals>.foorH   rQ   ré  rF   )r{   r^   ©r{   rR   )rJ   r  r  r:   r:   r;   Útest_keywords2_ticket_2100|  s    



z(TestVectorize.test_keywords2_ticket_2100c                 C   sx   dd„ }t j|ddgd�}ddg}t||ddgdd	dgd
�ƒ t||ddgdd	dgd�ƒ t||ddgdd	dgƒƒ d S )Nc                 S   s.   t |ƒ}| d¡}|r*||  | d¡ }q|S rõ   )rj  Úpop)rÒ   ÚpÚ_prØ  r:   r:   r;   Ú	mypolyval�  s
    
z;TestVectorize.test_keywords3_ticket_2100.<locals>.mypolyvalr  rJ   )ÚexcludedrQ   rj   r   rH   )rÒ   r  )r  )r4   r2   r   )r]   r  ZvpolyvalZansr:   r:   r;   Útest_keywords3_ticket_2100�  s    z(TestVectorize.test_keywords3_ticket_2100c                 C   s.   t dd„ ƒ}t|ddgddgd�ddgƒ d S )	Nc                  [   s   d}| D ]}|| | 9 }q|S ©Nr¨   r:   )ÚkwrØ  Z_kr:   r:   r;   r«  ž  s    z3TestVectorize.test_keywords4_ticket_2100.<locals>.frJ   rH   rQ   rF   r÷  ri   rù  ©r]   r«  r:   r:   r;   Útest_keywords4_ticket_2100œ  s    
z(TestVectorize.test_keywords4_ticket_2100c                 C   s,   t dd„ ƒ}t|ddgddgƒddgƒ d S )Nc                  W   s
   t  | ¡S r3   )r4   rT  )rŽ  r:   r:   r;   r«  ©  s    z3TestVectorize.test_keywords5_ticket_2100.<locals>.frJ   rH   rQ   rF   ri   rù  r!  r:   r:   r;   Útest_keywords5_ticket_2100§  s    
z(TestVectorize.test_keywords5_ticket_2100c                 C   s    dd„ }t |ƒ}t|ƒ dƒ d S )Nc                   S   s   dS râ  r:   r:   r:   r:   r;   r  °  s    z5TestVectorize.test_coverage1_ticket_2100.<locals>.foorJ   rù  ©r]   r  r«  r:   r:   r;   Útest_coverage1_ticket_2100¯  s    z(TestVectorize.test_coverage1_ticket_2100c                 C   s>   dd„ }t |ƒ}t|j|jƒ d}t ||d�}t|j|ƒ d S )Nc                 S   s   | S )zOriginal documentationr:   rg  r:   r:   r;   r  ·  s    z3TestVectorize.test_assigning_docstring.<locals>.foozProvided documentation)Údoc)r2   r   Ú__doc__)r]   r  r«  r&  r:   r:   r;   Útest_assigning_docstring¶  s    z&TestVectorize.test_assigning_docstringc                 C   s`   G dd„ dƒ}t t|ƒ jƒt d¡ƒt d¡d ƒ t t|jƒ|ƒ t d¡ƒt d¡d ƒ d S )Nc                   @   s   e Zd ZdZdd„ ZdS )z9TestVectorize.test_UnboundMethod_ticket_1156.<locals>.FoorH   c                 S   s
   || j  S r3   r  rg   r:   r:   r;   r  Ç  s    z=TestVectorize.test_UnboundMethod_ticket_1156.<locals>.Foo.barN)rn   ro   rp   r{   r  r:   r:   r:   r;   ÚFooÄ  s   r)  rØ   rH   )r   r2   r  r4   r5   )r]   r)  r:   r:   r;   Útest_UnboundMethod_ticket_1156Â  s    ÿÿz,TestVectorize.test_UnboundMethod_ticket_1156c                 C   sl   t dd„ ƒ}|t d¡ƒ}|t dd¡ƒ}t dd„ ƒ}|t dd¡ƒ}|t d¡ƒ}t||ƒ t||ƒ d S )Nc                 S   s   | S r3   r:   rg  r:   r:   r;   rê  Ñ  rë  z@TestVectorize.test_execution_order_ticket_1487.<locals>.<lambda>rQ   r_  c                 S   s   | S r3   r:   rg  r:   r:   r;   rê  Ô  rë  )r2   r4   r5   r   )r]   Úf1Zres1aZres1bÚf2Zres2bZres2ar:   r:   r;   Ú test_execution_order_ticket_1487Ï  s    
z.TestVectorize.test_execution_order_ticket_1487c                 C   s$   t  dd„ ¡}d}t|||ƒƒ d S )Nc                 S   s   | S r3   r:   rg  r:   r:   r;   rê  Ü  rë  z7TestVectorize.test_string_ticket_1892.<locals>.<lambda>Zd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789)r4   r2   r   )r]   r«  r†  r:   r:   r;   Útest_string_ticket_1892Ú  s    z%TestVectorize.test_string_ticket_1892c                    sN   dg‰ t ‡ fdd„ƒ}d|_t d¡}t||ƒ|| ƒ tˆ d t|ƒƒ d S )Nr   c                    s   ˆ d  d7  < | d S )Nr   rJ   rH   r:   rg  ©Z_callsr:   r;   r«  ä  s    z#TestVectorize.test_cache.<locals>.fTrR   )r2   Úcacher4   r5   r   r   rÝ   ©r]   r«  rÒ   r:   r/  r;   Ú
test_cacheà  s    
zTestVectorize.test_cachec                 C   s0   t  dd„ ¡}d|_t  d¡}t||ƒ|ƒ d S )Nc                 S   s   | S r3   r:   rg  r:   r:   r;   rê  ï  rë  z+TestVectorize.test_otypes.<locals>.<lambda>r‡   rR   )r4   r2   r  r5   r   r1  r:   r:   r;   Útest_otypesî  s    
zTestVectorize.test_otypesc              	   C   sŽ  t t d¡dgdgfƒ t t d¡dgdgfƒ t t d¡ddgdgfƒ t t d¡dgdgfƒ t t d	¡dgddgfƒ t t d
¡dddgdgfƒ t t d¡dgdgfƒ t t d¡dgdgfƒ t t d¡ddgdgfƒ t t d¡dgdgfƒ t t d¡dgddgfƒ t t d¡dddgdgfƒ ttƒ� t d¡ W 5 Q R X ttƒ� t d¡ W 5 Q R X ttƒ� t d¡ W 5 Q R X d S )Nz(x)->()rg  r:   z	(x,y)->()ró  z(x),(y)->()r  z(x)->(y)z(x)->(y),()z(),(a,b,c),(d)->(d,e))r^   r{   r‹   )rñ   )rñ   Úez(x )->()z( x , y )->(  )z(x),( y) ->()z(  x)-> (y )  z (x)->( y),( )z*(  ), ( a,  b,c )  ,(  d)   ->   (d  ,  e)z
(x)(y)->()z	(x),(y)->z
((x))->(x))r   ÚnfbZ_parse_gufunc_signaturer   rZ   rx   r:   r:   r;   Útest_parse_gufunc_signatureô  sP    

ÿ
ÿ

ÿ
ÿ
ÿ

ÿ
ÿ

ÿ
ÿÿþ


z)TestVectorize.test_parse_gufunc_signaturec                 C   sD   dd„ }t |dd�}|ddddgd	dd
dgƒ}t|d	dd	dgƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   r÷  r:   r:   r;   rø    s    z8TestVectorize.test_signature_simple.<locals>.addsubtractz	(),()->()©Ú	signaturer   rQ   rj   rØ   rJ   rR   rk   rH   rù  rú  r:   r:   r;   Útest_signature_simple  s    z#TestVectorize.test_signature_simplec                 C   s:   dd„ }t |dd�}|ddgddggƒ}t|ddgƒ d S )	Nc                 S   s   |   ¡ S r3   ©r«   ré  r:   r:   r;   r«   "  s    z4TestVectorize.test_signature_mean_last.<locals>.meanz(n)->()r7  rJ   rQ   rH   rF   rù  )r]   r«   r«  r  r:   r:   r;   Útest_signature_mean_last!  s    z&TestVectorize.test_signature_mean_lastc                 C   sB   dd„ }t |dd�}|ddgddggƒ}t|d	dgd	dggƒ d S )
Nc                 S   s   | |   ¡  S r3   r:  ré  r:   r:   r;   Úcenter*  s    z3TestVectorize.test_signature_center.<locals>.centerú(n)->(n)r7  rJ   rQ   rH   rF   rV   rù  )r]   r<  r«  r  r:   r:   r;   Útest_signature_center)  s    z#TestVectorize.test_signature_centerc                 C   sd   t dd„ dd�}|dddgƒ}tt|tƒo4t|ƒdkƒ t|d dddgƒ t|d dddgƒ d S )	Nc                 S   s   | | fS r3   r:   rg  r:   r:   r;   rê  2  rë  z:TestVectorize.test_signature_two_outputs.<locals>.<lambda>ú	()->(),()r7  rJ   rH   rQ   r   )r2   r   r  ÚtuplerÝ   r   ©r]   r«  r  r:   r:   r;   Útest_signature_two_outputs1  s
    z(TestVectorize.test_signature_two_outputsc                 C   s  t tjdd�}|ddgdddgƒ}t|dddgdddggƒ |ddgggdddgƒ}t|dddgdddggggƒ |ddgddggdddgƒ}t|dddgdddggdddgdddgggƒ |ddgdddgdddggƒ}t|dddgdddggdddgdddgggƒ d S )	Nz(a),(b)->(a,b)r7  rJ   rH   rQ   rF   rj   r   )r2   r4   r7   r   rA  r:   r:   r;   Útest_signature_outer8  s    ÿÿz"TestVectorize.test_signature_outerc                 C   s^   t dd„ dd�}|dddgƒ}t|ddgƒ |dddgdddggƒ}t|ddgddggƒ d S )	Nc                 S   s   | d d… S ©NrV   r:   rg  r:   r:   r;   rê  I  rë  z<TestVectorize.test_signature_computed_size.<locals>.<lambda>z(n)->(m)r7  rJ   rH   rQ   rF   rù  rA  r:   r:   r;   Útest_signature_computed_sizeH  s
    z*TestVectorize.test_signature_computed_sizec                 C   sV   ddd„}t |ddhd�}t|dddgƒddd	gƒ t|dddgd
d�dddgƒ d S )NrJ   c                 S   s   | | S r3   r:   r÷  r:   r:   r;   r  R  s    z2TestVectorize.test_signature_excluded.<locals>.fooú()->()r{   )r8  r  rH   rQ   rF   r   r  )rJ   rù  r$  r:   r:   r;   Útest_signature_excludedP  s    
z%TestVectorize.test_signature_excludedc                 C   sH   t dd„ ddgd�}|dddgƒ}t|jt d¡ƒ t|dddgƒ d S )	Nc                 S   s   | S r3   r:   rg  r:   r:   r;   rê  Z  rë  z5TestVectorize.test_signature_otypes.<locals>.<lambda>r=  r´   ©r8  r  rJ   rH   rQ   )r2   r   rµ   r4   r   rA  r:   r:   r;   Útest_signature_otypesY  s    z#TestVectorize.test_signature_otypesc              	   C   s¬   t tjdd�}ttdƒ� |ddgƒ W 5 Q R X ttdƒ� |ddƒ W 5 Q R X ttdƒ� |ddgdddgƒ W 5 Q R X t tjd	d�}ttdƒ� |ddƒ W 5 Q R X d S )
Nz(n),(n)->(n)r7  zwrong number of positionalrJ   rH   zdoes not have enough dimensionsú$inconsistent size for core dimensionrQ   rF  )r2   Úoperatorr6   r   r÷   rZ   r!  r:   r:   r;   Útest_signature_invalid_inputs_  s      ÿ ÿz+TestVectorize.test_signature_invalid_inputsc              	   C   s˜   t dd„ dd�}ttdƒ� |dddgƒ W 5 Q R X t d	d„ d
d�}ttdƒ� |dƒ W 5 Q R X t dd„ dd�}ttdƒ� |ddgƒ W 5 Q R X d S )Nc                 S   s   | d d… S rD  r:   rg  r:   r:   r;   rê  p  rë  z>TestVectorize.test_signature_invalid_outputs.<locals>.<lambda>r=  r7  rJ  rJ   rH   rQ   c                 S   s   | S r3   r:   rg  r:   r:   r;   rê  u  rë  r?  zwrong number of outputsc                 S   s   | | fS r3   r:   rg  r:   r:   r;   rê  y  rë  rF  )r2   r   rZ   r!  r:   r:   r;   Útest_signature_invalid_outputsn  s     ÿz,TestVectorize.test_signature_invalid_outputsc              	   C   s   t  dd„ ¡}t jddgtd�}ttdƒ� ||ƒ W 5 Q R X d|_t||ƒ|ƒ t jdd„ d	d
�}ttdƒ� ||ƒ W 5 Q R X t jdd„ d	dd�}t||ƒ|ƒ t jdd„ ddd�}t||ƒ|ƒ t jdd„ dd
�}t||jƒ|jƒ t jdd„ ddd�}ttdƒ� ||ƒ W 5 Q R X d S )Nc                 S   s   | S r3   r:   rg  r:   r:   r;   rê    rë  z5TestVectorize.test_size_zero_output.<locals>.<lambda>r   rR   rÊ   r  r‡   c                 S   s   | S r3   r:   rg  r:   r:   r;   rê  ‡  rë  rF  r7  c                 S   s   | S r3   r:   rg  r:   r:   r;   rê  ‹  rë  rH  c                 S   s   | S r3   r:   rg  r:   r:   r;   rê  Ž  rë  r=  c                 S   s   | S r3   r:   rg  r:   r:   r;   rê  ‘  rë  c                 S   s   | gS r3   r:   rg  r:   r:   r;   rê  ”  rë  z()->(n)znew output dimensions)	r4   r2   r=   Úintr   rZ   r  r   r  r1  r:   r:   r;   Útest_size_zero_output}  s$    z#TestVectorize.test_size_zero_outputc                 C   sä   G dd„ dt jƒ}t  dddgdddgdddgg¡ |¡}t  dddgddd	gd
ddgg¡ |¡}t jt jdd�}|||ƒ}tt|ƒ|ƒ t|dddgdd	dgd
ddggƒ t  dd„ ¡}|||ƒ}tt|ƒ|ƒ t||| ƒ d S )Nc                   @   s   e Zd ZdS )z/TestVectorize.test_subclasses.<locals>.subclassNrÁ   r:   r:   r:   r;   rÂ   ™  s   rÂ   r¨   rª   r§   r©   r®   r¯   r°   r0  r+  r*  z(m,m),(m)->(m)r7  c                 S   s   | | S r3   r:   ró  r:   r:   r;   rê  §  rë  z/TestVectorize.test_subclasses.<locals>.<lambda>)r4   rÃ   r€   rÄ   r2   Úmatmulr   rÅ   )r]   rÂ   rÜ   rŽ  Zmatvecr  Zmultr:   r:   r;   rÆ   ˜  s     þþ(
"
zTestVectorize.test_subclassesN)&rn   ro   rp   rû  rü  rý  r  r  r  r  r  r  r  r  r  r  r"  r#  r%  r(  r*  r-  r.  r2  r3  r6  r9  r;  r>  rB  rC  rE  rG  rI  rL  rM  rO  rÆ   r:   r:   r:   r;   rö    sF   

"	rö  c                   @   sL   e Zd ZG dd„ dƒZejje dd�ej ddej	fdg¡dd	„ ƒƒZ
d
S )Ú	TestLeaksc                   @   s$   e Zd ZdZdd„ Zedd„ ƒZdS )zTestLeaks.Ar  c                 G   s   dS rõ   r:   ©r]   rÿ  r:   r:   r;   Úbound±  s    zTestLeaks.A.boundc                  G   s   dS rõ   r:   )rÿ  r:   r:   r;   Úunbound´  s    zTestLeaks.A.unboundN)rn   ro   rp   ÚitersrS  ÚstaticmethodrT  r:   r:   r:   r;   ÚA®  s   rW  úPython lacks refcounts©Úreasonz
name, incrrS  )rT  r   c           	      C   s¸   dd l }t| j|ƒ}| ¡  zŒt |¡}t| jjƒD ]2}|  ¡ }t	 
t||ƒdd¡|_| t	 d¡¡}q4d }tt |¡|| ƒ tdƒD ]}| ¡  qˆtt |¡|ƒ W 5 | ¡  X d S )Nr   rJ   r›   rR   )ÚgcrÐ  rW  ÚdisableÚenableÚsysÚgetrefcountr\   rU  r4   Z
frompyfuncr«  r5   r   Zcollect)	r]   rÑ  Úincrr[  ZA_funcÚrefcountr‡   r^   r`  r:   r:   r;   Útest_frompyfunc_leaks¸  s    

zTestLeaks.test_frompyfunc_leaksN)rn   ro   rp   rW  r  r%  Úskipifr   r&  rU  rb  r:   r:   r:   r;   rQ  ­  s   
þrQ  c                   @   sz   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ejjdd�dd„ ƒZdS )ÚTestDigitizec                 C   s2   t  dd¡}t  dd¡}tt||ƒt  d¡ƒ d S )Nrƒ  rR   r(  r4  ©r4   r5   r   r   ©r]   rÒ   Úbinsr:   r:   r;   Útest_forward×  s    zTestDigitize.test_forwardc                 C   s6   t  ddd¡}t  ddd¡}tt||ƒt  d¡ƒ d S )NrR   rƒ  rV   r(  r4  re  rf  r:   r:   r;   Útest_reverseÜ  s    zTestDigitize.test_reversec                 C   s:   t dƒ}t | ¡ | ¡ d¡}tt t||ƒdk¡ƒ d S )Nr›   r   ©r   r4   r¡  rÃ  rl  r   r™   r   )r]   rÒ   Úbinr:   r:   r;   Útest_randomá  s    zTestDigitize.test_randomc                 C   sf   dddddddg}dddg}dddd	dd	dg}t t||ƒ|ƒ dddddd	dg}t t||d
ƒ|ƒ d S )NrJ   rR   rF   r›   ri   r4  r   rH   rQ   T)r   r   )r]   rÒ   rg  Zdefault_answerZright_answerr:   r:   r;   Útest_right_basicæ  s    
zTestDigitize.test_right_basicc                 C   s4   t  dd¡}t  dd¡}tt||dƒt  d¡ƒ d S )Nrƒ  rR   rF   Tr4  re  rf  r:   r:   r;   Útest_right_openî  s    zTestDigitize.test_right_openc                 C   s8   t  ddd¡}t  ddd¡}tt||dƒt  d¡ƒ d S )NrR   rƒ  rV   rF   Tr4  re  rf  r:   r:   r;   Útest_right_open_reverseó  s    z$TestDigitize.test_right_open_reversec                 C   s<   t dƒ}t | ¡ | ¡ d¡}tt t||dƒdk¡ƒ d S )Nr›   Trj  rf  r:   r:   r;   Útest_right_open_randomø  s    z#TestDigitize.test_right_open_randomc                 C   s   ddddg}dddg}t t||dƒddddgƒ t t||dƒddddgƒ dddg}t t||dƒddddgƒ t t||dƒddddgƒ ddddg}t t||dƒddddgƒ t t||dƒddddgƒ ddddg}ttt||ƒ ddddg}ttt||ƒ d S )	NrV   r   rJ   rH   FrQ   TrF   )r   r   r   rZ   rf  r:   r:   r;   Útest_monotonicý  s    

zTestDigitize.test_monotonicc                 C   s>   dddg}dddg}t tt||ƒ || }}t tt||ƒ d S )NrJ   rH   y      @      ð?rQ   )r   r÷   r   rf  r:   r:   r;   Útest_casting_error  s
    


zTestDigitize.test_casting_errorc                 C   sh   G dd„ dt jƒ}t  d¡ |¡}t  dd¡ |¡}ttt||dƒ|ƒ ƒ ttt||dƒ|ƒ ƒ d S )Nc                   @   s   e Zd ZdS )z(TestDigitize.test_return_type.<locals>.ANrÁ   r:   r:   r:   r;   rW    s   rW  rR   rJ   rQ   FT)r4   rÃ   r5   rÄ   r   r  r   )r]   rW  r^   r{   r:   r:   r;   Útest_return_type  s
    zTestDigitize.test_return_typec                 C   s&   d}t t ||d |d g¡dƒ d S ©Nl          rJ   ©r   r4   r   r  r:   r:   r;   Útest_large_integers_increasing  s    z+TestDigitize.test_large_integers_increasingz8gh-11022: np.core.multiarray._monoticity loses precisionrY  c                 C   s&   d}t t ||d |d g¡dƒ d S rt  ru  r  r:   r:   r;   Útest_large_integers_decreasing"  s    z+TestDigitize.test_large_integers_decreasingN)rn   ro   rp   rh  ri  rl  rm  rn  ro  rp  rq  rr  rs  rv  r  r%  Úxfailrw  r:   r:   r:   r;   rd  Õ  s   	ÿrd  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestUnwrapc                 C   sH   t tdddtj  gƒddgƒ tt tttdƒd ƒƒtjk ¡ƒ d S )NrJ   rH   r›   rú   )r   r0   r4   rÌ  r   r™   r   r   rx   r:   r:   r;   rû  ,  s     zTestUnwrap.test_simplec                 C   sî   t tddgdd�ddgƒ tt tttdƒd dd�ƒdk ¡ƒ t dd	d
ddg¡}t |d¡}t t|dd�|ƒ t dd	d
dddg¡}t |d¡}t|dd�}t |dd	d
dddgƒ t|ddd�}t |dd	d
dddgƒ |j	|j	ksêt
‚d S )NrJ   i  éÿ   ©ÚperiodrH   r›   éè  r   éK   é–   éá   r±  i®  éú   rP  éŒ   )r|  Zdiscont)r   r0   r   r4   r™   r   r   r€   Úmodrµ   rÝ  )r]   Z
simple_seqZwrap_seqZ
uneven_seqZwrap_unevenZ
no_discontZ
sm_discontr:   r:   r;   Útest_period2  s    &zTestUnwrap.test_periodN)rn   ro   rp   rû  r„  r:   r:   r:   r;   ry  *  s   ry  rµ   ÚOÚ
AllIntegerÚFloatÚMrJ   r›   c                   @   sf   e Zd Zeeddœdd„Zeeddœdd„Zeeddœdd„Zeeddœd	d
„Zeeddœdd„Z	dS )ÚTestFilterwindowsN)rµ   rˆ  Úreturnc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÊ   r:   r…  rJ   r   rr   ç      @rF   )r4   r€   r!   r´   r¶   rµ   rÝ  r   r   r   r[   r	   r±   ©r]   rµ   rˆ  Zscalarr¸   Z	ref_dtyper:   r:   r;   Útest_hanningK  s    zTestFilterwindows.test_hanningc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÊ   r:   r…  rJ   r   rr   gÃõ(\�Â@rF   )r4   r€   r    r´   r¶   rµ   rÝ  r   r   r   r[   r	   r±   rŒ  r:   r:   r;   Útest_hamming`  s    zTestFilterwindows.test_hammingc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÊ   r:   r…  rJ   r   rr   gž^)ËÇ@rF   )r4   r€   r   r´   r¶   rµ   rÝ  r   r   r   r[   r	   r±   rŒ  r:   r:   r;   Útest_bartlettu  s    zTestFilterwindows.test_bartlettc                 C   s¤   t j||d�d }t|ƒ}|dkr*t j}nt  |jt j¡}|j|ksHt‚t|t|ƒƒ |dk rpt	|t  g ¡ƒ n0|dkrŠt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÊ   r:   r…  rJ   r   rr   g=
×£p=@rF   )r4   r€   r   r´   r¶   rµ   rÝ  r   r   r   r[   r	   r±   rŒ  r:   r:   r;   Útest_blackmanŠ  s    zTestFilterwindows.test_blackmanc                 C   s¦   t j||d�d }t|dƒ}|dkr,t j}nt  |jt j¡}|j|ksJt‚t|t|ƒƒ |dk rrt	|t  g ¡ƒ n0|dkrŒt	|t  
d¡ƒ ntt j|dd�ddƒ d S )	NrÊ   r:   r   r…  rJ   rr   r›   rã   )r4   r€   r%   r´   r¶   rµ   rÝ  r   r   r   r[   r	   r±   rŒ  r:   r:   r;   Útest_kaiserŸ  s    
zTestFilterwindows.test_kaiser)
rn   ro   rp   ÚstrrN  r�  rŽ  r�  r�  r‘  r:   r:   r:   r;   r‰  E  s
   r‰  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestTrapzc                 C   sH   t  ddd¡}tt  d|d  ¡t  dt j ¡ dd�}t|ddƒ d S )	Néöÿÿÿr›   r_  r©  rH   )r�  rJ   rk   )r4   r5   r.   re  rÊ  rÌ  r	   )r]   rÒ   r  r:   r:   r;   rû  ·  s    *zTestTrapz.test_simplec                 C   s&  t  ddd¡}t  ddd¡}t  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 d …d d f |d d d …d f  |d d d d …f  }||d d …d d f  jdd�}||d d d …d f  jdd�}	||d d d d …f  jdd�}
t||d d …d d f dd	�}t||ƒ t||d d d …d f dd	�}t||	ƒ t||d d d d …f dd	�}t||
ƒ t||dd	�}t||ƒ t||dd	�}t||	ƒ t||dd	�}t||
ƒ d S )
Nr   rJ   rQ   rH   ri   rT   rV   rr   )rÒ   rs   )r4   r¡  Z	ones_liker±   r.   r	   )r]   rÒ   r·   rÍ  ZwxZwyZwzÚqZqxZqyZqzr  r:   r:   r;   Ú	test_ndim½  s8    6




zTestTrapz.test_ndimc                 C   s‚   t  d¡}|| }|dk}t jj||d�}d}tt||ƒ|ƒ t jj||d�}tt||ƒ|ƒ t jj||d�}tt||ƒ|ƒ d S )NrR   rH   rr  g      *@)r4   r5   r   r€   r	   r.   )r]   rÒ   r·   rs  Zymr  Zxmr:   r:   r;   r   â  s    
zTestTrapz.test_maskedN)rn   ro   rp   rû  r–  r   r:   r:   r:   r;   r“  µ  s   %r“  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestSincc                 C   s6   t tdƒdkƒ tt ddd¡ƒ}t|t|ƒdƒ d S )Nr   rJ   rV   rú   rk   )r   r-   r4   r¡  r
   r   ©r]   r¸   r:   r:   r;   rû  õ  s    zTestSinc.test_simplec                 C   sF   ddg}t t |¡ƒ}t t|ƒƒ}t t|ƒƒ}t||ƒ t||ƒ d S )Nr   r§  )r-   r4   r€   rj  r@  r   )r]   rÒ   r‘   r’   r“   r:   r:   r;   Útest_array_likeû  s    
zTestSinc.test_array_likeN)rn   ro   rp   rû  r™  r:   r:   r:   r;   r—  ó  s   r—  c                   @   s   e Zd Zdd„ ZdS )Ú
TestUniquec                 C   sÈ   t  dddddddddg	¡}tt  t|ƒdddddgk¡ƒ ttt  dddddg¡ƒt  dg¡kƒ dddd	ddg}tt  t|ƒd	dddgk¡ƒ t  d
dddd
g¡}tt  t|ƒddd
dgk¡ƒ d S )NrF   rQ   rH   rJ   r   ZwidgetZhamr  r  y      @      @rÎ  y      ð?      $@r›   )r4   r€   r   r™   r1   r  r:   r:   r;   rû    s     (zTestUnique.test_simpleN©rn   ro   rp   rû  r:   r:   r:   r;   rš    s   rš  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestCheckFinitec                 C   sR   dddg}ddt jg}ddt jg}t j |¡ ttt jj|ƒ ttt jj|ƒ d S )NrJ   rH   rQ   )r4   Úinfrï   ÚlibÚasarray_chkfiniter   rZ   rŠ   r:   r:   r;   rû    s    
zTestCheckFinite.test_simplec                 C   s2   dddg}t jj|dt jd�}t|jt jkƒ d S )NrJ   rH   rQ   rž   )r    rµ   )r4   rž  rŸ  r´   r   rµ   rg   r:   r:   r;   Útest_dtype_order  s    
z TestCheckFinite.test_dtype_orderN)rn   ro   rp   rû  r   r:   r:   r:   r;   rœ    s   rœ  c                   @   s6  e Zd Ze dddgdddgddd	gg¡Ze d
ddgdddgdddgg¡Ze dddgdddgdddgg¡Ze ddddddgddddddgddddddgddddd d!gdddd dd"gdddd!d"dgg¡Zd#d$„ Z	d%d&„ Z
d'd(„ Zd)d*„ Zd+d,„ Zd-d.„ Zd/d0„ Zd1d2„ Zej d3ejejejejg¡d4d5„ ƒZd6S )7ÚTestCorrCoefgÿÁ°‘^³Ã?gŸ.{§<Ç?g�¥‹$,Â?g¯ßá4Œæ?gpÖ)ßî?gÕJ¶ôGÜÑ?gY»’‰Àí?g½�¬€«Ô?gáÞˆ0v©È?gØ©‡¢‘º?gBÈF­Uá?g ¢G)tàß?g3äTBâ„ê?gLÁ\ƒåè?gïÃAçÙ?g>
“Îí?gqµFëE`å?g€5Ø¢?r¨   gÞ›•£¶î?gßÉár@©¿gp¾è]‚4Ó?g?Ä'LÓ?gÝë(÷Ð8å?gîê4V‹}à?gÕØw¨{¨¿g,H¨×5ì?gjSŽ,úè?gªÀâÓóî¿gµ)h¤ïßæ?gå5#AÀ“ê?gƒätÄçoà¿gBCÃæ,å¿g@§ÿ02vï?c                 C   s.   t t dddgdddg¡ddgddggƒ d S )Nr   rJ   r¨   ç      ð¿)r	   r4   r   rx   r:   r:   r;   Útest_non_array6  s    ÿzTestCorrCoef.test_non_arrayc                 C   sd   t | jƒ}t|| jƒ tt t |¡dk¡ƒ t | j| jƒ}t|| j	ƒ tt t |¡dk¡ƒ d S r  )
r   rW  r	   r¬  r   r4   r™   r¢  rÜ  r­  )r]   Ztgt1Ztgt2r:   r:   r;   rû  :  s    
zTestCorrCoef.test_simplec              	   C   sœ   t ƒ �Œ}t d¡ ttt| jdd� | t¡ tt| jdd�| j	ƒ tt| j| j
dd�| jƒ tt| jdd�| j	ƒ tt| j| j
dd�| jƒ W 5 Q R X d S )Nrÿ   rV   ©ZddofrQ   )r   r  Úsimplefilterr   ÚDeprecationWarningr   rW  Úfilterr	   r¬  rÜ  r­  ©r]   Úsupr:   r:   r;   Ú	test_ddofC  s    

zTestCorrCoef.test_ddofc              	   C   sh   t ƒ �X}t d¡ ttt| j| jddƒ ttt| jdd� | t¡ t	t| jdd�| j
ƒ W 5 Q R X d S )Nrÿ   rJ   r   )Zbias)r   r  r¥  r   r¦  r   rW  rÜ  r§  r	   r¬  r¨  r:   r:   r;   Ú	test_biasO  s    

zTestCorrCoef.test_biasc                 C   s^   t  dddgdddgg¡}t|ƒ}t  ddgddgg¡}t||ƒ tt  t  |¡dk¡ƒ d S ©	NrJ   rH   rQ   rì   ù               @ró   r¨   rÇ  )r4   r€   r   r   r   r™   r¢  )r]   rÒ   rØ  rI  r:   r:   r;   Útest_complexY  s
    
zTestCorrCoef.test_complexc                 C   sL   t  dddgg¡}t  dddgg¡}tt  ||¡t  ddgddgg¡ƒ d S r¬  )r4   r€   r   r   ©r]   rÒ   r·   r:   r:   r;   Útest_xy`  s    zTestCorrCoef.test_xyc              	   C   sž   t jdd��ˆ t  dt¡ ttt g ¡ƒtjƒ ttt g ¡ 	dd¡ƒt g ¡ 	dd¡ƒ ttt g ¡ 	dd¡ƒt tjtjgtjtjgg¡ƒ W 5 Q R X d S ©NTrý   rÿ   r   rH   )
r  r  r¥  ÚRuntimeWarningr   r   r4   r€   rï   rl   rx   r:   r:   r;   Ú
test_emptye  s    ÿÿzTestCorrCoef.test_emptyc              	   C   sh   ddgddgg}t jdd�� t|ƒ}W 5 Q R X t|t  ddgddgg¡ƒ tt  t  |¡dk¡ƒ d S )Ng0Žä.ÿ++g}Ã”%­I²TÚraise)r™   r¨   r¢  )r4   Zerrstater   r
   r€   r   r™   r¢  )r]   rÒ   r‹   r:   r:   r;   Útest_extremen  s
    zTestCorrCoef.test_extremeÚ	test_typec                 C   s*   | j  |¡}t||d�}||jks&t‚d S ©NrÊ   )rW  r²   r   rµ   rÝ  )r]   r¶  Zcast_ArØ  r:   r:   r;   Útest_corrcoef_dtypeu  s    z TestCorrCoef.test_corrcoef_dtypeN)rn   ro   rp   r4   r€   rW  rÜ  r¬  r­  r£  rû  rª  r«  r®  r°  r³  rµ  r  r%  r&  ÚhalfÚsingleÚdoubleÚ
longdoubler¸  r:   r:   r:   r;   r¡  !  sJ   þÿþÿþÿûÿ	
	r¡  c                   @   sh  e Zd Ze ddgddgddgg¡jZe ddgddgg¡Zejdddgdd�Ze dd	dg¡Z	e dgdgdgdgdgdgg¡jZ
e d
dgdd
gg¡Zejdejd�Ze dddg¡Ze ddgddgg¡Ze d¡Ze dddddg¡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 d*ej ej!ej"ej#g¡d+d,„ ƒZ$d-S ).ÚTestCovr   rH   rJ   r¨   r¢  rª   r§   )ÚndminrF   çš™™™™™Ù?gš™™™™™Ù¿rQ   rÊ   r®   gUUUUUUå?gUUUUUUå¿g&S£’:Ù?gÒo_Îã?g#Ûù~j¼è?g”‡…ZÓ¼ï?gÎQÚ|é?c                 C   s   t t| jƒ| jƒ d S r3   )r   r   Úx1r¬  rx   r:   r:   r;   ra   ‰  s    zTestCov.test_basicc                 C   sZ   t  dddgdddgg¡}t  ddgddgg¡}tt|ƒ|ƒ tt|t  d¡d	�|ƒ d S )
NrJ   rH   rQ   rì   r­  ró   r¨   rÇ  ©Úaweights)r4   r€   r   r   r[   )r]   rÒ   rØ  r:   r:   r;   r®  Œ  s    zTestCov.test_complexc                 C   sJ   t  dddgg¡}t  dddgg¡}tt||ƒt  ddgddgg¡ƒ d S r¬  )r4   r€   r   r   r¯  r:   r:   r;   r°  ’  s    zTestCov.test_xyc              	   C   sž   t jdd��ˆ t  dt¡ ttt g ¡ƒtjƒ ttt g ¡ 	dd¡ƒt g ¡ 	dd¡ƒ ttt g ¡ 	dd¡ƒt tjtjgtjtjgg¡ƒ W 5 Q R X d S r±  )
r  r  r¥  r²  r   r   r4   r€   rï   rl   rx   r:   r:   r;   r³  —  s    ÿÿzTestCov.test_emptyc              	   C   sZ   t jdd��D t  dt¡ tt| jdd�t tj	tj	 gtj	 tj	gg¡ƒ W 5 Q R X d S )NTrý   rÿ   rR   r¤  )
r  r  r¥  r²  r   r   rÀ  r4   r€   r�  rx   r:   r:   r;   Útest_wrong_ddof   s    ÿÿzTestCov.test_wrong_ddofc                 C   sP   t t| jƒt| jdd�ƒ t dddddg¡}t t| j|ƒt| j|dd�ƒ d S )NF)Zrowvarg+‡ÙÎ÷³?g4€·@‚âÓ?g¾Á&SË?gÒo_Î¡?gŒJê4ë?)r   r   Úx3r4   r€   ©r]   r·   r:   r:   r;   Útest_1D_rowvar§  s    zTestCov.test_1D_rowvarc                 C   s$   t t| jdd�tj| jdd�ƒ d S )NrJ   r¤  )r   r   rÄ  r4   Úvarrx   r:   r:   r;   Útest_1D_variance¬  s    zTestCov.test_1D_variancec                 C   sÖ   t t| j| jd�t| jƒƒ t t| j| jd�| jƒ t t| j| jd�| jƒ | jd }t	t
t| j|d� tjdtjd�}t	tt| j|d� tjdtjd�}t	tt| j|d� dtjdtjd� }t	tt| j|d� d S )N)Úfweightsr§  ©rH   rQ   rÊ   rH   rV   rQ   )r   r   rŸ  ÚfrequenciesÚ
x2_repeatsrÀ  r­  Úunit_frequenciesr¬  r   r÷   r4   r[   rö   ÚRuntimeErrorrZ   )r]   Znonintr«  r:   r:   r;   Útest_fweights¯  s"    ÿÿÿ
zTestCov.test_fweightsc                 C   s²   t t| j| jd�| jƒ t t| jd| j d�t| j| jd�ƒ t t| j| jd�| jƒ t d¡}t	t
t| j|d� t d¡}t	t
t| j|d� dt d¡ }t	tt| j|d� d S )NrÁ  r©   rÊ  rH   r¢  rQ   )r   r   rÀ  r­   r®  Úunit_weightsr¬  r4   r[   r   rÎ  rZ   r˜  r:   r:   r;   Útest_aweights¿  s    ÿ

zTestCov.test_aweightsc                 C   s¾   t t| j| j| jd�t| jƒƒ t t| j| j| jd�| jƒ t t| j| j| jd�| j	ƒ t t| j| j| j
d�| jƒ t t| j| jd| j
 d�t| j| j
d�ƒ t t| j| j| jd�| j	ƒ d S )N)rÉ  rÂ  r©   rÁ  )r   r   rŸ  rË  rÐ  rÌ  rÀ  r­  rÍ  r¬  r­   r®  rx   r:   r:   r;   Útest_unit_fweights_and_aweightsË  s<    ÿþÿþÿþÿþÿþÿþz'TestCov.test_unit_fweights_and_aweightsr¶  c                 C   s*   | j  |¡}t||d�}||jks&t‚d S r·  )rÀ  r²   r   rµ   rÝ  )r]   r¶  Zcast_x1rØ  r:   r:   r;   Útest_cov_dtypeß  s    zTestCov.test_cov_dtypeN)%rn   ro   rp   r4   r€   r  rÀ  r¬  rŸ  rË  rÌ  r­  r[   rö   rÍ  r­   r®  rÐ  rÄ  ra   r®  r°  r³  rÃ  rÆ  rÈ  rÏ  rÑ  rÒ  r  r%  r&  r¹  rº  r»  r¼  rÓ  r:   r:   r:   r;   r½  |  s.   $
	r½  c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTest_I0c              
   C   sê   t tdƒt d¡ƒ t dddddg¡}t dd	d
ddg¡}t t|ƒ|ƒ t t| ƒ|ƒ t ddgddgddgddgddgg¡}t t|ƒt ddgddgddgddgdd gg¡ƒ t d!g¡}t|jd"ƒ tt d!g¡t d#g¡ƒ d S )$Nr§  gÿÇ’#ñ?gC„ê¬7æß?gùmãªMæ?g˜¡3aâ,Ì?gª$WV?Û�?r)  gšÖ¿N^ñ?gEá¿ ò?gé–¡Ä1ð?gÔ%©m? ð?gDíénÿ¥@g>@÷åÌvê?gÏu¯Í¥üï?gVºX¤Ë³ì?g÷uaœ&Ù?gB-¬sJØ?g-^þ§ª?g§_¿³V×?g¨X±Ï.ç?gVØëaXÓÞ?gõj¨•à?gpÁÛÚò?g~-ØÛ@ô?g¦¼D/bó?gÝ¦‰ˆ¬Ÿð?g,êY1Ø”ð?gš[!¬Æð?g‘QÐL‰ð?gWè¤sU+ò?g÷ ±@ñð?g™fx»wñ?rª   rÔ   r¨   )r	   r"   r4   r€   r   r?   r   )r]   rW  rm  rÜ  Zi0_0r:   r:   r;   rû  è  s4    þ
ü
üþzTest_I0.test_simplec                    sV   t  d¡‰ G ‡ fdd„dƒ}tt  |ƒ ¡|ƒs2t‚t  ˆ ¡}t  |ƒ ¡}t||ƒ d S )NrF   c                       s   e Zd Z” jZdd„ ZdS )z*Test_I0.test_non_array.<locals>.array_likec                 S   s   | S r3   r:   )r]   r×  r:   r:   r;   Ú__array_wrap__
	  s    z9Test_I0.test_non_array.<locals>.array_like.__array_wrap__N)rn   ro   rp   Z__array_interface__rÕ  r:   ré  r:   r;   Ú
array_like	  s   rÖ  )r4   r5   r  r¢  rÝ  r"   r   )r]   rÖ  re  rØ  r:   ré  r;   r£  	  s    

zTest_I0.test_non_arrayc              	   C   s4   t  ddg¡}tjtdd�� t|ƒ}W 5 Q R X d S )Nr   y      ð?       @z#i0 not supported for complex valuesr"  )r4   r€   r  r  r÷   r"   )r]   r^   rØ  r:   r:   r;   r®  	  s    zTest_I0.test_complexN)rn   ro   rp   rû  r£  r®  r:   r:   r:   r;   rÔ  æ  s   rÔ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestKaiserc              	   C   sˆ   t t tddƒ¡ƒ ttddƒt g ¡ƒ ttddƒt ddg¡ƒ ttddƒt dddddg¡ƒ ttddƒt d	d
dd
d	g¡ƒ d S )NrJ   r¨   r   rH   g ˆöoFé?rR   gÀvT¶=î?gg›Óù?gø†„½¦â?g÷�ñY…Jì?)r   r4   Úisfiniter%   r	   r€   rx   r:   r:   r;   rû  	  s&    
ÿ
ÿ

 ÿÿ

 ÿÿzTestKaiser.test_simplec                 C   s   t ddƒ d S )NrQ   rF   )r%   rx   r:   r:   r;   Útest_int_beta(	  s    zTestKaiser.test_int_betaN)rn   ro   rp   rû  rÙ  r:   r:   r:   r;   r×  	  s   r×  c                   @   s   e Zd Zdd„ ZdS )Ú	TestMsortc              	   C   sR   t  dddgdddgddd	gg¡}tt|ƒt  ddd	gdddgdddgg¡ƒ d S )
Ngî\é…Ü?gb¥ÝCQé?g×”�s‘á?gwøˆ‹”×?g¥¹klã×?gø*dtaÀî?gÐèÓ¯Áä?g6Hœòïà?gÜ˜C÷Ù?)r4   r€   r	   r'   )r]   rW  r:   r:   r;   rû  .	  s    þþþzTestMsort.test_simpleNr›  r:   r:   r:   r;   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 )ÚTestMeshgridc              
   C   s€   t dddgddddgƒ\}}t|t dddgdddgdddgdddgg¡ƒ t|t dddgdddgdddgdddgg¡ƒ d S )NrJ   rH   rQ   rF   rR   rj   rk   ©r&   r   r4   r€   ©r]   ÚXÚYr:   r:   r;   rû  ;	  s    ýýzTestMeshgrid.test_simplec                 C   s.   t ddddgƒ\}t|t ddddg¡ƒ d S )NrJ   rH   rQ   rF   rÜ  )r]   rÞ  r:   r:   r;   Útest_single_inputF	  s    zTestMeshgrid.test_single_inputc                 C   s*   g }t g t|Ž ƒ t g t|ddiŽƒ d S )Nrœ   F)r   r&   rR  r:   r:   r;   Útest_no_inputJ	  s    zTestMeshgrid.test_no_inputc              
   C   s  dddg}ddddg}t ||dd	�\}}t|t ddddgddddgddddgg¡ƒ t|t ddddgddddgddddgg¡ƒ d
dg}tt ||ƒd jdkƒ tt ||dd	�d jdkƒ tt |||ƒd jdkƒ tt |||dd	�d jdkƒ ttt ||dd	� d S )NrJ   rH   rQ   rF   rR   rj   rk   Úij©Zindexingri   rØ   r   ré   ©rQ   rF   )rF   rQ   rH   )rQ   rF   rH   Znotvalid)r&   r   r4   r€   r   r?   r   rZ   )r]   rÒ   r·   rÞ  rß  rÍ  r:   r:   r;   Útest_indexingO	  s"    


þ

þzTestMeshgrid.test_indexingc                 C   s\   t dddgddddgdd	�\}}t|t dddgg¡ƒ t|t dgdgdgdgg¡ƒ d S )
NrJ   rH   rQ   rF   rR   rj   rk   T©ÚsparserÜ  rÝ  r:   r:   r;   Útest_sparsec	  s     zTestMeshgrid.test_sparsec                 C   s$   t ttdddgddddgdd	� d S )
NrJ   rH   rQ   rF   rR   rj   rk   râ  )r  )r   r÷   r&   rx   r:   r:   r;   Útest_invalid_argumentsh	  s
     
 ÿz#TestMeshgrid.test_invalid_argumentsc                 C   sÀ   t jddt jd�}t jddt jd�}t  ||¡\}}t|j|jkƒ t|j|jkƒ t j||dd�\}}t|j|jkƒ t|j|jkƒ t j||dd�\}}t|j|jkƒ t|j|jkƒ d S )Nr   r›   rÊ   r  T)rœ   ræ  )r4   r5   r³   r´   r&   r   rµ   )r]   rÒ   r·   rÞ  rß  r:   r:   r;   rs  o	  s    zTestMeshgrid.test_return_typec                 C   sr   t  ddg¡}t  ddg¡}t j||ddd�\}}d|dd d …f< t|dd d …f dƒ t|d	d d …f |ƒ d S )
Nr\  r]  gffffff
@gš™™™™™@FT)rç  rœ   r   rJ   )r4   r€   r&   r   )r]   rÞ  rß  rÒ   r·   r:   r:   r;   Útest_writeback‡	  s    zTestMeshgrid.test_writebackc                 C   sh   t jdd„ tddƒD ƒŽ \}}}}}d}t|j|ƒ t|j|ƒ t|j|ƒ t|j|ƒ t|j|ƒ d S )Nc                 s   s   | ]}d g| V  qdS )r   Nr:   ©rÑ   r‡   r:   r:   r;   rÒ  ’	  s     z-TestMeshgrid.test_nd_shape.<locals>.<genexpr>rJ   rj   )rH   rJ   rQ   rF   rR   )r4   r&   r\   r   r?   )r]   r^   r{   r‹   rñ   r4  Zexpected_shaper:   r:   r;   Útest_nd_shape‘	  s    $zTestMeshgrid.test_nd_shapec                 C   s~   t  dgddgdddg¡\}}}t|dddggdddgggƒ t|dddggdddgggƒ t|dddggdddgggƒ d S )Nr   rJ   rH   rQ   rF   rR   ©r4   r&   r   rŠ   r:   r:   r;   Útest_nd_valuesš	  s     zTestMeshgrid.test_nd_valuesc                 C   s|   t jdgddgdddgdd�\}}}t|dddgdddgggƒ t|dddgdddgggƒ t|dddgdddgggƒ d S )	Nr   rJ   rH   rQ   rF   rR   râ  rã  rí  rŠ   r:   r:   r;   Útest_nd_indexing 	  s    $zTestMeshgrid.test_nd_indexingN)rn   ro   rp   rû  rà  rá  rå  rè  ré  rs  rê  rì  rî  rï  r:   r:   r:   r;   rÛ  9	  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 )ÚTestPiecewisec              	   C   s6  t ddgddgdgƒ}t|ddgƒ t ddgddggdgƒ}t|ddgƒ t ddgt ddg¡dgƒ}t|ddgƒ t ddgt ddg¡dgƒ}t|ddgƒ t ddgt ddg¡gdgƒ}t|ddgƒ t ddgddggdd„ gƒ}t|ddgƒ ttdt ddgddggg ƒ ttdt ddgddggdd	d
gƒ d S )Nr   TFrJ   c                 S   s   dS rD  r:   rg  r:   r:   r;   rê  ¾	  rë  z+TestPiecewise.test_simple.<locals>.<lambda>rV   z1 or 2 functions are expectedrH   rQ   )r(   r   r4   r€   r   rZ   r  r:   r:   r;   rû  ©	  s0       ÿ   ÿzTestPiecewise.test_simplec                 C   s2   t ddgddgddggddgƒ}t|ddgƒ d S )NrJ   rH   TFrQ   rF   ©r(   r   r  r:   r:   r;   Útest_two_conditionsÆ	  s     z!TestPiecewise.test_two_conditionsc                 C   s&   t ddddgdddgƒ}t|dƒ d S )NrQ   TFrF   rH   r   )r(   r   r  r:   r:   r;   Ú$test_scalar_domains_three_conditionsÊ	  s    z2TestPiecewise.test_scalar_domains_three_conditionsc                 C   sN   t ddgddgdgƒ}t|ddgƒ t ddgddgddgƒ}t|ddgƒ d S )NrJ   rH   TFr   rQ   rñ  r  r:   r:   r;   Útest_defaultÎ	  s    zTestPiecewise.test_defaultc                 C   s�   t  d¡}t||dkddgƒ}t|jdkƒ t|dkƒ d}t|ddgddgƒ}t|jdkƒ t|dkƒ t|dddgdddgƒ}t|dƒ d S )	NrQ   rF   r   rR   TFrJ   rH   )r4   r€   r(   r   r…   r   r¯  r:   r:   r;   r  ×	  s    
zTestPiecewise.test_0dc              
   C   s®   d}t ||dk|dkgddgƒ}t|dƒ d}t ||dk|dk|dk |dkgdddgƒ}t|dƒ ttdt ||dk|dkgdgƒ ttdt ||dk|dkgddddgƒ d S )NrQ   rF   r   rR   rJ   rH   z2 or 3 functions are expected)r(   r   r   r   rZ   r¯  r:   r:   r;   Útest_0d_comparisonæ	  s$    
,
   ÿ   
ÿz TestPiecewise.test_0d_comparisonc                 C   s8   t  d¡}t  |dk¡}t||gddgƒ}t|dƒ d S )NrQ   rJ   rH   )r4   r€   r(   r   )r]   rÒ   r‹   r·   r:   r:   r;   Útest_0d_0d_conditionõ	  s    
z"TestPiecewise.test_0d_0d_conditionc                 C   s\   t  dddgdddgg¡}t||dk |dkgd	d
dgƒ}t|t  dddgdddgg¡ƒ d S )Ng      Àg      ø¿r©  r§  r’  r¨  r   rH   rV   rJ   rQ   r¢  r©   r¨   )r4   r€   r(   r   r¯  r:   r:   r;   Útest_multidimensional_extrafuncû	  s    ÿÿz-TestPiecewise.test_multidimensional_extrafuncc                 C   sf   G dd„ dt jƒ}t  d¡ |¡}t||dk |dkgdddgƒ}tt|ƒ|ƒ t|dddddgƒ d S )	Nc                   @   s   e Zd ZdS )z/TestPiecewise.test_subclasses.<locals>.subclassNrÁ   r:   r:   r:   r;   rÂ   
  s   rÂ   r¯   r§   rF   r¢  r¨   rª   )r4   rÃ   r5   rÄ   r(   r   rÅ   )r]   rÂ   rÒ   r  r:   r:   r;   rÆ   
  s
    zTestPiecewise.test_subclassesN)rn   ro   rp   rû  rò  ró  rô  r  rõ  rö  r÷  rÆ   r:   r:   r:   r;   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ejje dd�dd„ ƒZej dddggdg¡dd„ ƒZdS )ÚTestBincountc                 C   s$   t  t  d¡¡}t|t  d¡ƒ d S )NrF   )r4   Úbincountr5   r   r[   rÅ  r:   r:   r;   rû  
  s    zTestBincount.test_simplec              
   C   s:   t  t  dddddg¡¡}t|t  ddddddg¡ƒ d S )NrJ   rR   rH   rF   r   )r4   rù  r€   r   rÅ  r:   r:   r;   Útest_simple2
  s    zTestBincount.test_simple2c                 C   s6   t  d¡}t  ddddg¡}t  ||¡}t||ƒ d S )NrF   çš™™™™™É?ç333333Ó?r§  r_  )r4   r5   r€   rù  r   ©r]   rÒ   r¸   r·   r:   r:   r;   Útest_simple_weight
  s    
zTestBincount.test_simple_weightc              
   C   sT   t  dddddg¡}t  dddddg¡}t  ||¡}t|t  d	ddd	ddg¡ƒ d S )
NrJ   rH   rF   rR   rû  rü  r§  r_  r   ©r4   r€   rù  r   rý  r:   r:   r;   Útest_simple_weight2
  s    z TestBincount.test_simple_weight2c                 C   s^   t  dddddg¡}t j|dd�}t|t  dddg¡ƒ g }t j|dd�}t|t  g ¡ƒ d S )Nr   rJ   rQ   ©Z	minlengthrH   rÿ  r¯  r:   r:   r;   Útest_with_minlength!
  s    z TestBincount.test_with_minlengthc              	   C   sh   t  dddddddg¡}t j|dd�}t|t  ddddg¡ƒ t j|dd�}t|t  ddddg¡ƒ d S )Nr   rJ   rH   rQ   r  rÿ  r¯  r:   r:   r;   Ú)test_with_minlength_smaller_than_maxvalue)
  s
    z6TestBincount.test_with_minlength_smaller_than_maxvaluec                 C   sZ   t  dddddg¡}t  dddddg¡}t  ||d	¡}t|t  d
ddd
ddd
d
g¡ƒ d S )NrJ   rH   rF   rR   rû  rü  r§  r_  ri   r   rÿ  rý  r:   r:   r;   Útest_with_minlength_and_weights0
  s    z,TestBincount.test_with_minlength_and_weightsc                 C   s&   t jg td�}t  |¡}t||ƒ d S r·  )r4   r€   rN  rù  r   r¯  r:   r:   r;   r³  6
  s    
zTestBincount.test_emptyc                 C   s4   t jg td�}t j|dd�}t|t jdtd�ƒ d S )NrÊ   rR   r  )r4   r€   rN  rù  r   r=   r¯  r:   r:   r;   Útest_empty_with_minlength;
  s    z&TestBincount.test_empty_with_minlengthc                    sl   t jg td�‰ ttd‡ fdd„ƒ ttd‡ fdd„ƒ t  d¡‰ ttd‡ fdd„ƒ ttd‡ fd	d„ƒ d S )
NrÊ   z"'str' object cannot be interpretedc                      s   t jˆ dd�S ©NÚfoobarr  ©r4   rù  r:   rg  r:   r;   rê  D
  rë  z<TestBincount.test_with_incorrect_minlength.<locals>.<lambda>zmust not be negativec                      s   t jˆ dd�S ©NrV   r  r  r:   rg  r:   r;   rê  G
  rë  rR   c                      s   t jˆ dd�S r  r  r:   rg  r:   r;   rê  L
  rë  c                      s   t jˆ dd�S r	  r  r:   rg  r:   r;   rê  O
  rë  )r4   r€   rN  r   r÷   rZ   r5   rx   r:   rg  r;   Útest_with_incorrect_minlength@
  s$    
þ
þ

þ
þz*TestBincount.test_with_incorrect_minlengthrX  rY  c                 C   sÌ   t  t tj¡¡}t  t tj¡¡}tdƒD ]}t dddg¡ q,tt  t tj¡¡|ƒ tt  t tj¡¡|ƒ tdƒD ]}t dddgdddg¡ qztt  t tj¡¡|ƒ tt  t tj¡¡|ƒ d S )Nr›   rJ   rH   rQ   rF   rR   rj   )	r^  r_  r4   rµ   Zintpr»  r\   rù  r   )r]   Zintp_refcountZdouble_refcountÚjr:   r:   r;   Útest_dtype_reference_leaksQ
  s    z'TestBincount.test_dtype_reference_leaksÚvalsrH   c              	   C   sJ   t  |¡}ttƒ� t  |¡ W 5 Q R X ttƒ� t  |¡ W 5 Q R X d S r3   )r4   Úasarrayr   rZ   rù  )r]   r  Zvals_arrr:   r:   r;   Útest_error_not_1da
  s
    


zTestBincount.test_error_not_1dN)rn   ro   rp   rû  rú  rþ  r   r  r  r  r³  r  r
  r  r%  rc  r   r  r&  r  r:   r:   r:   r;   rø  
  s   
rø  c                   @   s²   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	dd„ dd„ dd„ dd„ gddddgd�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 )*Ú
TestInterpc                 C   st   t ttdg g ƒ t ttddgddgƒ t ttdddgddgdd� t ttdg g dd� t ttddgddgdd� d S )Nr   rJ   rH   r{  éh  )r   rZ   r$   rx   r:   r:   r;   Útest_exceptionsm
  s
    zTestInterp.test_exceptionsc                 C   sB   t  ddd¡}t  ddd¡}t  ddd¡}tt  |||¡|ƒ d S )Nr   rJ   rR   rb   )r4   r¡  r	   r$   ©r]   rÒ   r·   Úx0r:   r:   r;   ra   t
  s    zTestInterp.test_basicc           
      C   s¼  t ddƒD �]ª}tj|tjd�}tj|tjd�}tjdd|d |gtjd�}|d d d… }t|||ƒ}t|||ƒ}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ t|||dd�}t|||dd�}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ t|||dd�}t|||dd�}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ t|||ddd	�}t|||ddd	�}tjddddgtd�}|d d d… }	t||ƒ t||	ƒ q
d S )
NrJ   r›   rÊ   rV   r   ©ÚleftrH   ©Úright)r  r  )	r\   r4   r5   r»  r[   r€   r$   r  r   )
r]   ÚsizeÚxpZypZincptsZdecptsZincresZdecresZinctgtZdectgtr:   r:   r;   Útest_right_left_behaviorz
  s:    






z#TestInterp.test_right_left_behaviorc                 C   s¦   t  ddd¡}t  ddd¡}d}tt  |||¡|ƒ d}tt  |||¡|ƒ t  d¡}tt  |||¡|ƒ t  d¡}tt  |||¡|ƒ t j}tt  |||¡|ƒ d S )Nr   rJ   rR   rü  )r4   r¡  r	   r$   r³   r´   rï   r  r:   r:   r;   Útest_scalar_interpolation_point 
  s    

z*TestInterp.test_scalar_interpolation_pointc                 C   s~   dddddg}ddddg}ddt jdg}tt  |||¡ddt jt jdgƒ ddt jdg}tt  |||¡ddt jt jdgƒ d S )NrJ   rH   r¨  rQ   rF   )r4   r�  r	   r$   rï   )r]   rÒ   r  Úfpr:   r:   r;   Ú test_non_finite_behavior_exact_x®
  s    "z+TestInterp.test_non_finite_behavior_exact_xc                 C   s
   t  | ¡S r3   )r4   Zfloat_rg  r:   r:   r;   rê  ·
  rë  zTestInterp.<lambda>c                 C   s
   t | dƒS rõ   ©rD   rg  r:   r:   r;   rê  ¸
  rë  c                 C   s
   t d| ƒS rõ   r  rg  r:   r:   r;   rê  ¹
  rë  c                 C   s   t | t | d¡ƒS )NrP   )rD   r4   Úmultiplyrg  r:   r:   r;   rê  º
  rë  rA   zcomplex-realzcomplex-imagzcomplex-both)ÚparamsZidsc                 C   s   |j S )z( scale function used by the below tests )Úparam)r]   Úrequestr:   r:   r;   Úsc¶
  s    zTestInterp.scc                 C   s¤   t t dtjdg|ddgƒ¡|tjƒƒ t t ddtjg|ddgƒ¡|tjƒƒ t t dddg|tjdgƒ¡|tjƒƒ t t dddg|dtjgƒ¡|tjƒƒ dS )z test that nans are propagated r§  rJ   r   r›   N)r   r4   r$   rï   ©r]   r$  r:   r:   r;   Útest_non_finite_any_nanÅ
  s    (((z"TestInterp.test_non_finite_any_nanc                 C   sº   t t dtj tj
 g|ddgƒ¡|tjƒƒ t t dddg|tj tj
 gƒ¡|tjƒƒ t t dddg|tj
 tj gƒ¡|tjƒƒ t t dtj tj
 g|ddgƒ¡|dƒƒ dS )z2 Test that interp between opposite infs gives nan r§  r   r›   rJ   N©r   r4   r$   r�  rï   r%  r:   r:   r;   Útest_non_finite_infÌ
  s    ...zTestInterp.test_non_finite_infc                 C   st  t t dtj dg|tj dgƒ¡|tjƒƒ t t dtj dg|tj
 dgƒ¡|tjƒƒ t t dtj dg|dtj gƒ¡|tjƒƒ t t dtj dg|dtj
 gƒ¡|tjƒƒ t t ddtj
 g|tj dgƒ¡|tjƒƒ t t ddtj
 g|tj
 dgƒ¡|tjƒƒ t t ddtj
 g|dtj gƒ¡|tjƒƒ t t ddtj
 g|dtj
 gƒ¡|tjƒƒ dS )z@ Test that interp where both axes have a bound at inf gives nan r§  rJ   r›   r   Nr'  r%  r:   r:   r;   Útest_non_finite_half_inf_xfÕ
  s    .......z&TestInterp.test_non_finite_half_inf_xfc                 C   s¬   t t dtj tj g|ddgƒ¡|dƒƒ t t dtj dg|ddgƒ¡|dƒƒ t t ddtj
 g|ddgƒ¡|dƒƒ t t dtj
 tj
 g|ddgƒ¡|dƒƒ dS )z1 Test interp where the x axis has a bound at inf r§  r   r›   rJ   N©r   r4   r$   r�  r%  r:   r:   r;   Útest_non_finite_half_inf_xà
  s    ,((z%TestInterp.test_non_finite_half_inf_xc                 C   s  t t dddg|dtj gƒ¡|tj ƒƒ t t dddg|dtj
 gƒ¡|tj
 ƒƒ t t dddg|tj dgƒ¡|tj ƒƒ t t dddg|tj
 dgƒ¡|tj
 ƒƒ t t dddg|tj tj gƒ¡|tj ƒƒ t t dddg|tj
 tj
 gƒ¡|tj
 ƒƒ dS )z1 Test interp where the f axis has a bound at inf r§  r   rJ   r›   Nr*  r%  r:   r:   r;   Útest_non_finite_half_inf_fç
  s    ,,,,0z%TestInterp.test_non_finite_half_inf_fc           	      C   sH  t  ddd¡}t  ddd¡dt  ddd¡ d  }d}|d| d  }tt  |||¡|ƒ d}d}tt j||||d�|ƒ d	}d}tt j||||d
�|ƒ dddddg}ddddg}ddt jdg}ddt jd t jdg}tt  |||¡|ƒ ddddddddg}ddddg}ddddg}d dd!d"dd#d$d%g}tt j|||d&d'�|ƒ d S )(Nr   rJ   rR   rì   rü  rV   ù       @      @r  r§   r  rH   r¨  rQ   rF   ù       @      ð?y              à?éLÿÿÿéVÿÿÿéGÿÿÿé¹   r”  r(  ém  é¾   éBÿÿÿé^  é¢þÿÿy      @      ð?y      $@       @y      @      @y      @      @y      @      ø?y     €!@      ü?y      @      ô?y      
@      
@y      @      @y      @      @r  r{  )r4   r¡  r	   r$   r�  )	r]   rÒ   r·   r  Zy0r  r  r  r  r:   r:   r;   Útest_complex_interpð
  s0    $ ÿzTestInterp.test_complex_interpc                 C   s¾   t  ddd¡}t  ddd¡}t  d¡}tt  |||¡|ƒ t  dddg¡}t  dddg¡}t  t  d¡||¡}t|dƒ tt|t jƒƒ t jt  d¡||dd	�}t|d
ƒ tt|t jƒƒ d S )Nr   rJ   rR   rü  rH   rF   rV   r‹  r{  r§  )	r4   r¡  r€   r	   r$   r   r   r  r´   )r]   rÒ   r·   r  r  r  r¹   r:   r:   r;   Ú)test_zero_dimensional_interpolation_point  s    


z4TestInterp.test_zero_dimensional_interpolation_pointc                 C   s2   t  ddd¡}t  |¡}tt  t j||¡dƒ d S )Nr   r›   g-Cëâ6?rª   )r4   r5   Úsinr	   r$   rÌ  )r]   r  r  r:   r:   r;   Útest_if_len_x_is_small  s    
z!TestInterp.test_if_len_x_is_smallc                 C   s    ddddddddg}d	d
ddg}ddddg}ddddddddg}t tj|||dd�|ƒ tj|dd� dd¡}tj|dd� dd¡}t tj|||dd�|ƒ d S ) Nr/  r0  r1  r2  r”  r(  r   r3  r4  r5  r6  r7  rR   r›   rQ   rF   g      @r¯   ç     €!@g      @r©   g      
@ç      @g      @r  r{  rž   rŸ   rH   rV   rÚ   )r	   r4   r$   r€   rl   )r]   rÒ   r  r  r·   r:   r:   r;   r„  "  s    zTestInterp.test_periodN)rn   ro   rp   r  ra   r  r  r  r  Zfixturer$  r&  r(  r)  r+  r,  r8  r9  r;  r„  r:   r:   r:   r;   r  k
  s6   &üüû
		r  c                   @   sÜ  e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zej 	d	e
jd
 ¡dd„ ƒZdd„ e
jd D ƒe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
je
jfe
 d¡e
jfg Zej 	ddge¡ej 	ddgdddddddddg	¡dd„ ƒƒZe
jd e
jd
  d Zej 	d	e¡d d!„ ƒZej 	d	e¡d"d#„ ƒZej 	d	e¡d$d%„ ƒZd&d'„ Zd(d)„ Zd*d+„ Zd,d-„ Zd.d/„ Zd0d1„ Z d2d3„ Z!d4d5„ Z"d6d7„ Z#d8d9„ Z$d:d;„ Z%d<d=„ Z&d>d?„ Z'd@dA„ Z(dBdC„ Z)dDdE„ Z*dFdG„ Z+dHdI„ Z,dJS )KÚTestPercentilec                 C   s~   t  d¡d }tt  |d¡dƒ tt  |d¡dƒ tt  |d¡dƒ t j|d	< tt  |d¡t jƒ tt j|dd
d�t jƒ d S )Nri   r§  r   rª   rú   r=  rb   ç      ü?rJ   Únearest©Úmethod)r4   r5   r   Ú
percentilerï   r  r:   r:   r;   ra   /  s    
zTestPercentile.test_basicc                 C   sØ   dd„ t dƒD ƒ}t |tdƒ¡}t|tdƒƒ tt|ƒtƒ t |tdƒ¡}t|tddƒƒ tt|ƒtƒ t |tdƒ¡}t|tdd	ƒƒ tt|ƒtƒ t |tdƒg¡}t|t tdd	ƒg¡ƒ tt|ƒtjƒ d S )
Nc                 S   s   g | ]}t |d ƒ‘qS ©rH   r   rë  r:   r:   r;   rÓ   9  s     z0TestPercentile.test_fraction.<locals>.<listcomp>ri   r   rú   rk   rH   rb   rF   )r\   r4   rC  r   r   rÅ   r€   rÃ   )r]   rÒ   r  r:   r:   r;   Útest_fraction8  s    zTestPercentile.test_fractionc                 C   sR   t  d¡}t  |dd d d¡ t  |dd d dd¡ t  d¡}t  |dd |dd¡ d S )NrR   FÚlinearrÔ   )r4   r[   rC  )r]   rñ   Úor:   r:   r;   Útest_apiK  s
    

zTestPercentile.test_apic              	   C   sR   t  dddgdddgdddgdddgdddgg¡}tt j|ddd�dddgƒ d S )NrJ   rF   rQ   rb   r   rr   )r4   r€   r   rC  r  r:   r:   r;   Útest_2DR  s    üzTestPercentile.test_2Drµ   ZAllFloatc                 C   sP   t jdt jdddg|d�}t j|ddd�}t j |t j¡ t j |j|j¡ d S )Nr/  ç     €A@ç      D@ç      I@rÊ   rF  rA  )r4   r  ZNANrC  Útestingr   rµ   )r]   rµ   r×  rØ  r:   r:   r;   Útest_linear_nan_1DZ  s    ýz!TestPercentile.test_linear_nan_1Dc                 C   s   g | ]}|t jf‘qS r:   )r4   r´   )rÑ   Zint_typer:   r:   r;   rÓ   e  s   ÿzTestPercentile.<listcomp>r†  r…  Úinput_dtypeÚexpected_dtyperB  rm  )Úinverted_cdfr  )Úaveraged_inverted_cdfç     €;@)Úclosest_observationr  )Úinterpolated_inverted_cdfr  )ÚhazenrS  )Úweibullé   )rF  rd  )Úmedian_unbiasedr;  )Únormal_unbiasedg      ;@c                 C   s    t jdddddg|d�}t j|d|d�}t j ||d¡ |d	kr€|d
krbt j t  |¡jt j¡ qœt j t  |¡jt  |¡¡ nt j t  |¡jt  |¡¡ d S )Nr/  g      4@rJ  rK  rL  rÊ   rA  r9  )rQ  rT  r…  )r4   r  rC  rM  r	   r   rµ   r´   )r]   rB  rm  rO  rP  r×  r¹   r:   r:   r;   Útest_linear_interpolationp  s    ÿÿz(TestPercentile.test_linear_interpolationc                 C   sD   t tjtjd|d�ddd�dƒ t tjtjd|d�ddd�dƒ d S )	Nr›   rÊ   rb   ÚlowerrA  rF   ÚhigherrR   ©r   r4   rC  r5   ©r]   rµ   r:   r:   r;   Útest_lower_higher’  s    ÿÿÿÿz TestPercentile.test_lower_higherc                 C   sˆ   t tjtjd|d�ddd�dƒ t tjtjd|d�d d	dd�d
ƒ t tjtjd|d�ddd�dƒ t tjtjd|d�d	dd�d
ƒ d S )Nr›   rÊ   é3   ÚmidpointrA  r‹  rØ   rJ   rb   rR   r4  ç      @r^  r_  r:   r:   r;   Útest_midpoint™  s(    ÿÿÿÿÿÿÿÿzTestPercentile.test_midpointc                 C   sD   t tjtjd|d�ddd�dƒ t tjtjd|d�ddd�dƒ d S )	Nr›   rÊ   ra  r@  rA  rR   é1   rF   r^  r_  r:   r:   r;   Útest_nearest¤  s    ÿÿÿÿzTestPercentile.test_nearestc                 C   sL   t j d¡}t  |d¡}t j || ¡ ¡ t  |d¡}t j || ¡ ¡ d S )NrR   rú   r   )r4   r£  r   rC  rM  r   rl  rÃ  )r]   r×  r¹   r:   r:   r;   Ú'test_linear_interpolation_extrapolation«  s
    z6TestPercentile.test_linear_interpolation_extrapolationc                 C   s0   t  d¡d }tt  |dddg¡dddgƒ d S )Nri   r§  r   rú   rb   r=  r?  )r4   r5   r   rC  r  r:   r:   r;   Útest_sequence´  s    zTestPercentile.test_sequencec                 C   s  t  d¡ dd¡}tt  |d¡dddgƒ dddd	gdd	d
dgddddgg}tt j|ddd�|ƒ dddgdddgdddgg}tt j|ddd�t  |¡jƒ t  d¡ ddd	d
¡}tt  |d¡jdƒ tt  |d¡jdƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|ddd�jd ƒ tt j|ddd�jd!ƒ tt j|dd"d#�jdƒ tt j|dd"d#�jdƒ tt j|ddd"d$�jdƒ tt j|ddd"d$�jdƒ tt j|ddd"d$�jdƒ tt j|ddd"d$�jd ƒ tt j|ddd"d$�jd!ƒ d S )%Nrè   rQ   rF   )r‘  rb   rú   g      @rc  r�  rH   rR   rj   rk   ri   rØ   r›   r4  r   rr   ç      è?r’  ç      @r<  ç      #@rJ   r  ©r‘  rb   rD  )r‘  rb   r~  ©rQ   )rH   rF   rR   rj   )rH   rQ   rR   rj   )rH   rQ   rF   rj   )rH   rQ   rF   rR   )rQ   rQ   rR   rj   r]  rA  ©rs   rB  )r4   r5   rl   r   rC  r€   r  r?   )r]   rÒ   Úr0r   r:   r:   r;   rf  ¸  sh    " ÿ
ÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿzTestPercentile.test_axisc                 C   sœ  t  d¡ dd¡}tt  |d¡dƒ tt  t  |d¡¡ƒ t  dddd	g¡}tt j|dd
d�|ƒ tt j|dd
d�j|jƒ t  dddg¡}t	t j|ddd�|ƒ tt j|ddd�j|jƒ t  
d¡}tt j|d|d�dƒ t|dƒ t  
d¡}tt j|dd
|d�|ƒ t||ƒ t  
d¡}tt j|dd|d�|ƒ t||ƒ t  d¡ dd¡}tt j|ddd�dƒ tt  t  |d¡¡ƒ t  dddd	g¡}t j|ddd
d�}t||ƒ t|j|jƒ t  dddg¡}t j|dddd�}t	||ƒ t|j|jƒ t j
d|jd�}t j|dd|d�}t|dƒ t|dƒ t j
d|jd�}t j|ddd
|d�}t||ƒ t||ƒ t j
d|jd�}t j|ddd|d�}t||ƒ t||ƒ d S )Nrè   rQ   rF   rb   rc  r®   r¯   r°   r0  r   rr   r’  rk  rJ   ©r`  ©rs   r`  r\  rA  )rB  rs   r¨   r*  r:   rÊ   ©rB  r`  rR   ©rB  rs   r`  )r4   r5   rl   r   rC  r   Úisscalarr€   r?   r	   Úemptyrµ   )r]   rÒ   ro  r   r`  Zc0Úc1r‹   r:   r:   r;   Útest_scalar_qÜ  sR    












zTestPercentile.test_scalar_qc                 C   s€   t ttjddgddd� t ttjdgdƒ t ttjdgdƒ t ttjdgttdƒƒdg ƒ t ttjdgttdƒƒd	g ƒ d S )
NrJ   rH   é8   r  rA  ée   rV   rb   r^  )r   rZ   r4   rC  rj  r\   rx   r:   r:   r;   Útest_exception  s    ÿ zTestPercentile.test_exceptionc                 C   s   t t dddgd¡dƒ d S )NrJ   rH   rQ   r   )r   r4   rC  rx   r:   r:   r;   Útest_percentile_list  s    z#TestPercentile.test_percentile_listc                 C   s  t  dddg¡}t  d¡}d}t j|||d� tt  ||¡|ƒ t  dddgddd	gg¡}t  d
¡}t j||d|d� tt j||dd�|ƒ t  d¡}t j||d|d� tt j||dd�|ƒ t  d¡ dd¡}t  ddddgddddgg¡}t  d¡}tt j|dd|d�|ƒ t||ƒ t  dddgdddgg¡}t  d¡}tt j|dd|d�|ƒ t||ƒ t  ddddgddd	dgg¡}t jd|jd �}t j|dd!d|d"�}t||ƒ t||ƒ t  ddd#gddd$gg¡}t jd|jd �}t j|dd!d|d"�}t||ƒ t||ƒ d S )%NrJ   rH   rQ   rm  ©rJ   rH   rQ   rp  rF   rR   rj   ru  r   rq  rr   ©rQ   rH   rè   r§   r©   r®   r¯   r°   r0  )rH   rF   rl  ri  rj  r<  r’  rc  rk  rÊ  rk   rÊ   r\  rs  ri   rØ   )	r4   r€   r=   rC  r   r5   rl   ru  rµ   )r]   rÒ   r·   r  ro  r`  r   r‹   r:   r:   r;   Útest_percentile_out  sB    
ÿ








z"TestPercentile.test_percentile_outc                 C   s–  t  d¡ dddd¡}tt j|ddd�jdƒ tt j|ddd�jd	ƒ tt j|ddd�jd
ƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|ddd�jd
ƒ tt j|ddd�jd	ƒ tt j|ddd�jdƒ tt j|dddd�jd
ƒ tt j|dddd�jd
ƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ d S )Nr=  r4  rJ   rH   rb   r   rr   )rJ   rH   rJ   )r4  rH   rJ   )r4  rJ   rJ   rQ   )r4  rJ   rH   rV   rP   rS   r	  rb  rn  r›   )rH   rJ   rH   rJ   )rH   r4  rH   rJ   )rH   r4  rJ   rJ   )rH   r4  rJ   rH   )r4   r5   rl   r   rC  r?   r€   ©r]   rñ   r:   r:   r;   Útest_percentile_empty_dim@  s>    ÿþÿþÿÿÿÿz(TestPercentile.test_percentile_empty_dimc                 C   sx   t  ddddg¡}t j|dgdd� t|t  ddddg¡ƒ t  ddddg¡}t  |dg¡ t|t  ddddg¡ƒ d S )NrH   rQ   rF   rJ   rb   F©Úoverwrite_input©r4   r€   rC  r   rg   r:   r:   r;   Útest_percentile_no_overwrite\  s    z+TestPercentile.test_percentile_no_overwritec                 C   s„   t jdddd�}t jt  d¡|dd� t|t jdddd�ƒ t jdddd� ¡ }t jt  d¡|dd� t|t jdddd� ¡ ƒ d S )Nrª   ç      Y@rR   )Únumrb  rA  )r4   r¡  rC  r5   r   rä  )r]   r  r:   r:   r;   Útest_no_p_overwritee  s    z"TestPercentile.test_no_p_overwritec                 C   sf   t  ddddg¡}t j|dgdd�}t|t  dg¡ƒ t jddddgdgdd�}t|t  dg¡ƒ d S )	NrH   rQ   rF   rJ   rb   Tr�  r¨  rƒ  rz   r:   r:   r;   Útest_percentile_overwritem  s
    z(TestPercentile.test_percentile_overwritec              
   C   sÔ  t jjdd�}t  |gd ¡}tt j|ddd�t  |d¡ƒ t  |dd¡}tt j|dd	d�t  |d¡ƒ | dd
¡ ¡ }tt j|ddd�t  |d¡ƒ | dd
¡ ¡ }tt j|ddgdd�t j|ddgd d�ƒ tt j|ddgdd�t j|ddgdd�ƒ t  	d¡ 
d¡}t j | ¡ ¡ tt j|ddd�d t  |d d …d d …d d …df  ¡ d¡ƒ tt j|ddgdd�d d …d
f t  |d d …d d …d
d d …f  ¡ ddg¡ƒ tt j|ddd�d t  |d d …d d …dd d …f  ¡ d¡ƒ tt j|ddd�d t  |dd d …d d …d d …f  ¡ d¡ƒ tt j|ddd�d t  |dd
d d …d d …f  ¡ d¡ƒ tt j|ddd�d t  |dd d …d d …d
f  ¡ d¡ƒ tt j|ddd�d t  |dd d …dd d …f  ¡ d¡ƒ d S )N©éG   é   ©r  r›   r5  rW   rr   rV   r   rf   rJ   rd   r‘  rŠ  rI   ©r   éƒ  ©rQ   rR   rk   r4  éZ   ©r   rJ   rQ   ©rQ   rJ   r	  rH   ©rQ   rJ   rH   r}  ©rH   rJ   ©rJ   rP   ©rJ   rQ   rM   )r4   r£  ÚnormalÚdstackr   rC  Úmoveaxisr†   rœ   r5   rl   ÚshuffleÚravelÚflatten©r]   rG  rÒ   rñ   r:   r:   r;   Útest_extended_axisu  sJ    ÿÿ&ÿ *ÿ&ÿ&ÿ"ÿ"ÿ"ÿz!TestPercentile.test_extended_axisc                 C   s¢   t  d¡}tt jt j|ddd� tt jt j|ddd� tt jt j|ddd� tt jt j|ddd� ttt j|ddd� ttt j|d	dd� ttt j|d
dd� d S )Nr�  r(  r‘  )rs   r•  ©r   r(  rF   ©r   rF   rO   )rV   rV   )rQ   rV   )r4   r[   r   rv   rC  rZ   r  r:   r:   r;   Útest_extended_axis_invalid•  s    
z)TestPercentile.test_extended_axis_invalidc                 C   sæ   t  d¡}tt j|dd dd�jdƒ tt j|dddd�jdƒ tt j|dddd�jd	ƒ tt j|dd
dd�jdƒ tt j|dddd�jdƒ tt j|dddd�jdƒ tt j|ddgddd�jdƒ tt j|ddgddd�jdƒ d S )Nr�  rk   Tr1  ©rJ   rJ   rJ   rJ   rW   ©rJ   rJ   rk   r4  ru   ©rJ   rR   rk   rJ   rÔ   ©rQ   rJ   rk   r4  ©r   rJ   rH   rQ   )r2  r‘  ©rJ   rJ   rk   rJ   rJ   )rH   rJ   rJ   rk   rJ   )rH   rJ   rR   rk   rJ   )r4   r[   r   rC  r?   r  r:   r:   r;   Útest_keepdims   s:    
ÿÿÿÿÿÿÿÿÿÿzTestPercentile.test_keepdimsc                 C   s¾   t  d¡}t  d¡}tt j|dd|d�|ƒ tt j|ddd|d�|ƒ t  d¡}tt j|dd|d�|ƒ tt j|ddd|d�|ƒ t  d	¡}tt j|d
|d�|ƒ tt j|d
d|d�|ƒ d S )N©rF   rä  r   rp  r@  rr  rm  rJ   r:   rH   )r4   r=   r[   r   rC  ©r]   rG  rñ   r:   r:   r;   Útest_out´  s    



zTestPercentile.test_outc              	   C   sî   t jdd��Ø t  ddt¡ t d¡}t d¡}tj|d< ttj	|dd|d	�|ƒ ttj	|ddd
|d�|ƒ t d¡}ttj	|dd|d	�|ƒ ttj	|ddd
|d�|ƒ t d¡}ttj	|d|d	�|ƒ ttj	|dd
|d�|ƒ W 5 Q R X d S )NTrý   rÿ   r   r©  rä  r”  r   rp  r@  rr  rm  rJ   r:   )
r  r  r  r²  r4   r=   r[   rï   r   rC  rª  r:   r:   r;   Útest_out_nanÁ  s,    


 ÿ
 ÿ
 ÿzTestPercentile.test_out_nanc                 C   s:  t jdtd�}t j|d< tt  |d¡t jƒ tt j|ddd�t jƒ tt j|ddgdd�t  t jgd ¡ƒ t jdtd� ddd	¡}t j|d
< t j|d< tt  |d¡t jƒ tt  |d¡jdƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …ddf< t j|d d …ddf< tt  |ddgd¡|ƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …ddf< t j|d d …ddf< tt  |ddgd¡|ƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …df< t j|d d …df< tt  |ddgd¡|ƒ t jt jdtd� ddd	¡ddgddd�}t j|d d …df< t j|d d …df< tt j|ddgddd�|ƒ d S )Nr  rÊ   rH   rü  r   rr   g333333ã?rQ   rF   r|  ©rJ   rJ   rH   rÊ  re   rJ   r–  rN   r@  rA  )	r4   r5   r  rï   r   rC  r€   rl   r…   rz   r:   r:   r;   Útest_nan_behaviorÓ  s‚    
ÿ

"

 ÿ"

  ÿ  ÿ

 ÿ  ÿ   ÿÿz TestPercentile.test_nan_behaviorc              	   C   s¬   t jtdd�� t ddddgtj¡ W 5 Q R X t jtdd�� t ddddgtjg¡ W 5 Q R X t ddd	¡}tj|d
< t jtdd�� t ddddg|¡ W 5 Q R X d S )NzPercentiles must be inr"  rJ   rH   rQ   r®   r¨   g     ÀX@r8  r   )r  r  rZ   r4   rC  rï   r¡  )r]   r•  r:   r:   r;   Ú
test_nan_q  s     "
zTestPercentile.test_nan_qN)-rn   ro   rp   ra   rE  rH  rI  r  r%  r&  r4   Ú	typecodesrN  rµ  r´   r³   r¼  rB  rC  Zclongdoublerµ   ZH_F_TYPE_CODESr[  Z
TYPE_CODESr`  rd  rf  rg  rh  rf  rw  rz  r{  r~  r€  r„  r‡  rˆ  rž  r¡  r¨  r«  r¬  r®  r¯  r:   r:   r:   r;   r>  -  st   	

ÿ






ùþøÿ



	$0)	 =r>  c                   @   sÎ   e Zd Zdd„ Zdd„ Zejjdd�dd„ ƒZd	d
„ Z	dd„ Z
ej dejd ¡dd„ ƒZej ddddddddddddddg¡dd „ ƒZejeejejd!d"d#�ejd$d$d%d&d'�d(�d)�d*d+„ ƒZd,d-„ Zd.S )/ÚTestQuantilec                 C   s,   dddg}t  |d¡}t jj|ddd� d S )Nrª   rû  r¿  gÍÌÌÌÌÌÜ?g
×£p=
Ç?rJ   )Zmaxulp)r4   ÚquantilerM  Zassert_array_max_ulp)r]   rÒ   r^   r:   r:   r;   Útest_max_ulp  s    
zTestQuantile.test_max_ulpc                 C   sH   t  d¡d }tt  |d¡dƒ tt  |d¡dƒ tt  |d¡dƒ d S )Nri   r§  r   rª   rJ   r=  r?  )r4   r5   r   r²  r  r:   r:   r;   ra   '  s    zTestQuantile.test_basiczSee gh-19154rY  c                 C   sn   t  dg¡}t  dd¡}t||d ƒ tt|ƒ|jƒ t  dddg¡}t  ||¡}t||ƒ t|j|jƒ d S )NTFr   )r4   r€   r²  r   rÅ   rµ   r   )r]   r^   Ztf_quantZ	quant_resr:   r:   r;   Útest_correct_quantile_value-  s    
z(TestQuantile.test_correct_quantile_valuec                 C   s8  dd„ t dƒD ƒ}t |d¡}t|dƒ tt|ƒtƒ t |d¡}t|tddƒƒ tt|ƒtƒ t |tddƒ¡}t|tddƒƒ tt|ƒtƒ t |tddƒg¡}t|t tddƒg¡ƒ tt|ƒtjƒ t |tddƒgg¡}t|t tddƒgg¡ƒ tt|ƒtjƒ t d¡}tt |tddƒ¡tddƒƒ d S )	Nc                 S   s   g | ]}t |d ƒ‘qS rD  r   rë  r:   r:   r;   rÓ   :  s     z.TestQuantile.test_fraction.<locals>.<listcomp>ri   r   rJ   rk   rH   rF   )	r\   r4   r²  r   rÅ   r   r€   rÃ   r5   )r]   rÒ   r•  r:   r:   r;   rE  8  s$    

zTestQuantile.test_fractionc                 C   sp   t  dddddg¡}| ¡ }t jt  d¡|dd� t||ƒ | ¡ }| ¡ }t jt  d¡|dd� t||ƒ d S )	Nr   ri  rª  r§  r¨   r…  rb  rA  )r4   r€   rœ   r²  r5   r   rä  )r]   Úp0r  r:   r:   r;   r‡  S  s    
z TestQuantile.test_no_p_overwriterµ   r†  c                 C   s2   t jt jddg|d�dgdd�}|j|ks.t‚d S )NrJ   rH   rÊ   r§  r@  rA  )r4   r²  r€   rµ   rÝ  )r]   rµ   rØ  r:   r:   r;   Útest_quantile_preserve_int_type_  s    ÿz,TestQuantile.test_quantile_preserve_int_typerB  rQ  rR  rT  rU  rV  rW  rF  rY  rZ  r@  r\  r]  rb  c                 C   sˆ   t  ddd¡}t jt  dddddddddddddddd	d	d
g¡d ||d�}tt  |¡|ƒ t jddddg||d�}tt  |¡|ƒ d S )Nr   rJ   ry  rH   rQ   rF   rR   rØ   ri   rk   r_  rA  rª   r¨   r§   r©   )r4   r¡  r²  r€   r   r¥  )r]   rB  rµ  r²  r:   r:   r;   Útest_quantile_monotonice  s    	&  ÿÿ ÿz$TestQuantile.test_quantile_monotonicrQ   r}  )Ú	min_valueÚ	max_valueFçœu ˆ<ä7þçœu ˆ<ä7~)Úallow_infinityÚ	allow_nanr¸  r¹  )rµ   r?   Úelements)r×  c                 C   s.   t  ddd¡}t  ||¡}tt  |¡|ƒ d S )Nr   rJ   g{®Gáz„?)r4   r5   r²  r   r¥  )r]   r×  rµ  r²  r:   r:   r;   Útest_quantile_monotonic_hypow  s    z)TestQuantile.test_quantile_monotonic_hypoc                 C   sZ   t  dddgdddgg¡}t j|d d< t  |d	¡}t  |¡sBt‚tt  |d	¡t jƒ d S )
Nr)  r0  r®   r©   r§   r¨   r   rJ   r§  )r4   r€   rï   r²  rt  rÝ  r   )r]   r^   r¹   r:   r:   r;   Útest_quantile_scalar_nan�  s
    z%TestQuantile.test_quantile_scalar_nanN)rn   ro   rp   r³  ra   r  r%  rx  r´  rE  r‡  r&  r4   r°  r¶  r·  Ú
hypothesisÚgivenr   r´   ÚstZintegersÚfloatsr¿  rÀ  r:   r:   r:   r;   r±    sD   


       ýÿ
 ÿþÿ
r±  c                
   @   sê   e Zd Zejejddddd�ejddddd�ejddddd�ejddddd�d�dd	„ ƒZejejddddd�ejddddd�ejddddd�d
�dd„ ƒZejejddddd�ejddddd�ejddddd�d
�dd„ ƒZ	dd„ Z
dS )ÚTestLerpFr   rJ   )r½  r¼  r¸  r¹  rº  r»  )Út0Út1r^   r{   c                 C   sh   t  |||¡}t  |||¡}||ks,||kr:||ksdt‚n*||k ||k krX||ksdt‚n||ksdt‚d S r3   ©r5  Ú_lerprÝ  )r]   rÆ  rÇ  r^   r{   Zl0Úl1r:   r:   r;   Ú+test_linear_interpolation_formula_monotonic‰  s    	z4TestLerp.test_linear_interpolation_formula_monotonic)Útr^   r{   c                 C   sV   ||kr.|t  |||¡  kr&|ksRn t‚n$|t  |||¡  krL|ksRn t‚d S r3   rÈ  )r]   rÌ  r^   r{   r:   r:   r;   Ú)test_linear_interpolation_formula_bounded›  s    &z2TestLerp.test_linear_interpolation_formula_boundedc                 C   s8   t  ||dd|  ¡}t  ||d| ¡}||ks4t‚d S râ  rÈ  )r]   rÌ  r^   r{   r  r  r:   r:   r;   Ú+test_linear_interpolation_formula_symmetric§  s    z4TestLerp.test_linear_interpolation_formula_symmetricc                 C   s8   t  d¡}t  d¡}t  d¡}t |||¡dks4t‚d S )NrH   rR   rû  gÍÌÌÌÌÌ@)r4   r€   r5  rÉ  rÝ  )r]   r^   r{   rÌ  r:   r:   r;   Ú+test_linear_interpolation_formula_0d_inputs³  s    


z4TestLerp.test_linear_interpolation_formula_0d_inputsN)rn   ro   rp   rÁ  rÂ  rÃ  rÄ  rË  rÍ  rÎ  rÏ  r:   r:   r:   r;   rÅ  ˆ  s^    ÿ ÿ ÿ ÿú

 ÿ ÿ ÿü
 ÿ ÿ ÿü
rÅ  c                   @   s¢   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zej	 
ddddgdejdgejdf¡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 )#Ú
TestMedianc                 C   sH  t  d¡}t  d¡}t  d¡ dd¡}tt  |¡dƒ tt  |¡dƒ tt  |¡dƒ tt j|dd�d	dd
gƒ tt j|dd�ddgƒ tt j|d d�dƒ t  ddddg¡}t|d |d  d t  |¡ƒ t  dddg¡}t|d t  |¡ƒ t  dddg¡}t|d t  |¡ƒ tt  |¡jdƒ t j	|d< tt  |¡jdƒ d S )NrJ   rH   rj   rQ   r§  r¨  r   rr   r’  r=  rF   gð™6-Â¦?gº¤0”¸§?gºÝË}rÂ?g©Á4¯?r§   rV   )
r4   r€   r5   rl   r   Úmedianr   r	   r…   rï   )r]   Úa0r  rH  r^   r:   r:   r;   ra   ¼  s$    

 
zTestMedian.test_basicc                 C   sè   t  ddgddgddgddgg¡}|t jjdd	d
d�fD ]B}| ¡ }t j|d d� t|jƒD ]}t j||d� q\t||ƒ q8t	t j|dd�ddgƒ t	t j|j
dd�ddgƒ t	t  |¡dƒ t	t j|d d�dƒ t	t  |j
¡dƒ d S )NrH   rQ   r   rJ   rj   rk   rF   rR   rú   r  rŒ  rr   r=  )r4   r€   r£  Úrandintrœ   rÑ  r\   r…   r   r   r  )r]   Úa3r^   ÚorigZaxr:   r:   r;   Útest_axis_keywordÒ  s     
ýzTestMedian.test_axis_keywordc                 C   sà  t  ddgddgddgddgg¡}t  d¡}t  d¡}t  d¡ dd¡}tt j| ¡ d	d
�dƒ tt j| ¡ d	d
�dƒ tt j| ¡ d	d
�dƒ tt j| ¡ d	dd�dddgƒ tt j| ¡ d	dd�ddgƒ tt j| ¡ d	d d�dƒ tt j| ¡ d	dd�ddgƒ tt j|j ¡ d	dd�ddgƒ t jdt jd� d¡}t j	 
| ¡ ¡ tt j|d d�t j| ¡ d d	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ d S )NrH   rQ   r   rJ   rj   rk   rF   rR   Tr�  r§  r¨  )r‚  rs   r’  r=  rŠ  rÊ   )rQ   rF   rR   rr   )rs   r‚  )r4   r€   r5   rl   r   rÑ  rœ   r  r³   r£  rš  r›  )r]   rÔ  rÒ  r  rH  Za4r:   r:   r;   Útest_overwrite_keywordä  sV    
ý

ÿ ÿ ÿ ÿÿÿÿÿÿz!TestMedian.test_overwrite_keywordc                 C   sH   dddg}t t |¡dƒ |g}t t |¡dƒ ttj|dd�|ƒ d S )NrJ   rH   rQ   r   rr   )r	   r4   rÑ  r   )r]   rÒ   rŸ  r:   r:   r;   r™    s
    
zTestMedian.test_array_likec                 C   s4   G dd„ dt jƒ}|dddgƒ}tt  |¡dƒ d S )Nc                   @   s    e Zd Zddd„Zddd„ZdS )z,TestMedian.test_subclass.<locals>.MySubClassNc                 S   s   t  |¡ | ¡}||_|S r3   )r4   r  rÄ   Úinfo)ÚclsZinput_arrayrØ  Úobjr:   r:   r;   Ú__new__  s    z4TestMedian.test_subclass.<locals>.MySubClass.__new__c                 S   s   dS )Néùÿÿÿr:   )r]   rs   rµ   r`  r:   r:   r;   r«     s    z1TestMedian.test_subclass.<locals>.MySubClass.mean)N)NNN)rn   ro   rp   rÛ  r«   r:   r:   r:   r;   Ú
MySubClass  s   
rÝ  rJ   rH   rQ   rÜ  )r4   rÃ   r   rÑ  )r]   rÝ  r^   r:   r:   r;   r    s    
zTestMedian.test_subclassr×  r¨   r§   r©   rª   c                 C   s:   G dd„ dt jƒ}t  t  |¡ |¡¡}t||ƒs6t‚dS )z6Check that we return subclasses, even if a NaN scalar.c                   @   s   e Zd ZdS )z-TestMedian.test_subclass2.<locals>.MySubclassNrÁ   r:   r:   r:   r;   Ú
MySubclass  s   rÞ  N)r4   rÃ   rÑ  r€   rÄ   r  rÝ  )r]   r×  rÞ  rÜ   r:   r:   r;   Útest_subclass2  s    zTestMedian.test_subclass2c                 C   sl   t  d¡}t  d¡}tt j|d|d�|ƒ t  d¡}tt j|d|d�|ƒ t  d¡}tt j||d�|ƒ d S )Nr©  rä  r   rp  rm  rJ   r:   )r4   r=   r[   r   rÑ  rª  r:   r:   r;   r«  %  s    



zTestMedian.test_outc              	   C   sœ   t jdd��† t  ddt¡ t d¡}t d¡}tj|d< ttj	|d|d	�|ƒ t d
¡}ttj	|d|d	�|ƒ t d¡}ttj	||d	�|ƒ W 5 Q R X d S )NTrý   rÿ   r   r©  rä  r”  r   rp  rm  rJ   r:   )
r  r  r  r²  r4   r=   r[   rï   r   rÑ  rª  r:   r:   r;   r¬  .  s    




zTestMedian.test_out_nanc                 C   sf  t jdtd�}t j|d< tt  |¡t jƒ tt j|dd�t jƒ t jdtd� ddd¡}t j|d< t j|d	< tt  |¡t jƒ tt  |¡jdƒ t  t jdtd� ddd¡d¡}t j|d
< t j|d< tt  |d¡|ƒ t  t jdtd� ddd¡d¡}t j|d< t j|d< tt  |d¡|ƒ t  t jdtd� ddd¡d¡}t j|d< t j|d< tt  |d¡|ƒ d S )Nr  rÊ   rH   r   rr   rQ   rF   r|  r­  rÊ  re   rJ   r–  rN   )r4   r5   r  rï   r   rÑ  rl   r…   rz   r:   r:   r;   r®  :  s*    


 

 

 

zTestMedian.test_nan_behaviorc              	   C   sZ  t jg td�}tjdd��F}t ddt¡ tt  |¡t j	ƒ t
|d jtkƒ tt|ƒdƒ W 5 Q R X t jg tdd	�}tjdd��8}t ddt¡ tt  |¡t j	ƒ t
|d jtkƒ W 5 Q R X t jg tdd	�}tt j|dd
�|ƒ tt j|dd
�|ƒ t jt j	tdd	�}tjdd��:}t ddt¡ tt j|dd
�|ƒ t
|d jtkƒ W 5 Q R X d S )NrÊ   Trý   rÿ   r   r   rH   rQ   )rµ   r¾  rr   rJ   )r4   r€   r  r  r  r  r²  r   rÑ  rï   r   r  rÝ   )r]   r^   r¸   r{   r:   r:   r;   r³  Z  s&    zTestMedian.test_emptyc                 C   sL   t  d¡}ttt  | t¡¡ƒtƒ t j|d< ttt  | t¡¡ƒtƒ d S )Nr0  rH   )	r4   r5   r   rÅ   rÑ  r²   rç  r  rï   )r]   rG  r:   r:   r;   Útest_objectw  s    

zTestMedian.test_objectc              
   C   s’  t jjdd�}t  |gd ¡}tt j|dd�t  |¡ƒ t  |dd¡}tt j|dd�t  |¡ƒ | dd	¡ ¡ }tt j|d
d�t  |¡ƒ tt j|dd�t j|d d�ƒ tt j|dd�t j|dd�ƒ tt j|dd�t j|dd�ƒ t  	d¡ 
d¡}t j | ¡ ¡ tt j|dd�d t  |d d …d d …d d …df  ¡ ¡ƒ tt j|dd�d	 t  |d d …d d …d	d d …f  ¡ ¡ƒ tt j|dd�d t  |d d …d d …dd d …f  ¡ ¡ƒ tt j|dd�d t  |dd d …d d …d d …f  ¡ ¡ƒ tt j|dd�d t  |dd	d d …d d …f  ¡ ¡ƒ tt j|dd�d t  |dd d …d d …d	f  ¡ ¡ƒ tt j|dd�d t  |dd d …dd d …f  ¡ ¡ƒ d S )Nr‰  rŒ  r›   rW   rr   rV   r   rf   rJ   rd   rI   r�  )rV   rŽ  r�  r‘  r’  rH   r“  r}  r”  r•  r–  rM   )r4   r£  r—  r˜  r   rÑ  r™  r†   rœ   r5   rl   rš  r›  rœ  r�  r:   r:   r;   rž  }  sB    $ÿ$ÿ$ÿ$ÿ ÿ ÿ ÿzTestMedian.test_extended_axisc                 C   sp   t  d¡}tt jt j|dd� tt jt j|dd� tt jt j|dd� tt jt j|dd� ttt j|dd� d S )Nr�  r(  rr   rŸ  rF   r   rO   )r4   r[   r   rv   rÑ  rZ   r  r:   r:   r;   r¡  ›  s    
z%TestMedian.test_extended_axis_invalidc                 C   sž   t  d¡}tt j|d dd�jdƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|d	dd�jd
ƒ tt j|ddd�jdƒ tt j|ddd�jdƒ d S )Nr�  Tr1  r¢  rW   r£  ru   r¤  rÔ   r¥  r¦  r‘  r§  )r4   r[   r   rÑ  r?   r  r:   r:   r;   r¨  £  s&    
ÿÿÿÿÿÿzTestMedian.test_keepdimsN)rn   ro   rp   ra   rÖ  r×  r™  r  r  r%  r&  r4   rï   rß  r«  r¬  r®  r³  rà  rž  r¡  r¨  r:   r:   r:   r;   rÐ  º  s"   !ÿ
	 rÐ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAdd_newdoc_ufuncc                 C   s"   t ttddƒ t tttjdƒ d S )NrH   Zblah)r   r÷   r   rZ   r4   r6   rx   r:   r:   r;   Útest_ufunc_argµ  s    z#TestAdd_newdoc_ufunc.test_ufunc_argc                 C   s   t tttjdƒ d S )NrQ   )r   r÷   r   r4   r6   rx   r:   r:   r;   Útest_string_arg¹  s    z$TestAdd_newdoc_ufunc.test_string_argN)rn   ro   rp   râ  rã  r:   r:   r:   r;   rá  ³  s   rá  c                   @   s\   e Zd Zejjejjdkdd�ejj	e
dd�dd„ ƒƒZejjejjdkdd�dd„ ƒZd	S )
ÚTestAdd_newdocrH   úPython running -OOrY  úPyPy does not modify tp_docc                 C   sV   d}t tjjjjd t|ƒ… |ƒ tttjjj	jƒdkƒ tttj
jjjƒdkƒ d S )Nz"Current flat index into the array.r±  )r   r4   ÚcoreÚflatiterÚindexr'  rÝ   r   ZufuncÚidentityrž  Zindex_tricksZmgrid)r]   rI  r:   r:   r;   Útest_add_doc¿  s    zTestAdd_newdoc.test_add_docc                 C   s2   t jjjj}t  ddd¡ |t jjjjks.t‚d S )Nz
numpy.corerè  )ré  zbad docstring)r4   rç  rè  ré  r'  Z
add_newdocrÝ  )r]   Zprev_docr:   r:   r;   Útest_errors_are_ignoredÈ  s    z&TestAdd_newdoc.test_errors_are_ignoredN)rn   ro   rp   r  r%  rc  r^  r¡   Úoptimizerx  r   rë  rì  r:   r:   r:   r;   rä  ½  s
   rä  c                   @   s\   e Zd Zejjejjdkdd�ejje	dd�dd„ ƒƒZ
ejjejjdkdd�dd„ ƒZd	S )
ÚTestAddDocstringrH   rå  rY  ræ  c                 C   s0   t  t jjt jjj¡ dd„ }t  ||j¡ d S )Nc                   S   s   dS ©Z	docstringNr:   r:   r:   r:   r;   ÚfuncÚ  s    z6TestAddDocstring.test_add_same_docstring.<locals>.func)r4   Úadd_docstringrÃ   Úflatr'  ©r]   rð  r:   r:   r;   Útest_add_same_docstringÔ  s    z(TestAddDocstring.test_add_same_docstringc              	   C   sP   t tƒ� t tjjd¡ W 5 Q R X dd„ }t tƒ� t |d¡ W 5 Q R X d S )Nzdifferent docstringc                   S   s   dS rï  r:   r:   r:   r:   r;   rð  æ  s    z=TestAddDocstring.test_different_docstring_fails.<locals>.func)r   rÎ  r4   rñ  rÃ   rò  ró  r:   r:   r;   Útest_different_docstring_failsà  s
    

z/TestAddDocstring.test_different_docstring_failsN)rn   ro   rp   r  r%  rc  r^  r¡   rí  r   rô  rõ  r:   r:   r:   r;   rî  Ñ  s
   
rî  c                	   @   s6   e Zd Zej dddddddg¡dd	„ ƒZd
d„ ZdS )ÚTestSortComplexztype_in, type_out)ÚlÚD)Úhrž   )ÚHrž   )r{   rž   )rÜ  rž   )r»  ÚGc                 C   sN   t jdddddg|d�}t  |¡}t  |¡ |¡}t||ƒ t|j|jƒ d S )NrR   rQ   rj   rH   rJ   rÊ   )r4   r€   Úsort_complexr¥  r²   r   rµ   )r]   Ztype_inZtype_outr^   r¹   rm  r:   r:   r;   Útest_sort_realð  s
    


zTestSortComplex.test_sort_realc                 C   sR   t jddddgdd�}t jddddgdd�}t  |¡}t||ƒ t|j|jƒ d S )Nr-  y      ð?       ÀrÈ  r.  rø  rÊ   )r4   r€   rü  r   rµ   )r]   r^   rm  r¹   r:   r:   r;   Útest_sort_complex   s
    

z!TestSortComplex.test_sort_complexN)rn   ro   rp   r  r%  r&  rý  rþ  r:   r:   r:   r;   rö  î  s   ú
rö  )r¨   )r¨   rª   )zrK  r  r^  rÏ   Ú	fractionsr   rñ  r  rÁ  Zhypothesis.extra.numpyr   Zhypothesis.strategiesZ
strategiesrÃ  Únumpyr4   r   Znumpy.testingr   r   r   r	   r
   r   r   r   r   r   r   r   Znumpy.lib.function_baserž  Zfunction_baser5  Znumpy.randomr   Z	numpy.libr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r<   rD   rE   rq   r�   r˜   rš   r¦   r×   rü   r'  r-  r.  r3  rJ  rV  rZ  r{  rŒ  rÅ  rÏ  rè  rô  rõ  rö  rQ  rd  ry  r%  r&  r°  r‰  r“  r—  rš  rœ  r¡  r½  rÔ  r×  rÚ  rÛ  rð  rø  r  r>  r±  rÅ  rÐ  rá  rä  rî  rö  r:   r:   r:   r;   Ú<module>   s    8ˆDg#e>o S }A)

   *(U ÿl>[j3nd` C   rl2 z
