U
    ¸mœd_G ã                   @   s@  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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/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZE d dlFmGZG d	d
„ ZHd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 d+d,„ d,ƒZYG d-d.„ d.ƒZZG d/d0„ d0ƒZ[G d1d2„ d2ƒZ\G d3d4„ d4ƒZ]dvd6d7„Z^dwd9d:„Z_G d;d<„ d<ƒZ`G d=d>„ d>ƒZaG d?d@„ d@ƒZbG dAdB„ dBƒZcejd edCdDejfdE  ejfdF  ¡ejd edGd dHdIg¡G dJdK„ dKƒƒƒZgG dLdM„ dMƒZhG dNdO„ dOƒZiG dPdQ„ dQƒZjG dRdS„ dSƒZkG dTdU„ dUƒZlG dVdW„ dWƒZmG dXdY„ dYƒZnG dZd[„ d[ƒZoG d\d]„ d]ƒZpG d^d_„ d_ƒZqG d`da„ daƒZrG dbdc„ dcƒZsG ddde„ deƒZtG dfdg„ dgƒZuG dhdi„ diƒZvG djdk„ dkƒZwG dldm„ dmƒZxG dndo„ doƒZyG dpdq„ dqƒZzG drds„ dsƒZ{G dtdu„ duƒZ|dS )xé    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ÚIS_WASM)Ú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Ú	vectorize)Únormalize_axis_tuplec                 C   s   t  | ¡}t j ||¡}|S ©N)ÚnpÚarangeÚaddÚouter)ÚnÚdata© r<   ú[/home/sam/Atlas/atlas_env/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
    )r6   ÚzerosÚ	broadcastÚshapeÚcomplex_ÚrealÚimag)rC   rD   Úretr<   r<   r=   Ú_make_complex%   s    rF   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é   ©é   rJ   rJ   ©r   é   rJ   ©Úaxes©rJ   rJ   ©r   rJ   ©rL   rL   )éþÿÿÿrL   r   rL   rJ   é   é   éýÿÿÿé   )ÚkrR   éÿÿÿÿ©r   rL   ©rL   r   ©rW   rN   )r   Ú
ValueErrorr+   r6   ÚonesÚranger   )ÚselfÚaÚb1Úb2Zb3Zb4rW   r<   r<   r=   Ú
test_basic1   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   é(   rS   )re   rd   rS   rP   rM   ©r   rX   ©rL   rJ   ©rR   rX   )r6   r]   r   r+   rA   ©r_   r`   r<   r<   r=   Ú	test_axesQ   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é   rI   rJ   rS   é   é   r   rL   rH   rT   rY   rM   rZ   rg   )rJ   r   r[   )r6   r7   Úreshaper   r+   r^   )r_   r`   Z
a_rot90_01Z
a_rot90_12Z
a_rot90_20Z
a_rot90_10rW   r<   r<   r=   Útest_rotation_axesW   sH    ÿÿþÿÿþÿÿþÿÿþÿzTestRot90.test_rotation_axesN)Ú__name__Ú
__module__Ú__qualname__rc   rj   ro   r<   r<   r<   r=   rG   0   s    rG   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 )NrH   rL   ©Úaxis©rH   rH   rJ   rU   ©r   rS   )r   r6   Ú	AxisErrorÚflipr]   ©r_   r<   r<   r=   rj   v   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 )NrH   rX   rL   r   rJ   rS   rT   ©r>   r   r6   ry   ©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 )NrH   rX   r   rL   rJ   rS   rT   r{   r|   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   rL   rJ   rS   rH   rT   rl   rm   ©r6   Úarrayr   ry   r|   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�   r|   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�   r|   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   rJ   rS   rH   rT   r   )	r6   r7   rn   r^   Úndimr   ry   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 )NrL   rJ   rS   rH   rT   rl   r�   r|   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   rL   rJ   rS   rH   rT   rl   rm   r<   rt   rP   rg   r�   ©r_   r`   r}   Úcr<   r<   r=   Útest_multiple_axesÄ   s0    
ÿÿþ
ÿÿþ
ÿÿþzTestFlip.test_multiple_axesN)rp   rq   rr   rj   r~   r   rƒ   r„   r…   rŠ   r‹   rŽ   r<   r<   r<   r=   rs   t   s   

rs   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   rL   )r   r6   Úany©r_   Úy1Úy2Úy3r<   r<   r=   rc   Ý   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   rL   rt   )r   r6   r‘   r   Zsometrue©r_   r“   r<   r<   r=   Útest_ndå   s    zTestAny.test_ndN©rp   rq   rr   rc   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   r6   Úallr‚   r’   r<   r<   r=   rc   î   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   r6   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 )NrL   rJ   rS   rH   é
   )r   r   )r6   r‚   Úcopyr   r   )r_   r`   Úa_copyr<   r<   r=   rc      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 )NrL   rJ   rS   rH   ÚF©Úorder)r6   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 )NrT   F)ZsubokT)r   r]   r   ZisMaskedArrayr6   rž   )r_   Zmxr<   r<   r=   Ú
test_subok  s    
zTestCopy.test_subokN)rp   rq   rr   rc   r¦   r§   r<   r<   r<   r=   rœ   þ   s   rœ   c                   @   s´   e Zd Zdd„ Zej ddddgddgdd	dgd
gdgfdddgdddggddddggddgdddggd	d	d	ggfg¡d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 )NrL   rJ   rS   r   rt   ç       @ç      ð?ç      @ç        rv   rY   rZ   rT   )r6   r‚   r   r   r]   r	   Úmeanr   )r_   r“   r”   r•   Zy4Zy5r<   r<   r=   rc   #  s    


zTestAverage.test_basicz<x, axis, expected_avg, weights, expected_wavg, expected_wsumrL   rJ   rS   Nr©   rH   ç      ü?ç       @rT   rl   é   r   rª   ç      @ç      @ç      #@c           
      C   s¶   t j||dd�}|jt  |¡ks$t‚t||ƒ t j|||dd�}|jt  |¡ksTt‚t||ƒ t j|||ddd�\}}	|jt  |¡ksŠt‚t||ƒ |	jt  |¡ks¨t‚t|	|ƒ d S )NT©ru   Úkeepdims)ru   Úweightsrµ   )ru   r¶   Úreturnedrµ   )r6   r   rA   ÚAssertionErrorr   )
r_   Úxru   Zexpected_avgr¶   Zexpected_wavgZexpected_wsumÚavgZwavgZwsumr<   r<   r=   Útest_basic_keepdims5  s    

ÿ

zTestAverage.test_basic_keepdimsc                 C   sâ  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ƒ t  dddg¡ dd¡}t  ddd	g¡ dd¡}t j||ddd�}t  dddg¡}t||ƒ t j||ddd�}t  dgdgdgg¡}t||ƒ d S )Nr�   ©r¶   rJ   rª   rL   rS   rH   rT   rl   r   )r¶   ru   r«   r±   r²   ç      @F)r¶   ru   rµ   r©   T)r6   r7   r   Úsumr	   r‚   r   r   r   ÚastypeÚfloat32Úfloat64r   ÚdtypeÚresult_typern   )r_   ÚyÚwÚactualZdesiredr“   Úw0Úw1Úw2r•   Zw3r¹   r<   r<   r=   Útest_weightsL  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 )NrL   rJ   rS   rH   rT   rl   T)r·   r½   r   r©   r«   )r¶   ru   r·   rª   )r6   r‚   r   r   r   )r_   rÄ   rº   ZsclrÇ   rÈ   rÉ   r<   r<   r=   Útest_returnedx  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©rp   rq   rr   r<   r<   r<   r=   Úsubclass“  s   rÍ   rL   rJ   rS   rH   r¼   )r6   Úndarrayr‚   Úviewr   Útyper   )r_   rÍ   r`   rÅ   r<   r<   r=   Útest_subclasses’  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Ó   rL   rJ   rS   rH   ©rÂ   r¼   )r6   r‚   r   r   rÂ   )r_   ZtypsÚatÚwtÚrtr`   rÅ   r<   r<   r=   Útest_upcasting›  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)Ú.0r¹   r<   r<   r=   Ú
<listcomp>¤  s     z1TestAverage.test_object_dtype.<locals>.<listcomp>r�   c                 S   s   g | ]}t  d ¡‘qS ©rL   rÚ   )rÝ   Ú_r<   r<   r=   rÞ   ¥  s     r   r¼   )r6   r‚   r^   r¾   r	   r­   r   )r_   r`   rÅ   r<   r<   r=   Útest_object_dtype£  s    zTestAverage.test_object_dtypec                 C   s4   t  tddƒtddƒg¡}tt  |¡tddƒƒ d S )NrL   rT   rS   rJ   )r6   r‚   r   r   r   ri   r<   r<   r=   Ú test_average_class_without_dtype©  s    z,TestAverage.test_average_class_without_dtype)rp   rq   rr   rc   ÚpytestÚmarkÚparametrizer»   rÊ   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 )Ú
TestSelectrL   rJ   rS   rH   rT   rl   rm   rk   é	   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ï   rS   )ÚchoicesÚ
conditionsr   r,   rñ   r   rì   ©r_   rô   rõ   r<   r<   r=   rc   ¼  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 )NTFrL   é   rH   rS   ©rH   rS   r   ró   rß   )	r6   r‚   r7   rn   r   r,   r]   r   rA   ©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¿   r6   Úint8)rÝ   Úchoicer<   r<   r=   rÞ   Ñ  s     z0TestSelect.test_return_dtype.<locals>.<listcomp>rL   rJ   rS   rT   rm   r   )r   r,   rõ   rô   rÂ   r6   rB   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   r\   r,   rz   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¿   r6   Ú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   rL   )r6   r‚   r,   rù   r<   r<   r=   Útest_many_argumentså  s    zTestSelect.test_many_argumentsN)r   )rp   rq   rr   r6   r‚   rô   rõ   rñ   rc   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 )NrL   rJ   rS   r   rX   rç   rm   rk   rÕ   r¬   rª   T©ÚrecordÚalwaysÚ rH   )r   r$   Úslicer6   r‚   rÁ   ÚwarningsÚcatch_warningsÚfilterwarningsÚFutureWarningr   Úcategory)r_   r`   r}   rÅ   r<   r<   r=   rc   î  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 )NrL   rJ   r   rt   rS   rH   é   ©rJ   rS   rH   rX   rR   éüÿÿÿ)r   r$   r6   r‚   r7   Úrepeatrn   ZconcatenateÚTr   rx   )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 )NrL   rJ   r   rt   Únonsense)r6   r‚   rã   Úraisesrx   r$   r  ri   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=   ÚSubClass4  s   r   r�   r   rL   rJ   rR   rX   )	r6   rÎ   r7   rÏ   r   Ú
isinstancer$   r  r‚   ©r_   r   r`   r<   r<   r=   Útest_subclass3  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 )NrL   r   rJ   rS   rH   rT   )r6   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)rL   r`   )rJ   r}   )rS   r�   )Úfoor‰   )ÚbarÚa1rÕ   )rH   r   r   rJ   rS   )r6   r‚   r$   r   rÂ   )r_   r`   Úvalr}   r<   r<   r=   Útest_structured_arrayE  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   rL   rJ   rª   r©   r�   é   rÕ   )rã   r  Ú
IndexErrorr6   r$   r‚   Úfloatrz   r<   r<   r=   Útest_index_floatsO  s    ,zTestInsert.test_index_floatsÚidxrH   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   rL   rJ   rS   rH   )rã   r  r,  r6   r$   )r_   r/  r<   r<   r=   Útest_index_out_of_boundsU  s    z#TestInsert.test_index_out_of_boundsN)rp   rq   rr   rc   r  r  r#  r%  r*  r.  rã   rä   rå   r2  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 )NrS   rH   rT   r�   rU   éûÿÿÿr½   ç      $@ç      "@r²   rk   r«   r©   r   rt   r¯   rL   )r   r6   Zamaxr|   r<   r<   r=   rc   ]  s    þzTestAmax.test_basicN©rp   rq   rr   rc   r<   r<   r<   r=   r3  [  s   r3  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 )NrS   rH   rT   r�   rU   r4  r½   g      Àr6  r5  r²   rk   r«   r©   r   rt   rL   r±   )r   r6   Zaminr|   r<   r<   r=   rc   i  s    þzTestAmin.test_basicNr7  r<   r<   r<   r=   r8  g  s   r8  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 )NrS   rH   rT   r�   rU   r4  r½   r   rt   ç      .@r6  r5  r²   rk   r«   r©   ç      @rX   Tr´   rY   r¯   )r6   r‚   r   Zptpr|   r<   r<   r=   rc   u  s    þzTestPtp.test_basicNr7  r<   r<   r<   r=   r9  s  s   r9  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 )NrL   rJ   r�   r°   rl   rT   rH   rS   rm   rç   rV   r  é   é#   é'   r   rt   rk   é   é   é   é   é   é   )r6   rü   r  Úint16Úuint16Úint32Úuint32rÀ   rÁ   Ú	complex64Ú
complex128r‚   r   Úcumsum)r_   ÚbaÚba2Úctyper`   Úa2Útgtr<   r<   r=   rc   „  s.    "   þ  ÿ  ÿzTestCumsum.test_basicNr7  r<   r<   r<   r=   r<  ‚  s   r<  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 )NrL   rJ   r�   r°   rl   rT   rH   rS   rm   rç   ©Ú1r}   r   rt   é g  rd   é$   éT   é´   rX   r  éb  éX  )r6   rF  rG  rH  rI  rÀ   rÁ   rJ  rK  r‚   r   ÚArithmeticErrorÚprodr   r   ©r_   rM  rN  rO  r`   rP  r<   r<   r=   rc   ›  s(    "   ÿÿÿzTestProd.test_basicNr7  r<   r<   r<   r=   rR  ™  s   rR  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 ) NrL   rJ   r�   r°   rl   rT   rH   rS   rm   rç   rS  rX   rt   r+  éÜ   i(  iÈ  rU  r   r÷   é   rV  rd   rW  rX  r  r=  éÒ   rY  r†   rZ  )r6   rF  rG  rH  rI  rÀ   rÁ   rJ  rK  r‚   r   r[  Zcumprodr   r]  r<   r<   r=   rc   ¯  sN    "   ÿ  ÿÿÿ

þþÿ

þþÿzTestCumprod.test_basicNr7  r<   r<   r<   r=   r^  ­  s   r^  c                   @   sL   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dS )Ú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 )NrL   rH   rl   rm   r÷   rS   rJ   rT   rX   r   ©r:   çš™™™™™ñ?çš™™™™™@r«   gš™™™™™É¿çš™™™™™¹¿gš™™™™™é?gš™™™™™	Àçš™™™™™¹?TF)r6   r‚   r   r   r	   )r_   r¹   ÚoutÚout2Úout3r<   r<   r=   rc   Ê  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+  r=  rL   rJ   )r�   é   r=  rX   )r�   r+  é   rt   r   )rç   r+  r=  rR   rS   r  gæÇqÇñ?)
r6   r?   r]   r   r   r   rx   r‚   rÁ   r\   )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�   r=  rL   rX   rJ   rc  r   rt   )r:   ru   )r   r   r   )r_   r¹   Zout1ri  rj  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 )
NrS   rX   rc  c                    s   g | ]}t ˆ |d �‘qS )rc  )r   )rÝ   r:   ©r¹   r<   r=   rÞ   û  s     z#TestDiff.test_n.<locals>.<listcomp>rL   rT   r   ©Ústart)Úlistr^   r   r\   r   r   Ú	enumeraterí   rÐ   r6   rÎ   r   r   rÂ   r  rì   Úmax)r_   rð   Úexpectedr:   rh  r<   ro  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Õ   rL   útimedelta64[D]r   rS   rp  rc  )
r6   r7   Z
datetime64r‚   Úextendrs  r   r   r   rÂ   )r_   r¹   ru  r:   rm  rh  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 )NrL   rJ   rS   rH   rT   rl   rm   rk   rç   r�   FT©Úmaskrc  )r   r‚   r   r   r;   r{  r   rÐ   )r_   r¹   rh  rj  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 )NrT   rL   r   )ÚprependrX   rl   rH   rJ   )ru   r|  ©rS   rS   rS   )r|  ru   )r6   r7   r   r   r]   rL  rn   r   r\   r?   rx   ©r_   r¹   Úresultru  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 )NrT   r   )ÚappendrL   r  rJ   rH   )ru   r�  rX   rU   rR   r}  rS   )r�  ru   )	r6   r7   r   r   rn   r   r\   r?   rx   r~  r<   r<   r=   Útest_append7  s,    








zTestDiff.test_appendN)rp   rq   rr   rc   rn  r˜   rv  ry  r#  r€  r‚  r<   r<   r<   r=   rb  È  s   rb  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ej de dg¡dgg¡dd„ ƒZdd„ ZdS )Ú
TestDeletec                 C   s,   t  d¡| _t  d¡ d¡ ddd¡| _d S )NrT   rJ   rL   )r6   r7   r`   r  rn   Únd_arz   r<   r<   r=   Úsetup_methodV  s    zTestDelete.setup_methodc                 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 )NrL   rt   zDelete failed for obj: %r)Úerr_msgr   )r   r`   r„  r   r-   )r_   ÚindicesÚa_delÚnd_a_delÚmsgÚxorr<   r<   r=   Ú_check_inverse_of_slicingZ  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éúÿÿÿrR   r   rL   rJ   rH   rT   rU   rX   rS   )r  rŒ  )r_   ZlimsZstepsrq  ÚstopÚstepÚsr<   r<   r=   Útest_slicesc  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   rL   rJ   r	  iœÿÿÿrX   TFrH   )	rŒ  r6   r‚   rã   r  r,  r   r`   r\   rz   r<   r<   r=   Ú
test_fancyl  s    zTestDelete.test_fancyc                 C   s   |   d¡ |   d¡ d S )Nr   r  )rŒ  rz   r<   r<   r=   Útest_single�  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 )NrL   r   rt   r  )r6   r‚   rã   r  rx   r   r  ri   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   �  s   r   r   rL   rJ   rR   )r6   rÎ   r`   rÏ   r   r!  r   r  r"  r<   r<   r=   r#  Œ  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�   rJ   rT   r    r¡   é<   rL   rt   )	r6   r7   rn   r   r  r   r£   r¤   r¥   )r_   rW   rë   r<   r<   r=   Útest_array_order_preserve–  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   rL   rJ   rª   r©   rÕ   )rã   r  r,  r6   r   r‚   r-  rz   r<   r<   r=   r.     s    &zTestDelete.test_index_floatsÚindexerrL   c                 C   sX   t | jdƒ}t | j|ƒ}t||ƒ t | jddd�}t | jt dg¡dd�}t||ƒ d S )NrL   rt   )r   r`   r   r„  r6   r‚   )r_   r–  Z	a_del_intrˆ  Znd_a_del_intr‰  r<   r<   r=   Útest_single_item_array¦  s    
z!TestDelete.test_single_item_arrayc              	   C   sú   t t d¡t dg¡ƒ}t|t d¡ƒ t d¡}tjdgtd�}tjdgtd�}t ||dd�}t||ƒ t ||dd�}t||d d …d d…f ƒ t t¡�" t t d	¡tjdgt	d�ƒ W 5 Q R X t t¡�" t t d	¡tjdgd
d�ƒ W 5 Q R X d S )NrL   F)rS   rL   rÕ   TrX   rt   r   rJ   zm8[ns])
r   r6   r]   r‚   r   Úboolrã   r  r,  Úobject)r_   Úresr¹   Z
false_maskZ	true_maskr<   r<   r=   Útest_single_item_array_non_int°  s    

&z)TestDelete.test_single_item_array_non_intN)rp   rq   rr   r…  rŒ  r‘  r’  r“  r  r#  r•  r.  rã   rä   rå   r6   r‚   r—  r›  r<   r<   r<   r=   rƒ  T  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 )NrL   rS   rH   r©   r«   r¬   rª   )r6   r‚   r   r    ©r_   Úvr¹   Údxr<   r<   r=   rc   Ë  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 )NrT   rª   r©   r²   r6  ç      &@é   r«   ç      ø?rJ   rL   rt   z.*scalars or 1drX   )
r6   rL  r]   r7   rn   r    r‚   r   r\   Ú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¡  rT   rJ   rL   rY   rt   )	r6   r7   rn   rL  r]   r   r\   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Õ   r4  rU   r   é   é=   iŒ  iÛ  rw  ©r6   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 )NrL   rS   rH   Frz  r   rT   rJ   ©Ú
edge_orderT)r6   r   r‚   r    r   rÐ   r   Z_maskr7   Úmaskedr   r{  )r_   r¹   rh  Ú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   rL   r�   rJ   rS   rH   rl   rk   r¬  g¸…ëQ¸ž?T)	r6   Ú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²   )rl   rL   rX   rL   r¬   ç      à?rª   r;  r½   r¢  ç      @ç      à¿g333333û?ç      Ð?g      Ð¿rJ   rY   )ru   r­  rZ   )r6   r‚   Ztilern   r7   r    r   r	   r  r   rA   )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 )NrL   rS   rH   r©   r«   r¬   rª   r   rt   rX   rZ   rJ   rU   )r6   r‚   r   r    r	   r   r  rx   r�  r<   r<   r=   Útest_specific_axesk  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 )Nr4  rU   r�   r÷   r¨  iA  é,  rw  rÕ   rJ   rm   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 )NrL   rJ   rS   rÕ   )	r6   Úfloat16rÀ   rÁ   r‚   r   r    rÂ   r   )r_   Údtr¹   r<   r<   r=   Útest_inexact_dtypes�  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 )NrJ   rL   r¬  rS   r   )r    r6   r7   r   r\   rz   r<   r<   r=   Útest_values–  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 )NrT   rH   rS   rJ   rL   rÕ   rX   ©r6   r‚   r    r   rì   )r_   rÉ  r»  Úgr<   r<   r=   Útest_f_decreasing_unsigned_int¢  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 )NrL   rS   rX   rÕ   rJ   )r6   Úiinfort  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 )NrS   rJ   rL   rÕ   r   rH   rR   rÊ  )r_   rÑ  r¹   r»  rÏ  r<   r<   r=   Útest_x_decreasing_unsigned²  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 )NrX   rÕ   rJ   r   r·  )r6   rÍ  Úminrt  r‚   r    r   )r_   rÑ  ZminintrÎ  r¹   r»  rÏ  r<   r<   r=   Útest_x_signed_int_big_jumpº  s    
z'TestGradient.test_x_signed_int_big_jumpN)rp   rq   rr   rc   r¥  r¦  r«  r°  r¶  r¿  rÀ  rÄ  rÇ  rÈ  rã   rä   rå   r6   r  rG  rI  Zuint64rÌ  rü   rF  rH  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ù      ð?      @rJ   r©   rû   rL   rX   ù       €      ð¿ù      ð?      Ày      ð¿      @r«   rª   r   T)ÚdegrX  r°   )r6   Úsqrtr   ÚarctanÚpir‚   r
   )r_   r¹   rÄ   ZyoÚzZzor<   r<   r=   rc   Ç  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Ö  rL   rJ   ù      ð?      ð?r«   r   rª   )
r6   r   r‚   rÚ  r®  rÛ  r   r   rÐ   r{  )r_   r¹   ru  rÆ   r<   r<   r=   r#  Ô  s     zTestAngle.test_subclassN)rp   rq   rr   rc   r#  r<   r<   r<   r=   rÕ  Å  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   rL   rJ   rS   rH   c                    s   d}‡ fdd„|D ƒS )N)r`   r}   r�   r   c                 3   s   | ]}t ˆ |ƒV  qd S r5   )Úgetattr)rÝ   Únamerz   r<   r=   Ú	<genexpr>è  s     z'TestTrimZeros.values.<locals>.<genexpr>r<   )r_   Z
attr_namesr<   rz   r=   rî   æ  s    zTestTrimZeros.valuesc                 C   s6   t jdd… }|  ¡ D ]}t|ƒ}t||| ƒ qd S )NrJ   rX   ©r6   Ús_rî   r0   r   ©r_   ÚslcÚarrrš  r<   r<   r=   rc   ê  s    zTestTrimZeros.test_basicc                 C   s:   t jd d… }|  ¡ D ]}t|dd�}t||| ƒ qd S )NrX   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 )NrJ   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î   r6   Z
zeros_likerÂ   r0   rì   r¸   )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  )r6   r?   r0   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 )NrL   rJ   )r6   rä  r0   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 ©NrL   )r6   r‚   r0   r   rí  r<   r<   r=   Útest_no_trim  s    zTestTrimZeros.test_no_trimc                 C   s    t | j ¡ ƒ}t|tƒst‚d S r5   )r0   r`   Útolistr!  rr  r¸   )r_   rš  r<   r<   r=   Útest_list_to_list  s    zTestTrimZeros.test_list_to_listN)rp   rq   rr   r6   r‚   r`   r¿   r-  r}   Úcomplexr�   r™  r   rî   rc   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 )NrL   rS   rJ   )r6   r‚   r   r   r|   r<   r<   r=   rc   "  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 )NrL   rJ   rS   TFr   rH   rT   rk   rm   rl   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>6  ó    z'TestExtins.test_place.<locals>.<lambda>Z12Z34Ú9)
r   r  r*   r6   r‚   r   r?   r7   r   r\   rz   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`   r{  Úacr�   r<   r<   r=   Ú	test_both=  s    
zTestExtins.test_bothN)rp   rq   rr   rc   rú  rü  r<   r<   r<   r=   rõ     s   rõ  rª   c                 C   s   |t  | ¡ S r5   ©ÚmathÚfloor©r¹   rÄ   r<   r<   r=   Ú_foo1I  s    r  r¬   c                 C   s   |t  | ¡ | S r5   rý  )r¹   rÄ   rÝ  r<   r<   r=   Ú_foo2M  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 r5   r<   ©r`   r}   r<   r<   r=   ÚaddsubtractT  s    z.TestVectorize.test_simple.<locals>.addsubtractr   rS   rl   rç   rL   rT   rm   rJ   ©r3   r   ©r_   r  r»  r  r<   r<   r=   Útest_simpleS  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 r5   r<   r  r<   r<   r=   r  _  s    z.TestVectorize.test_scalar.<locals>.addsubtractr   rS   rl   rç   rT   rk   rL   rH   r  r  r<   r<   r=   Útest_scalar^  s    zTestVectorize.test_scalarc                 C   s0   t  ddd¡}tdd„ ƒ}||ƒ}t||ƒ d S )NrU   rJ   i'  c                 S   s   | S r5   r<   ro  r<   r<   r=   r÷  k  rø  z*TestVectorize.test_large.<locals>.<lambda>)r6   r±  r3   r   )r_   r¹   r»  rÄ   r<   r<   r=   Ú
test_largei  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¢  rJ   )r3   rþ  Úcosr6   r‚   rÜ  r
   )r_   r»  ÚargsÚr1Úr2r<   r<   r=   Ú
test_ufunco  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 )	NrL   c                 S   s   | | S r5   r<   r  r<   r<   r=   r&  x  s    z(TestVectorize.test_keywords.<locals>.foorJ   rS   rH   rT   )rL   ©r3   r6   r‚   r   ©r_   r&  r»  r  r  r  r<   r<   r=   Útest_keywordsv  s    


zTestVectorize.test_keywordsc                 C   s:   t ttgd�}|t d¡dƒ}|t d¡ƒ}t||ƒ d S ©N©Úotypesr«   rª   ©r3   r  r-  r6   r7   r   ©r_   r»  r  r  r<   r<   r=   Ú test_keywords_with_otypes_order1„  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_order2Ž  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_order3™  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Ý  rX   r  ©r3   r  r-  r   r  r<   r<   r=   Ú+test_keywords_with_otypes_several_kwd_args1¥  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  rX   )rÝ  r¹   rÄ   rL   rJ   rS   r  r  r<   r<   r=   Ú+test_keywords_with_otypes_several_kwd_args2²  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³  r3   Ú	randrangeÚ	Exceptionr¸   )r_   r³  r<   r<   r=   Útest_keywords_no_func_code½  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 )NrL   c                 S   s   | | S r5   r<   r  r<   r<   r=   r&  Ê  s    z5TestVectorize.test_keywords2_ticket_2100.<locals>.foorJ   rS   rö  rH   )r}   r`   ©r}   rT   )rL   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  )rr  Úpop)r¹   ÚpÚ_prš  r<   r<   r=   Ú	mypolyvalÚ  s
    
z;TestVectorize.test_keywords3_ticket_2100.<locals>.mypolyvalr'  rL   )ÚexcludedrS   rl   r   rJ   )r¹   r'  )r'  )r6   r3   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>.frL   rJ   rS   rH   r  rk   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 r5   )r6   r\  )rž  r<   r<   r=   r»  ô  s    z3TestVectorize.test_keywords5_ticket_2100.<locals>.frL   rJ   rS   rH   rk   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>.foorL   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<   ro  r<   r<   r=   r&    s    z3TestVectorize.test_assigning_docstring.<locals>.foozProvided documentation)Údoc)r3   r   Ú__doc__)r_   r&  r»  r3  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>.FoorJ   c                 S   s
   || j  S r5   r$  ri   r<   r<   r=   r'    s    z=TestVectorize.test_UnboundMethod_ticket_1156.<locals>.Foo.barN)rp   rq   rr   r}   r'  r<   r<   r<   r=   ÚFoo  s   r6  rç   rJ   )r   r3   r'  r6   r7   )r_   r6  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 r5   r<   ro  r<   r<   r=   r÷    rø  z@TestVectorize.test_execution_order_ticket_1487.<locals>.<lambda>rS   rg  c                 S   s   | S r5   r<   ro  r<   r<   r=   r÷    rø  )r3   r6   r7   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 r5   r<   ro  r<   r<   r=   r÷  '  rø  z7TestVectorize.test_string_ticket_1892.<locals>.<lambda>Zd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789)r6   r3   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   rL   rJ   r<   ro  ©Z_callsr<   r=   r»  /  s    z#TestVectorize.test_cache.<locals>.fTrT   )r3   Úcacher6   r7   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 r5   r<   ro  r<   r<   r=   r÷  :  rø  z+TestVectorize.test_otypes.<locals>.<lambda>r‰   rT   )r6   r3   r  r7   r   r>  r<   r<   r=   Útest_otypes9  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)->()ro  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   r\   rz   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 r5   r<   r  r<   r<   r=   r  b  s    z8TestVectorize.test_signature_simple.<locals>.addsubtractz	(),()->()©Ú	signaturer   rS   rl   rç   rL   rT   rm   rJ   r  r  r<   r<   r=   Útest_signature_simplea  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 r5   ©r­   rö  r<   r<   r=   r­   m  s    z4TestVectorize.test_signature_mean_last.<locals>.meanz(n)->()rD  rL   rS   rJ   rH   r  )r_   r­   r»  r  r<   r<   r=   Útest_signature_mean_lastl  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 r5   rG  rö  r<   r<   r=   Úcenteru  s    z3TestVectorize.test_signature_center.<locals>.centerú(n)->(n)rD  rL   rS   rJ   rH   rX   r  )r_   rI  r»  r  r<   r<   r=   Útest_signature_centert  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 r5   r<   ro  r<   r<   r=   r÷  }  rø  z:TestVectorize.test_signature_two_outputs.<locals>.<lambda>ú	()->(),()rD  rL   rJ   rS   r   )r3   r   r!  Útuplerì   r   ©r_   r»  r  r<   r<   r=   Útest_signature_two_outputs|  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)rD  rL   rJ   rS   rH   rl   r   )r3   r6   r9   r   rN  r<   r<   r=   Útest_signature_outerƒ  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 ©NrX   r<   ro  r<   r<   r=   r÷  ”  rø  z<TestVectorize.test_signature_computed_size.<locals>.<lambda>z(n)->(m)rD  rL   rJ   rS   rH   r  rN  r<   r<   r=   Útest_signature_computed_size“  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 )NrL   c                 S   s   | | S r5   r<   r  r<   r<   r=   r&  �  s    z2TestVectorize.test_signature_excluded.<locals>.fooú()->()r}   )rE  r*  rJ   rS   rH   r   r$  )rL   r  r1  r<   r<   r=   Útest_signature_excluded›  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 r5   r<   ro  r<   r<   r=   r÷  ¥  rø  z5TestVectorize.test_signature_otypes.<locals>.<lambda>rJ  rÁ   ©rE  r  rL   rJ   rS   )r3   r   rÂ   r6   r   rN  r<   r<   r=   Útest_signature_otypes¤  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)rD  zwrong number of positionalrL   rJ   zdoes not have enough dimensionsú$inconsistent size for core dimensionrS   rS  )r3   Úoperatorr8   r   r  r\   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 rQ  r<   ro  r<   r<   r=   r÷  »  rø  z>TestVectorize.test_signature_invalid_outputs.<locals>.<lambda>rJ  rD  rW  rL   rJ   rS   c                 S   s   | S r5   r<   ro  r<   r<   r=   r÷  À  rø  rL  zwrong number of outputsc                 S   s   | | fS r5   r<   ro  r<   r<   r=   r÷  Ä  rø  rS  )r3   r   r\   r.  r<   r<   r=   Útest_signature_invalid_outputs¹  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 r5   r<   ro  r<   r<   r=   r÷  Ê  rø  z5TestVectorize.test_size_zero_output.<locals>.<lambda>r   rT   rÕ   r  r‰   c                 S   s   | S r5   r<   ro  r<   r<   r=   r÷  Ò  rø  rS  rD  c                 S   s   | S r5   r<   ro  r<   r<   r=   r÷  Ö  rø  rU  c                 S   s   | S r5   r<   ro  r<   r<   r=   r÷  Ù  rø  rJ  c                 S   s   | S r5   r<   ro  r<   r<   r=   r÷  Ü  rø  c                 S   s   | gS r5   r<   ro  r<   r<   r=   r÷  ß  rø  z()->(n)znew output dimensions)	r6   r3   r?   Úintr   r\   r  r   r  r>  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½   r;  r¯   r6  z(m,m),(m)->(m)rD  c                 S   s   | | S r5   r<   r   r<   r<   r=   r÷  ò  rø  z/TestVectorize.test_subclasses.<locals>.<lambda>)r6   rÎ   r‚   rÏ   r3   Úmatmulr   rÐ   )r_   rÍ   rë   rž  Zmatvecr  Zmultr<   r<   r=   rÑ   ã  s     þþ(
"
zTestVectorize.test_subclassesN)&rp   rq   rr   r  r	  r
  r  r  r  r  r  r  r   r#  r%  r+  r/  r0  r2  r5  r7  r:  r;  r?  r@  rC  rF  rH  rK  rO  rP  rR  rT  rV  rY  rZ  r\  rÑ   r<   r<   r<   r=   r  Q  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)rp   rq   rr   Úitersr`  Ústaticmethodra  r<   r<   r<   r=   ÚAù  s   rd  úPython lacks refcounts©Úreasonz
name, incrr`  )ra  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   rL   r�   rT   )Úgcrà  rd  ÚdisableÚenableÚsysÚgetrefcountr^   rb  r6   Z
frompyfuncr»  r7   r   Zcollect)	r_   rá  Úincrrh  ZA_funcÚrefcountr‰   r`   rh  r<   r<   r=   Útest_frompyfunc_leaks  s    

zTestLeaks.test_frompyfunc_leaksN)rp   rq   rr   rd  rã   rä   Úskipifr   rå   rb  ro  r<   r<   r<   r=   r^  ø  s   
þr^  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�  rT   r4  r°   ©r6   r7   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 )NrT   r�  rX   r4  r°   rr  rs  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   r6   r±  rÓ  rt  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 )NrL   rT   rH   r�   rk   r°   r   rJ   rS   T)r   r   )r_   r¹   rt  Zdefault_answerZright_answerr<   r<   r=   Útest_right_basic2  s    
zTestDigitize.test_right_basicc                 C   s4   t  dd¡}t  dd¡}tt||dƒt  d¡ƒ d S )Nr�  rT   rH   Tr°   rr  rs  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 )NrT   r�  rX   rH   Tr°   rr  rs  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�   Trw  rs  r<   r<   r=   Útest_right_open_randomD  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 )	NrX   r   rL   rJ   FrS   TrH   )r   r   r   r\   rs  r<   r<   r=   Útest_monotonicI  s    

zTestDigitize.test_monotonicc                 C   s>   dddg}dddg}t tt||ƒ || }}t tt||ƒ d S )NrL   rJ   y      @      ð?rS   )r   r  r   rs  r<   r<   r=   Útest_casting_errorY  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=   rd  b  s   rd  rT   rL   rS   FT)r6   rÎ   r7   rÏ   r   r!  r   )r_   rd  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          rL   ©r   r6   r   r$  r<   r<   r=   Útest_large_integers_increasingi  s    z+TestDigitize.test_large_integers_increasingz8gh-11022: np.core.multiarray._monoticity loses precisionrf  c                 C   s&   d}t t ||d |d g¡dƒ d S r�  r‚  r$  r<   r<   r=   Útest_large_integers_decreasingn  s    z+TestDigitize.test_large_integers_decreasingN)rp   rq   rr   ru  rv  ry  rz  r{  r|  r}  r~  r  r€  rƒ  rã   rä   Úxfailr„  r<   r<   r<   r=   rq  !  s   	ÿrq  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 )NrL   rJ   r�   r	  )r   r1   r6   rÜ  r   r›   r   r   rz   r<   r<   r=   r  x  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 )NrL   i  éÿ   ©ÚperiodrJ   r�   éè  r   éK   é–   éá   rÁ  i®  éú   rX  éŒ   )r‰  Zdiscont)r   r1   r   r6   r›   r   r   r‚   ÚmodrÂ   r¸   )r_   Z
simple_seqZwrap_seqZ
uneven_seqZwrap_unevenZ
no_discontZ
sm_discontr<   r<   r=   Útest_period~  s    &zTestUnwrap.test_periodN)rp   rq   rr   r  r‘  r<   r<   r<   r=   r†  v  s   r†  rÂ   ÚOÚ
AllIntegerÚFloatÚMrL   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’  rL   r   rt   ç      @rH   )r6   r‚   r"   rÁ   rÃ   rÂ   r¸   r   r   r   r]   r	   r¾   ©r_   rÂ   r•  ZscalarrÅ   Z	ref_dtyper<   r<   r=   Útest_hanning—  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’  rL   r   rt   gÃõ(\�Â@rH   )r6   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’  rL   r   rt   gž^)ËÇ@rH   )r6   r‚   r   rÁ   rÃ   rÂ   r¸   r   r   r   r]   r	   r¾   r™  r<   r<   r=   Útest_bartlettÁ  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’  rL   r   rt   g=
×£p=@rH   )r6   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’  rL   rt   r�   rò   )r6   r‚   r&   rÁ   rÃ   rÂ   r¸   r   r   r   r]   r	   r¾   r™  r<   r<   r=   Útest_kaiserë  s    
zTestFilterwindows.test_kaiser)
rp   rq   rr   Ústrr[  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 )Ú	TestTrapzc                 C   sH   t  ddd¡}tt  d|d  ¡t  dt j ¡ dd�}t|ddƒ d S )	Néöÿÿÿr�   rg  r¹  rJ   )rŸ  rL   rm   )r6   r7   r/   rm  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   rL   rS   rJ   rk   rV   rX   rt   )r¹   ru   )r6   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 )NrT   rJ   rz  g      *@)r6   r7   r   r‚   r	   r/   )r_   r¹   rÄ   r{  Zymr  Zxmr<   r<   r=   r°  .  s    
zTestTrapz.test_maskedN)rp   rq   rr   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   rL   rX   r	  rm   )r   r.   r6   r±  r
   r   ©r_   rÅ   r<   r<   r=   r  A  s    zTestSinc.test_simplec                 C   sF   ddg}t t |¡ƒ}t t|ƒƒ}t t|ƒƒ}t||ƒ t||ƒ d S )Nr   r·  )r.   r6   r‚   rr  rM  r   )r_   r¹   r“   r”   r•   r<   r<   r=   Útest_array_likeG  s    
zTestSinc.test_array_likeN)rp   rq   rr   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 )NrH   rS   rJ   rL   r   ZwidgetZhamr&  r'  y      @      @rÞ  y      ð?      $@r�   )r6   r‚   r   r›   r2   r$  r<   r<   r=   r  R  s     (zTestUnique.test_simpleN©rp   rq   rr   r  r<   r<   r<   r=   r§  P  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 )NrL   rJ   rS   )r6   Úinfrþ   ÚlibÚasarray_chkfiniter   r\   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 )NrL   rJ   rS   r    )r¢   rÂ   )r6   r«  r¬  rÁ   r   rÂ   ri   r<   r<   r=   Útest_dtype_orderf  s    
z TestCheckFinite.test_dtype_orderN)rp   rq   rr   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   rL   rª   ç      ð¿)r	   r6   r   rz   r<   r<   r=   Útest_non_array‚  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   rd  r	   r¼  r   r6   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  rX   ©ZddofrS   )r   r  Úsimplefilterr   ÚDeprecationWarningr   rd  Úfilterr	   r¼  rë  r½  ©r_   Úsupr<   r<   r=   Ú	test_ddof�  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  rL   r   )Zbias)r   r  r²  r   r³  r   rd  rë  r´  r	   r¼  rµ  r<   r<   r=   Ú	test_bias›  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 ©	NrL   rJ   rS   rû   ù               @r  rª   r×  )r6   r‚   r   r   r   r›   r²  )r_   r¹   rš  rQ  r<   r<   r=   Útest_complex¥  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¹  )r6   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   rJ   )
r  r  r²  ÚRuntimeWarningr   r   r6   r‚   rþ   rn   rz   r<   r<   r=   Ú
test_empty±  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¯  )r6   Zerrstater   r
   r‚   r   r›   r²  )r_   r¹   r�   r<   r<   r=   Útest_extremeº  s
    zTestCorrCoef.test_extremeÚ	test_typec                 C   s*   | j  |¡}t||d�}||jks&t‚d S ©NrÕ   )rd  r¿   r   rÂ   r¸   )r_   rÃ  Zcast_Arš  r<   r<   r=   Útest_corrcoef_dtypeÁ  s    z TestCorrCoef.test_corrcoef_dtypeN)rp   rq   rr   r6   r‚   rd  rë  r¼  r½  r°  r  r·  r¸  r»  r½  rÀ  rÂ  rã   rä   rå   ÚhalfÚsingleÚdoubleÚ
longdoublerÅ  r<   r<   r<   r=   r®  m  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   rJ   rL   rª   r¯  r¬   r©   )ÚndminrH   çš™™™™™Ù?gš™™™™™Ù¿rS   rÕ   r±   gUUUUUUå?gUUUUUUå¿g&S£’:Ù?gÒo_Îã?g#Ûù~j¼è?g”‡…ZÓ¼ï?gÎQÚ|é?c                 C   s   t t| jƒ| jƒ d S r5   )r   r   Úx1r¼  rz   r<   r<   r=   rc   Õ  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 )
NrL   rJ   rS   rû   rº  r  rª   r×  ©Úaweights)r6   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¹  )r6   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   r6   r‚   rþ   rn   rz   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  rT   r±  )
r  r  r²  r¿  r   r   rÍ  r6   r‚   rª  rz   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   Úx3r6   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 )NrL   r±  )r   r   rÑ  r6   Úvarrz   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·  ©rJ   rS   rÕ   rJ   rX   rS   )r   r   r¯  ÚfrequenciesÚ
x2_repeatsrÍ  r½  Úunit_frequenciesr¼  r   r  r6   r]   r  ÚRuntimeErrorr\   )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×  rJ   r¯  rS   )r   r   rÍ  r¶   r¾  Úunit_weightsr¼  r6   r]   r   rÛ  r\   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¾  rz   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)%rp   rq   rr   r6   r‚   r  rÍ  r¼  r¯  rØ  rÙ  r½  r]   r  rÚ  r¶   r¾  rÝ  rÑ  rc   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?Û�?r5  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#   r6   r‚   r   rA   r   )r_   rd  ru  rë  Zi0_0r<   r<   r=   r  4	  s4    þ
ü
üþzTest_I0.test_simplec                    sV   t  d¡‰ G ‡ fdd„dƒ}tt  |ƒ ¡|ƒs2t‚t  ˆ ¡}t  |ƒ ¡}t||ƒ d S )NrH   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 r5   r<   )r_   rç  r<   r<   r=   Ú__array_wrap__V	  s    z9Test_I0.test_non_array.<locals>.array_like.__array_wrap__N)rp   rq   rr   Z__array_interface__râ  r<   rö  r<   r=   Ú
array_likeS	  s   rã  )r6   r7   r!  r²  r¸   r#   r   )r_   rã  rm  rš  r<   rö  r=   r°  P	  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 valuesr0  )r6   r‚   rã   r  r  r#   )r_   r`   rš  r<   r<   r=   r»  `	  s    zTest_I0.test_complexN)rp   rq   rr   r  r°  r»  r<   r<   r<   r=   rá  2	  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 )NrL   rª   r   rJ   g ˆöoFé?rT   gÀvT¶=î?gg›Óù?gø†„½¦â?g÷�ñY…Jì?)r   r6   Úisfiniter&   r	   r‚   rz   r<   r<   r=   r  h	  s&    
ÿ
ÿ

 ÿÿ

 ÿÿzTestKaiser.test_simplec                 C   s   t ddƒ d S )NrS   rH   )r&   rz   r<   r<   r=   Útest_int_betau	  s    zTestKaiser.test_int_betaN)rp   rq   rr   r  ræ  r<   r<   r<   r=   rä  f	  s   rä  c                   @   s   e Zd Zdd„ ZdS )Ú	TestMsortc              
   C   sl   t  dddgdddgddd	gg¡}tjtd
d��2 tt|ƒt  ddd	gdddgdddgg¡ƒ W 5 Q R X d S )Ngî\é…Ü?gb¥ÝCQé?g×”�s‘á?gwøˆ‹”×?g¥¹klã×?gø*dtaÀî?gÐèÓ¯Áä?g6Hœòïà?gÜ˜C÷Ù?zmsort is deprecatedr0  )r6   r‚   rã   Zwarnsr³  r	   r(   )r_   rd  r<   r<   r=   r  {	  s    þþþzTestMsort.test_simpleNr¨  r<   r<   r<   r=   rç  y	  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 )NrL   rJ   rS   rH   rT   rl   rm   ©r'   r   r6   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 )NrL   rJ   rS   rH   ré  )r_   rë  r<   r<   r=   Útest_single_input”	  s    zTestMeshgrid.test_single_inputc                 C   s*   g }t g t|Ž ƒ t g t|ddiŽƒ d S )Nrž   F)r   r'   r_  r<   r<   r=   Útest_no_input˜	  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 )NrL   rJ   rS   rH   rT   rl   rm   Úij©Zindexingrk   rç   r   rø   ©rS   rH   )rH   rS   rJ   )rS   rH   rJ   Znotvalid)r'   r   r6   r‚   r   rA   r   r\   )r_   r¹   rÄ   rë  rì  rÝ  r<   r<   r=   Útest_indexing�	  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 )
NrL   rJ   rS   rH   rT   rl   rm   T©Úsparseré  rê  r<   r<   r=   Útest_sparse±	  s     zTestMeshgrid.test_sparsec                 C   s$   t ttdddgddddgdd	� d S )
NrL   rJ   rS   rH   rT   rl   rm   rï  )r‡  )r   r  r'   rz   r<   r<   r=   Útest_invalid_arguments¶	  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ó  )r6   r7   rÀ   rÁ   r'   r   rÂ   )r_   r¹   rÄ   rë  rì  r<   r<   r=   r€  ½	  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 )
Nrd  re  gffffff
@gš™™™™™@FT)rô  rž   r   rL   )r6   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>rL   rl   )rJ   rL   rS   rH   rT   )r6   r'   r^   r   rA   )r_   r`   r}   r�   r   rA  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   rL   rJ   rS   rH   rT   ©r6   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   rL   rJ   rS   rH   rT   rï  rð  rú  rŒ   r<   r<   r=   Útest_nd_indexingî	  s    $zTestMeshgrid.test_nd_indexingN)rp   rq   rr   r  rí  rî  rò  rõ  rö  r€  r÷  rù  rû  rü  r<   r<   r<   r=   rè  ‡	  s   
	rè  c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )Ú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   TFrL   c                 S   s   dS rQ  r<   ro  r<   r<   r=   r÷  
  rø  z+TestPiecewise.test_simple.<locals>.<lambda>rX   z1 or 2 functions are expectedrJ   rS   )r)   r   r6   r‚   r   r\   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 )NrL   rJ   TFrS   rH   ©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 )NrS   TFrH   rJ   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 )NrL   rJ   TFr   rS   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 )	NrS   rH   r   rT   TFrL   rJ   )r6   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 )NrS   rH   r   rT   rL   rJ   z2 or 3 functions are expected)r)   r   r   r   r\   r¼  r<   r<   r=   Útest_0d_comparison4
  s$    
,
   ÿ   
ÿz TestPiecewise.test_0d_comparisonc                 C   s8   t  d¡}t  |dk¡}t||gddgƒ}t|dƒ d S )NrS   rL   rJ   )r6   r‚   r)   r   )r_   r¹   r�   rÄ   r<   r<   r=   Útest_0d_0d_conditionC
  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   rJ   rX   rL   rS   r¯  r«   rª   )r6   r‚   r)   r   r¼  r<   r<   r=   Útest_multidimensional_extrafuncI
  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Í   Q
  s   rÍ   r²   r©   rH   r¯  rª   r¬   )r6   rÎ   r7   rÏ   r)   r   rÐ   )r_   rÍ   r¹   r  r<   r<   r=   rÑ   P
  s
    zTestPiecewise.test_subclassesN)rp   rq   rr   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 )NrH   )r6   Úbincountr7   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 )NrL   rT   rJ   rH   r   )r6   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 )NrH   çš™™™™™É?ç333333Ó?r·  rg  )r6   r7   r‚   r  r   ©r_   r¹   rÅ   rÄ   r<   r<   r=   Útest_simple_weightc
  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 )
NrL   rJ   rH   rT   r  r	  r·  rg  r   ©r6   r‚   r  r   r
  r<   r<   r=   Útest_simple_weight2i
  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   rL   rS   ©Z	minlengthrJ   r  r¼  r<   r<   r=   Útest_with_minlengtho
  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   rL   rJ   rS   r  r  r¼  r<   r<   r=   Ú)test_with_minlength_smaller_than_maxvaluew
  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 )NrL   rJ   rH   rT   r  r	  r·  rg  rk   r   r  r
  r<   r<   r=   Útest_with_minlength_and_weights~
  s    z,TestBincount.test_with_minlength_and_weightsc                 C   s&   t jg td�}t  |¡}t||ƒ d S rÄ  )r6   r‚   r[  r  r   r¼  r<   r<   r=   rÀ  „
  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Õ   rT   r  )r6   r‚   r[  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  ©r6   r  r<   ro  r<   r=   r÷  ’
  rø  z<TestBincount.test_with_incorrect_minlength.<locals>.<lambda>zmust not be negativec                      s   t jˆ dd�S ©NrX   r  r  r<   ro  r<   r=   r÷  •
  rø  rT   c                      s   t jˆ dd�S r  r  r<   ro  r<   r=   r÷  š
  rø  c                      s   t jˆ dd�S r  r  r<   ro  r<   r=   r÷  �
  rø  )r6   r‚   r[  r   r  r\   r7   rz   r<   ro  r=   Útest_with_incorrect_minlengthŽ
  s$    
þ
þ

þ
þz*TestBincount.test_with_incorrect_minlengthre  rf  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�   rL   rJ   rS   rH   rT   rl   )	rk  rl  r6   rÂ   ZintprÈ  r^   r  r   )r_   Zintp_refcountZdouble_refcountÚjr<   r<   r=   Útest_dtype_reference_leaksŸ
  s    z'TestBincount.test_dtype_reference_leaksÚvalsrJ   c              	   C   sJ   t  |¡}ttƒ� t  |¡ W 5 Q R X ttƒ� t  |¡ W 5 Q R X d S r5   )r6   Úasarrayr   r\   r  )r_   r  Zvals_arrr<   r<   r=   Útest_error_not_1d¯
  s
    


zTestBincount.test_error_not_1dN)rp   rq   rr   r  r  r  r  r  r  r  rÀ  r  r  rã   rä   rp  r   r  rå   r  r<   r<   r<   r=   r  Y
  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   rL   rJ   rˆ  éh  )r   r\   r%   rz   r<   r<   r=   Útest_exceptions»
  s
    zTestInterp.test_exceptionsc                 C   sB   t  ddd¡}t  ddd¡}t  ddd¡}tt  |||¡|ƒ d S )Nr   rL   rT   rd   )r6   r±  r	   r%   ©r_   r¹   rÄ   Úx0r<   r<   r=   rc   Â
  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 )
NrL   r�   rÕ   rX   r   ©ÚleftrJ   ©Úright)r#  r%  )	r^   r6   r7   rÈ  r]   r‚   r%   r-  r   )
r_   ÚsizeÚxpZypZincptsZdecptsZincresZdecresZinctgtZdectgtr<   r<   r=   Útest_right_left_behaviorÈ
  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   rL   rT   r	  )r6   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 )NrL   rJ   r¸  rS   rH   )r6   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 r5   )r6   Zfloat_ro  r<   r<   r=   r÷    rø  zTestInterp.<lambda>c                 C   s
   t | dƒS r  ©rF   ro  r<   r<   r=   r÷    rø  c                 C   s
   t d| ƒS r  r,  ro  r<   r<   r=   r÷    rø  c                 C   s   t | t | d¡ƒS )NrR   )rF   r6   Úmultiplyro  r<   r<   r=   r÷    rø  rC   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·  rL   r   r�   N)r   r6   r%   rþ   ©r_   r1  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�   rL   N©r   r6   r%   rª  rþ   r2  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·  rL   r�   r   Nr4  r2  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�   rL   N©r   r6   r%   rª  r2  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   rL   r�   Nr7  r2  r<   r<   r=   Útest_non_finite_half_inf_f5  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   rL   rT   rû   r	  rX   ù       @      @r"  r©   r$  rJ   r¸  rS   rH   ù       @      ð?y              à?éLÿÿÿéVÿÿÿéGÿÿÿé¹   r¡  r4  ém  é¾   éBÿÿÿé^  é¢þÿÿy      @      ð?y      $@       @y      @      @y      @      @y      @      ø?y     €!@      ü?y      @      ô?y      
@      
@y      @      @y      @      @r  rˆ  )r6   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   rL   rT   r	  rJ   rH   rX   r˜  rˆ  r·  )	r6   r±  r‚   r	   r%   r   r   r!  rÁ   )r_   r¹   rÄ   r!  r'  r*  rÆ   r<   r<   r=   Ú)test_zero_dimensional_interpolation_pointZ  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¬   )r6   r7   Úsinr	   r%   rÜ  )r_   r'  r*  r<   r<   r=   Útest_if_len_x_is_smallk  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<  r=  r>  r?  r¡  r4  r   r@  rA  rB  rC  rD  rT   r�   rS   rH   g      @r²   ç     €!@g      @r«   g      
@ç      @g      @r  rˆ  r    r¡   rJ   rX   ré   )r	   r6   r%   r‚   rn   )r_   r¹   r'  r*  rÄ   r<   r<   r=   r‘  p  s    zTestInterp.test_periodN)rp   rq   rr   r  rc   r(  r)  r+  rã   Zfixturer1  r3  r5  r6  r8  r9  rE  rF  rH  r‘  r<   r<   r<   r=   r  ¹
  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(ej 	dBdCdDdCgg¡ejj	dEdFdDdGdHdIgdJ�dKdL„ ƒƒZ)dMdN„ Z*dOdP„ Z+dQdR„ Z,dSdT„ Z-dFS )UÚ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 )Nrk   r·  r   r¬   r	  rJ  rd   r®   rL   Únearest©Úmethod)r6   r7   r   Ú
percentilerþ   r$  r<   r<   r=   rc   }  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 ©rJ   r   rø  r<   r<   r=   rÞ   ‡  s     z0TestPercentile.test_fraction.<locals>.<listcomp>rk   r   r	  rm   rJ   rd   rH   )r^   r6   rO  r   r   rÐ   r‚   rÎ   )r_   r¹   r'  r<   r<   r=   Útest_fraction†  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 )NrT   FÚlinearrß   )r6   r]   rO  )r_   r   Úor<   r<   r=   Útest_api™  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 )NrL   rH   rS   rd   r   rt   )r6   r‚   r   rO  r$  r<   r<   r=   Útest_2D   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Õ   rR  rM  )r6   r  ZNANrO  Útestingr   rÂ   )r_   rÂ   rç  rš  r<   r<   r=   Útest_linear_nan_1D¨  s    ýz!TestPercentile.test_linear_nan_1Dc                 C   s   g | ]}|t jf‘qS r<   )r6   rÁ   )rÝ   Zint_typer<   r<   r=   rÞ   ³  s   ÿzTestPercentile.<listcomp>r“  r’  Úinput_dtypeÚexpected_dtyperN  ru  )Úinverted_cdfr+  )Úaveraged_inverted_cdfç     €;@)Úclosest_observationr+  )Úinterpolated_inverted_cdfr+  )Úhazenr_  )Úweibullé   )rR  rl  )Úmedian_unbiasedrC  )Únormal_unbiasedg      ;@c                 C   sÊ   t  |¡}t  ¡ dkr$t  |t j¡}t jdddddg|d�}t j|d|d�}t j || 	|¡d	¡ |d
krª|dkrŒt j 
t  |¡jt j¡ qÆt j 
t  |¡jt  |¡¡ nt j 
t  |¡jt  |¡¡ d S )NÚlegacyr:  g      4@rV  rW  rX  rÕ   rM  rA  )r]  r`  r’  )r6   rÂ   Z_get_promotion_stateZpromote_typesrÁ   r  rO  rY  r	   rÐ   r   )r_   rN  ru  r[  r\  rç  rÆ   r<   r<   r=   Útest_linear_interpolation¾  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Õ   rd   ÚlowerrM  rH   ÚhigherrT   ©r   r6   rO  r7   ©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   ÚmidpointrM  r˜  rç   rL   rd   rT   r°   ç      @rk  rl  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Õ   rn  rL  rM  rT   é1   rH   rk  rl  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 )NrT   r	  r   )r6   r³  r   rO  rY  r   rt  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 )Nrk   r·  r   r	  rd   rJ  r®   )r6   r7   r   rO  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÷   rS   rH   )r¡  rd   r	  g      @rp  r   rJ   rT   rl   rm   rk   rç   r�   r°   r   rt   ç      è?r¢  ç      @rI  r³   rL   r  ©r¡  rd   rP  )r¡  rd   r‹  ©rS   )rJ   rH   rT   rl   )rJ   rS   rT   rl   )rJ   rS   rH   rl   )rJ   rS   rH   rT   )rS   rS   rT   rl   rj  rM  ©ru   rN  )r6   r7   rn   r   rO  r‚   r  rA   )r_   r¹   Úr0r  r<   r<   r=   rn    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÷   rS   rH   rd   rp  r±   r²   r½   r;  r   rt   r¢  r³   rL   ©rh  ©ru   rh  ri  rM  )rN  ru   rª   r6  r<   rÕ   ©rN  rh  rT   ©rN  ru   rh  )r6   r7   rn   r   rO  r   Úisscalarr‚   rA   r	   ÚemptyrÂ   )r_   r¹   r{  r  rh  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 )
NrL   rJ   é8   r  rM  ée   rX   rd   rf  )r   r\   r6   rO  rr  r^   rz   r<   r<   r=   Útest_exception_  s    ÿ zTestPercentile.test_exceptionc                 C   s   t t dddgd¡dƒ d S )NrL   rJ   rS   r   )r   r6   rO  rz   r<   r<   r=   Útest_percentile_listg  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 )%NrL   rJ   rS   ry  ©rL   rJ   rS   r|  rH   rT   rl   r}  r   r}  rt   ©rS   rJ   r÷   r©   r«   r±   r²   r½   r;  )rJ   rH   rx  rv  rw  rI  r¢  rp  r³   r×  rm   rÕ   ri  r  rk   rç   )	r6   r‚   r?   rO  r   r7   rn   r�  rÂ   )r_   r¹   rÄ   r'  r{  rh  r  r�   r<   r<   r=   Útest_percentile_outj  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 )NrE  r°   rL   rJ   rd   r   rt   )rL   rJ   rL   )r°   rJ   rL   )r°   rL   rL   rS   )r°   rL   rJ   rX   rR   rU   r  ro  rz  r�   )rJ   rL   rJ   rL   )rJ   r°   rJ   rL   )rJ   r°   rL   rL   )rJ   r°   rL   rJ   )r6   r7   rn   r   rO  rA   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 )NrJ   rS   rH   rL   rd   F©Úoverwrite_input©r6   r‚   rO  r   ri   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@rT   )Únumro  rM  )r6   r±  rO  r7   r   rò  )r_   r'  r<   r<   r=   Útest_no_p_overwrite¸  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 )	NrJ   rS   rH   rL   rd   Tr�  r¸  r�  r|   r<   r<   r=   Útest_percentile_overwriteÀ  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�   r=  rY   rt   rX   r   rh   rL   rf   r¡  r”  rK   ©r   éƒ  ©rS   rT   rm   r°   éZ   ©r   rL   rS   ©rS   rL   r  rJ   ©rS   rL   rJ   r‰  ©rJ   rL   ©rL   rR   ©rL   rS   rO   )r6   r³  ÚnormalÚdstackr   rO  Úmoveaxisrˆ   rž   r7   rn   ÚshuffleÚravelÚflatten©r_   rS  r¹   r   r<   r<   r=   Útest_extended_axisÈ  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›  r4  r¡  )ru   r¢  ©r   r4  rH   ©r   rH   rQ   )rX   rX   )rS   rX   )r6   r]   r   rx   rO  r\   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›  rm   Tr´   ©rL   rL   rL   rL   rY   ©rL   rL   rm   r°   rw   ©rL   rT   rm   rL   rß   ©rS   rL   rm   r°   ©r   rL   rJ   rS   )rµ   r�  ©rL   rL   rm   rL   rL   )rJ   rL   rL   rm   rL   )rJ   rL   rT   rm   rL   )r6   r]   r   rO  rA   r‹  r<   r<   r=   Útest_keepdimsó  s:    
ÿÿÿÿÿÿÿÿÿÿzTestPercentile.test_keepdimsr¢  rm   rL   ru   Nrß   rY   ©rU   rX   ©ÚargnamesZ	argvaluesc                    s�   t  d¡‰|d krdˆj }n*t|ˆjƒ‰ t‡ ‡fdd„tˆjƒD ƒƒ}t  |¡| }t  |¡}t jˆ||d|d�}||ks€t	‚t
|j|ƒ d S )Nr›  rß   c                 3   s$   | ]}|ˆ krd nˆj | V  qdS ©rL   N©rA   rø  ©Z	axis_normr   r<   r=   râ    s    z3TestPercentile.test_keepdims_out.<locals>.<genexpr>T©ru   rµ   rh  )r6   r]   r‡   r4   rM  r^   rA   r�  rO  r¸   r   )r_   r¢  ru   Ú	shape_outrh  r  r<   rº  r=   Útest_keepdims_out  s    
ÿ
z TestPercentile.test_keepdims_outc                 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©rH   rñ  r   r|  rL  r~  ry  rL   r<   rJ   )r6   r?   r]   r   rO  ©r_   rS  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   r|  rL  r~  ry  rL   r<   )
r  r  r  r¿  r6   r?   r]   rþ   r   rO  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Õ   rJ   r	  r   rt   g333333ã?rS   rH   rˆ  ©rL   rL   rJ   r×  rg   rL   r¢  rP   rL  rM  )	r6   r7   r-  rþ   r   rO  r‚   rn   r‡   r|   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 inr0  rL   rJ   rS   r±   rª   g     ÀX@r@  r   )rã   r  r\   r6   rO  rþ   r±  )r_   r¢  r<   r<   r=   Ú
test_nan_q}  s     "
zTestPercentile.test_nan_q).rp   rq   rr   rc   rQ  rT  rU  rã   rä   rå   r6   Ú	typecodesrZ  rÅ  rÀ   rÁ   rÉ  rJ  rK  ZclongdoublerÂ   ZH_F_TYPE_CODESrh  Z
TYPE_CODESrm  rq  rs  rt  ru  rn  rƒ  r†  r‡  rŠ  rŒ  r�  r“  r”  rª  r­  r´  r½  rÀ  rÁ  rÃ  rÄ  r<   r<   r<   r=   rK  {  sŠ   	

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


	$0)	 ûþ
=rK  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=
Ç?rL   )Zmaxulp)r6   ÚquantilerY  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 )Nrk   r·  r   r¬   rL   rJ  r®   )r6   r7   r   rÇ  r$  r<   r<   r=   rc   ”  s    zTestQuantile.test_basiczSee gh-19154rf  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   )r6   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 rP  r   rø  r<   r<   r=   rÞ   §  s     z.TestQuantile.test_fraction.<locals>.<listcomp>rk   r   rL   rm   rJ   rH   )	r^   r6   rÇ  r   rÐ   r   r‚   rÎ   r7   )r_   r¹   r¢  r<   r<   r=   rQ  ¥  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   rv  rº  r·  rª   r‘  ro  rM  )r6   r‚   rž   rÇ  r7   r   rò  )r_   Úp0r'  r<   r<   r=   r“  À  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 )NrL   rJ   rÕ   r·  rL  rM  )r6   rÇ  r‚   rÂ   r¸   )r_   rÂ   rš  r<   r<   r=   Útest_quantile_preserve_int_typeÌ  s    ÿz,TestQuantile.test_quantile_preserve_int_typerN  r]  r^  r`  ra  rb  rc  rR  re  rf  rL  ri  rj  ro  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   rL   r…  rJ   rS   rH   rT   rç   rk   rm   rg  rM  r¬   rª   r©   r«   )r6   r±  rÇ  r‚   r   rµ  )r_   rN  rÊ  rÇ  r<   r<   r=   Útest_quantile_monotonicÒ  s    	&  ÿÿ ÿz$TestQuantile.test_quantile_monotonicrS   rŠ  )Ú	min_valueÚ	max_valueFçœu ˆ<ä7þçœu ˆ<ä7~)Úallow_infinityÚ	allow_nanrÍ  rÎ  )rÂ   rA   Úelements)rç  c                 C   s.   t  ddd¡}t  ||¡}tt  |¡|ƒ d S )Nr   rL   g{®Gáz„?)r6   r7   rÇ  r   rµ  )r_   rç  rÊ  rÇ  r<   r<   r=   Útest_quantile_monotonic_hypoä  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 )
Nr5  r;  r±   r«   r©   rª   r   rL   r·  )r6   r‚   rþ   rÇ  r€  r¸   r   )r_   r`   rÆ   r<   r<   r=   Útest_quantile_scalar_nanî  s
    z%TestQuantile.test_quantile_scalar_nanN)rp   rq   rr   rÈ  rc   rã   rä   r…  rÉ  rQ  r“  rå   r6   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   rL   )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 r5   ©rB  Ú_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 r5   rÝ  )r_   rá  r`   r}   r<   r<   r=   Ú)test_linear_interpolation_formula_bounded	  s    &z2TestLerp.test_linear_interpolation_formula_boundedc                 C   s6   t  ||dd|  ¡}t  ||d| ¡}t||ƒ d S rð  )rB  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 )NrJ   rT   r  gÍÌÌÌÌÌ@)r6   r‚   rB  rÞ  r¸   )r_   r`   r}   rá  r<   r<   r=   Ú+test_linear_interpolation_formula_0d_inputs!  s    


z4TestLerp.test_linear_interpolation_formula_0d_inputsN)rp   rq   rr   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ej	jedd�dd„ ƒZdd„ Zdd„ Zd d!„ Zd"d#„ Zej	j
d$d%d&d'd(d)gd*�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 )NrL   rJ   rl   rS   r·  r¸  r   rt   r¢  rJ  rH   gð™6-Â¦?gº¤0”¸§?gºÝË}rÂ?g©Á4¯?r©   rX   )
r6   r‚   r7   rn   r   Úmedianr   r	   r‡   rþ   )r_   Úa0r(  rP  r`   r<   r<   r=   rc   *  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 )NrJ   rS   r   rL   rl   rm   rH   rT   r	  r  r˜  rt   rJ  )r6   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 )NrJ   rS   r   rL   rl   rm   rH   rT   Tr�  r·  r¸  )rŽ  ru   r¢  rJ  r”  rÕ   )rS   rH   rT   rt   )ru   rŽ  )r6   r‚   r7   rn   r   ræ  rž   r  rÀ   r³  r¦  r§  )r_   ré  rç  r(  rP  Za4r<   r<   r=   Útest_overwrite_keywordR  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 )NrL   rJ   rS   r   rt   )r	   r6   ræ  r   )r_   r¹   r¯  r<   r<   r=   r¦  s  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 r5   )r6   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_   ru   rÂ   rh  r<   r<   r=   r­   ƒ  s    z1TestMedian.test_subclass.<locals>.MySubClass.mean)N)NNN)rp   rq   rr   rð  r­   r<   r<   r<   r=   Ú
MySubClass|  s   
rò  rL   rJ   rS   rñ  )r6   rÎ   r   ræ  )r_   rò  r`   r<   r<   r=   r#  z  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)r6   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   r|  ry  rL   r<   )r6   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   r|  ry  rL   r<   )
r  r  r  r¿  r6   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Õ   rJ   r   rt   rS   rH   rˆ  rÂ  r×  rg   rL   r¢  rP   )r6   r7   r-  rþ   r   ræ  rn   r‡   r|   r<   r<   r=   rÃ  ¨  s*    


 

 

 

zTestMedian.test_nan_behaviorzfp errors don't work correctlyrf  c              	   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   rJ   rS   )rÂ   rË  rt   rL   )r6   r‚   r-  r  r  r  r¿  r   ræ  rþ   r   r  rì   )r_   r`   rÅ   r}   r<   r<   r=   rÀ  È  s&    zTestMedian.test_emptyc                 C   sL   t  d¡}ttt  | t¡¡ƒtƒ t j|d< ttt  | t¡¡ƒtƒ d S )Nr;  rJ   )	r6   r7   r   rÐ   ræ  r¿   r™  r-  rþ   )r_   rS  r<   r<   r=   Útest_objectæ  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�   rY   rt   rX   r   rh   rL   rf   rK   r™  )rX   rš  r›  r�  rž  rJ   rŸ  r‰  r   r¡  r¢  rO   )r6   r³  r£  r¤  r   ræ  r¥  rˆ   rž   r7   rn   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›  r4  rt   r«  rH   r¬  rQ   )r6   r]   r   rx   ræ  r\   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›  Tr´   r®  rY   r¯  rw   r°  rß   r±  r²  r�  r³  )r6   r]   r   ræ  rA   r‹  r<   r<   r=   r´    s&    
ÿÿÿÿÿÿzTestMedian.test_keepdimsru   NrL   rß   rY   rµ  r¶  c                    s€   t  d¡‰|d krdˆj }n*t|ˆjƒ‰ t‡ ‡fdd„tˆjƒD ƒƒ}t  |¡}t jˆ|d|d�}||kspt‚t	|j
|ƒ d S )Nr›  rß   c                 3   s$   | ]}|ˆ krd nˆj | V  qdS r¸  r¹  rø  rº  r<   r=   râ  1  s    z/TestMedian.test_keepdims_out.<locals>.<genexpr>Tr»  )r6   r]   r‡   r4   rM  r^   r�  ræ  r¸   r   rA   )r_   ru   r¼  rh  r  r<   rº  r=   r½  !  s    
ÿ
zTestMedian.test_keepdims_out)rp   rq   rr   rc   rë  rì  r¦  r#  rã   rä   rå   r6   rþ   rô  rÀ  rÁ  rÃ  rp  r   rÀ  rõ  rª  r­  r´  r½  r<   r<   r<   r=   rå  (  s8   !ÿ
	 
ûþ
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 )NrJ   Zblah)r   r  r   r\   r6   r8   rz   r<   r<   r=   Útest_ufunc_arg;  s    z#TestAdd_newdoc_ufunc.test_ufunc_argc                 C   s   t tttjdƒ d S )NrS   )r   r  r   r6   r8   rz   r<   r<   r=   Útest_string_arg?  s    z$TestAdd_newdoc_ufunc.test_string_argN)rp   rq   rr   r÷  rø  r<   r<   r<   r=   rö  9  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_newdocrJ   úPython running -OOrf  ú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   r6   ÚcoreÚflatiterÚindexr4  rì   r   ZufuncÚidentityr«  Zindex_tricksZmgrid)r_   rQ  r<   r<   r=   Útest_add_docE  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)r6   rü  rý  rþ  r4  Z
add_newdocr¸   )r_   Zprev_docr<   r<   r=   Útest_errors_are_ignoredN  s    z&TestAdd_newdoc.test_errors_are_ignoredN)rp   rq   rr   rã   rä   rp  rk  r£   Úoptimizer…  r   r   r  r<   r<   r<   r=   rù  C  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 )
ÚTestAddDocstringrJ   rú  rf  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)r6   Úadd_docstringrÎ   Úflatr4  ©r_   r  r<   r<   r=   Útest_add_same_docstringZ  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  l  s    z=TestAddDocstring.test_different_docstring_fails.<locals>.func)r   rÛ  r6   r  rÎ   r  r  r<   r<   r=   Útest_different_docstring_failsf  s
    

z/TestAddDocstring.test_different_docstring_failsN)rp   rq   rr   rã   rä   rp  rk  r£   r  r   r	  r
  r<   r<   r<   r=   r  W  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 )NrT   rS   rl   rJ   rL   rÕ   )r6   r‚   Úsort_complexrµ  r¿   r   rÂ   )r_   Ztype_inZtype_outr`   rÆ   ru  r<   r<   r=   Útest_sort_realv  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Õ   )r6   r‚   r  r   rÂ   )r_   r`   ru  rÆ   r<   r<   r=   Útest_sort_complex†  s
    

z!TestSortComplex.test_sort_complexN)rp   rq   rr   rã   rä   rå   r  r  r<   r<   r<   r=   r  t  s   ú
r  )rª   )rª   r¬   )}rX  r  rk  rÛ   Ú	fractionsr   rþ  rã   rÖ  Zhypothesis.extra.numpyr   Zhypothesis.strategiesÚ
strategiesrØ  Únumpyr6   r   Znumpy.testingr   r   r   r	   r
   r   r   r   r   r   r   r   r   Znumpy.lib.function_baser«  Zfunction_baserB  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/   r0   r1   r2   r3   Znumpy.core.numericr4   r>   rF   rG   rs   r�   rš   rœ   r¨   ræ   r  r3  r8  r9  r<  rR  r^  rb  rƒ  rœ  rÕ  rß  rõ  r  r  r  r^  rq  r†  rä   rå   rÅ  r–  r   r¤  r§  r©  r®  rÊ  rá  rä  rç  rè  rý  r  r  rK  rÆ  rÚ  rå  rö  rù  r  r  r<   r<   r<   r=   Ú<module>   s¨   <ˆDg# >o u }A)

   *)U ÿl>[j4nd` C    m2  
