a
    ³ÐOc@? ã                   @   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 d dlm  m Z! d dl"m#Z# d dl$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZD dd	„ ZEd
d„ ZFG dd„ dƒZGG dd„ dƒZHG dd„ dƒZIG dd„ dƒZJG dd„ dƒZKG dd„ dƒZLG dd„ dƒZMG dd„ dƒZNG dd„ dƒZOG dd„ dƒZPG d d!„ d!ƒZQG d"d#„ d#ƒZRG d$d%„ d%ƒZSG d&d'„ d'ƒZTG d(d)„ d)ƒZUG d*d+„ d+ƒZVG d,d-„ d-ƒZWG d.d/„ d/ƒZXG d0d1„ d1ƒZYG d2d3„ d3ƒZZdtd5d6„Z[dud8d9„Z\G d:d;„ d;ƒZ]G d<d=„ d=ƒZ^G d>d?„ d?ƒZ_G d@dA„ dAƒZ`eja bdBdCejcdD  ejcdE  ¡eja bdFg dG¢¡G dHdI„ dIƒƒƒZdG dJdK„ dKƒZeG dLdM„ dMƒZfG dNdO„ dOƒZgG dPdQ„ dQƒZhG dRdS„ dSƒZiG dTdU„ dUƒZjG dVdW„ dWƒZkG dXdY„ dYƒZlG dZd[„ d[ƒZmG d\d]„ d]ƒZnG d^d_„ d_ƒZoG d`da„ daƒZpG dbdc„ dcƒZqG ddde„ deƒZrG dfdg„ dgƒZsG dhdi„ diƒZtG djdk„ dkƒZuG dldm„ dmƒZvG dndo„ doƒZwG dpdq„ dqƒZxG drds„ dsƒZydS )vé    N©ÚFraction)Úarrays)Úma)Úassert_Úassert_equalÚassert_array_equalÚassert_almost_equalÚassert_array_almost_equalÚassert_raisesÚassert_allcloseÚIS_PYPYÚassert_warnsÚassert_raises_regexÚsuppress_warningsÚHAS_REFCOUNT)Úrand) Úadd_newdoc_ufuncÚangleÚaverageÚbartlettÚblackmanÚcorrcoefÚcovÚdeleteÚdiffÚdigitizeÚextractÚflipudÚgradientÚhammingÚhanningÚi0ÚinsertÚinterpÚkaiserÚmeshgridÚmsortÚ	piecewiseÚplaceÚrot90ÚselectÚsetxor1dÚsincÚtrapzÚ
trim_zerosÚunwrapÚuniqueÚ	vectorizec                 C   s   t  | ¡}t j ||¡}|S ©N)ÚnpÚarangeÚaddÚouter)ÚnÚdata© r:   úY/var/www/html/gsl.tools/lib/python3.9/site-packages/numpy/lib/tests/test_function_base.pyÚget_mat   s    
r<   c                 C   s(   t  t  | |¡jt j¡}| |_||_|S )za
    Like real + 1j * imag, but behaves as expected when imag contains non-finite
    values
    )r4   ÚzerosÚ	broadcastÚshapeÚcomplex_ÚrealÚimag)rA   rB   Úretr:   r:   r;   Ú_make_complex$   s    rD   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )Ú	TestRot90c                 C   s–  t ttt d¡ƒ t ttt d¡dd� t ttt d¡dd� t ttt d¡dd� t ttt d¡dd� g d¢g d	¢g}d
dgddgddgg}g d¢g d¢g}ddgddgdd
gg}g d¢g d	¢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�|ƒ �q@ttt|dd�dd�|ƒ tt|ddd�t|ddd�ƒ d S )Né   ©é   rH   rH   ©r   é   rH   ©Úaxes©rH   rH   ©r   rH   ©rJ   rJ   )éþÿÿÿrJ   ©é   rF   é   rH   rS   rJ   r   rR   ©rS   rF   rR   ©rH   rJ   r   éýÿÿÿé   )ÚkrP   éÿÿÿÿ©r   rJ   ©rJ   r   ©rX   rL   )r   Ú
ValueErrorr*   r4   ÚonesÚranger   )ÚselfÚaÚb1Úb2Zb3Zb4rX   r:   r:   r;   Ú
test_basic0   s@    ÿþÿþÿzTestRot90.test_basicc                 C   sR   t  d¡}tt|ƒjdƒ tt|dd�t|dd�ƒ tt|dd�t|dd�ƒ d S )N)é2   é(   rR   )rf   re   rR   rN   rK   ©r   rY   ©rJ   rH   ©rP   rY   )r4   r^   r   r*   r?   ©r`   ra   r:   r:   r;   Ú	test_axesP   s    
zTestRot90.test_axesc                 C   sü   t  d¡ d¡}ddgddggddgd	d
ggg}ddgddggd
dgd	dggg}d	dgddggd
dgddggg}d	d
gddggddgddggg}tt|dd�|ƒ tt|dd�|ƒ tt|dd�|ƒ tdd
ƒD ]&}tt||dd�t||d dd�ƒ qÐd S )Né   rG   rH   rR   é   é   r   rJ   rF   rS   rZ   rK   r[   rh   )rH   r   r\   )r4   r5   Úreshaper   r*   r_   )r`   ra   Z
a_rot90_01Z
a_rot90_12Z
a_rot90_20Z
a_rot90_10rX   r:   r:   r;   Útest_rotation_axesV   sH    ÿÿþÿÿþÿÿþÿÿþÿzTestRot90.test_rotation_axesN)Ú__name__Ú
__module__Ú__qualname__rd   rk   rp   r:   r:   r:   r;   rE   /   s    rE   c                   @   sT   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ ZdS )ÚTestFlipc                 C   sl   t tjtjt d¡dd� t tjtjt d¡dd� t tjtjt d¡dd� t tjtjt d¡dd� d S )NrF   rJ   ©Úaxis©rF   rF   rH   rV   ©r   rR   )r   r4   Ú	AxisErrorÚflipr^   ©r`   r:   r:   r;   rk   u   s    zTestFlip.test_axesc                 C   sf   t dƒ}|d d …d d d…f }tt |d¡|ƒ g d¢g d¢g}g d¢g d¢g}tt |d¡|ƒ d S )NrF   rY   rJ   rI   rQ   rU   rT   ©r<   r   r4   rz   ©r`   ra   Úbr:   r:   r;   Útest_basic_lr{   s    ÿÿzTestFlip.test_basic_lrc                 C   sf   t dƒ}|d d d…d d …f }tt |d¡|ƒ g d¢g d¢g}g d¢g d¢g}tt |d¡|ƒ d S )NrF   rY   r   rI   rQ   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   rJ   rH   rR   rF   rS   rm   rn   ©r4   Úarrayr   rz   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   rH   rR   rF   rS   r   )	r4   r5   ro   r_   Úndimr   rz   r   Úswapaxes)r`   ra   Úir:   r:   r;   Útest_4d¶   s
    ÿzTestFlip.test_4dc                 C   s@   t  g d¢g d¢g¡}t  g d¢g d¢g¡}tt  |¡|ƒ d S )N©rJ   rH   rR   ©rF   rS   rm   )rm   rS   rF   ©rR   rH   rJ   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   rJ   rH   rR   rF   rS   rm   rn   r:   ru   rN   rh   r‚   ©r`   ra   r~   Úcr:   r:   r;   Útest_multiple_axesÃ   s0    
ÿÿþ
ÿÿþ
ÿÿþzTestFlip.test_multiple_axesN)rq   rr   rs   rk   r   r€   r„   r…   r†   r‹   r�   r’   r:   r:   r:   r;   rt   s   s   

rt   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAnyc                 C   sH   g d¢}g d¢}g d¢}t t |¡ƒ t t |¡ƒ t t |¡ ƒ d S )N©r   r   rJ   r   ©r   r   r   r   )rJ   r   rJ   r   )r   r4   Úany©r`   Úy1Úy2Úy3r:   r:   r;   rd   Ü   s    zTestAny.test_basicc                 C   sX   g d¢g d¢g d¢g}t t |¡ƒ ttj|dd�g d¢ƒ ttj|dd�g d¢ƒ d S )N©r   r   r   ©r   rJ   r   ©rJ   rJ   r   r   ru   rJ   ©r   rJ   rJ   )r   r4   r–   r   Zsometrue©r`   r˜   r:   r:   r;   Útest_ndä   s    zTestAny.test_ndN©rq   rr   rs   rd   r    r:   r:   r:   r;   r“   Ú   s   r“   c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAllc                 C   s`   g d¢}g d¢}g d¢}t t |¡ ƒ t t |¡ƒ t t |¡ ƒ t t t |¡ ¡ƒ d S )N)r   rJ   rJ   r   r•   ©rJ   rJ   rJ   rJ   )r   r4   Úallrƒ   r—   r:   r:   r;   rd   í   s    zTestAll.test_basicc                 C   sZ   g d¢g d¢g d¢g}t t |¡ ƒ ttj|dd�g d¢ƒ ttj|dd�g d¢ƒ d S )N©r   r   rJ   rž   ©rJ   rJ   rJ   r   ru   rJ   )r   r4   r¤   r   ZalltruerŸ   r:   r:   r;   r    ö   s    zTestAll.test_ndNr¡   r:   r:   r:   r;   r¢   ë   s   	r¢   c                   @   s$   e Zd Zdd„ Zdd„ Zdd„ ZdS )ÚTestCopyc                 C   sR   t  ddgddgg¡}t  |¡}t||ƒ d|d< t|d dƒ t|d dƒ d S )NrJ   rH   rR   rF   é
   )r   r   )r4   rƒ   Úcopyr   r   )r`   ra   Úa_copyr:   r:   r;   rd   ÿ   s    

zTestCopy.test_basicc                 C   s°   t  ddgddgg¡}t|jjƒ t|jj ƒ t jddgddggdd�}t|jj ƒ t|jjƒ t  |¡}t|jjƒ t|jj ƒ t  |¡}t|jj ƒ t|jjƒ d S )NrJ   rH   rR   rF   ÚF©Úorder)r4   rƒ   r   ÚflagsÚc_contiguousÚf_contiguousr©   )r`   ra   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 )NrS   F)ZsubokT)r   r^   r   ZisMaskedArrayr4   r©   )r`   Zmxr:   r:   r;   Ú
test_subok  s    
zTestCopy.test_subokN)rq   rr   rs   rd   r±   r²   r:   r:   r:   r;   r§   ý   s   r§   c                   @   sž   e Zd Zdd„ Zej dg d¢ddgg d¢dgd	gfg d
¢g d¢gdg d¢gddgg d¢gg d¢gfg¡dd„ ƒZdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ ZdS )ÚTestAveragec                 C   sà   t  g d¢¡}tt|dd�dkƒ t  g d¢¡}tt|dd�dkƒ g d¢}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 )NrŒ   r   ru   ç       @©ç      ð?r´   ç      @)ç        r¸   r¸   r¸   rw   rZ   rH   r[   rJ   rS   )r4   rƒ   r   r   r^   r	   Úmeanr   )r`   r˜   r™   rš   Zy4Zy5r:   r:   r;   rd   "  s    

zTestAverage.test_basicz<x, axis, expected_avg, weights, expected_wavg, expected_wsumrŒ   Nr´   )rR   rF   rJ   ç      ü?ç       @)rJ   rH   rS   )rJ   rm   é   r   )r¶   ç      @r»   rJ   rR   )r¶   ç      @ç      #@©rF   rF   rF   c           
      C   s¶   t j||dd�}|jt  |¡ks$J ‚t||ƒ t j|||dd�}|jt  |¡ksTJ ‚t||ƒ t j|||ddd�\}}	|jt  |¡ksŠJ ‚t||ƒ |	jt  |¡ks¨J ‚t|	|ƒ d S )NT©rv   Úkeepdims)rv   ÚweightsrÂ   )rv   rÃ   ÚreturnedrÂ   )r4   r   r?   r   )
r`   Úxrv   Zexpected_avgrÃ   Zexpected_wavgZexpected_wsumÚavgZwavgZwsumr:   r:   r;   Útest_basic_keepdims4  s    

ÿ

zTestAverage.test_basic_keepdimsc                 C   sÐ  t  d¡}t  d¡}t||d�}t  d¡d  ¡ d t  d¡ ¡  }t||ƒ t  g d¢g d¢g¡}ddg}t||dd	�}t  g d
¢¡}t||ƒ g d¢}t||dd	�}t  ddg¡}t||ƒ g d¢g d¢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  g d¢¡ dd¡}t  g d¢¡ dd¡}t j||ddd�}t  g d¢¡}t||ƒ t j||ddd�}t  dgdgdgg¡}t||ƒ d S )Nr¨   ©rÃ   rH   r¶   rŒ   r�   rJ   r   )rÃ   rv   )r·   r½   r¾   r¥   r·   ç      @)r   r   rH   r¾   rS   ©rH   rR   rF   rR   F)rÃ   rv   rÂ   )r´   r·   r½   Tr´   r½   )r4   r5   r   Úsumr	   rƒ   r   r   r   ÚastypeÚfloat32Úfloat64r   ÚdtypeÚresult_typero   )r`   ÚyÚwÚactualZdesiredr˜   Úw0Úw1Úw2rš   Zw3rÅ   r:   r:   r;   Útest_weightsK  s:    

$


 
zTestAverage.test_weightsc                 C   s  t  g d¢g d¢g¡}t|dd�\}}t|dƒ t|ddd�\}}t|t  g d¢¡ƒ t|ddd�\}}t|t  d	d	g¡ƒ dd
g}t||ddd�\}}t|t  g d¢¡ƒ g d¢}t||ddd�\}}t|t  ddg¡ƒ g d¢g d¢g}t||ddd�\}}t|t  ddg¡ƒ d S )NrŒ   r�   T)rÄ   rÉ   r   )r´   r´   r´   rJ   r·   rH   )rÃ   rv   rÄ   )r·   r·   r·   r¥   r¶   )r4   rƒ   r   r   r   )r`   rÑ   rÆ   ZsclrÔ   rÕ   rÖ   r:   r:   r;   Útest_returnedw  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©rq   rr   rs   r:   r:   r:   r;   Úsubclass’  s   rÚ   rJ   rH   rR   rF   rÈ   )r4   Úndarrayrƒ   Úviewr   Útyper   )r`   rÚ   ra   rÒ   r:   r:   r;   Útest_subclasses‘  s
    zTestAverage.test_subclassesc                 C   sl   g d¢}|D ]Z\}}}t jddgddgg|d�}t jddgddgg|d�}tt j||d�jt  |¡ƒ qd S )N))Úi4rß   Úf8)rß   Úf4rà   )rá   rß   rà   )rá   rá   rá   )rá   rà   rà   rJ   rH   rR   rF   ©rÏ   rÈ   )r4   rƒ   r   r   rÏ   )r`   ZtypsÚatÚwtÚrtra   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>£  ó    z1TestAverage.test_object_dtype.<locals>.<listcomp>r¨   c                 S   s   g | ]}t  d ¡‘qS ©rJ   rç   )rê   Ú_r:   r:   r;   rë   ¤  rì   r   rÈ   )r4   rƒ   r_   rË   r	   r¹   r   )r`   ra   rÒ   r:   r:   r;   Útest_object_dtype¢  s    zTestAverage.test_object_dtype)rq   rr   rs   rd   ÚpytestÚmarkÚparametrizerÇ   r×   rØ   rÞ   ræ   rï   r:   r:   r:   r;   r³      s   ÿÿþ
,	r³   c                   @   s–   e Zd Ze g d¢¡e g d¢¡e g d¢¡gZe g d¢¡e g d¢¡e g d¢¡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 )Ú
TestSelectrŒ   r�   ©rn   rl   é	   )FFF©FTF©FFTr   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ë   ³  rì   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ÿ   rR   )ÚchoicesÚ
conditionsr   r+   r  r   rü   ©r`   r  r  r:   r:   r;   rd   ¶  s    ÿzTestSelect.test_basicc                 C   sd   t  d¡t  g d¢¡g}dt  d¡ dd¡g}tt||ƒt  d¡ƒ ttdgdgdgd	�jd
ƒ d S )NTrö   rJ   é   rF   rR   ©rF   rR   r   r  rí   )	r4   rƒ   r5   ro   r   r+   r^   r   r?   ©r`   r  r  r:   r:   r;   Útest_broadcasting¿  s    zTestSelect.test_broadcastingc                 C   sˆ   t t| j| jdƒjtjƒ dd„ | jD ƒ}t t| j|ƒjtjƒ t dddtj	ddg¡}t 
|¡}t t|g|gƒd	d	d	tj	d	d	gƒ d S )
Nù              ð?c                 S   s   g | ]}|  tj¡‘qS r:   )rÌ   r4   Úint8)rê   Úchoicer:   r:   r;   rë   Ë  rì   z0TestSelect.test_return_dtype.<locals>.<listcomp>rJ   rH   rR   rS   rn   r   )r   r+   r  r  rÏ   r4   r@   r  rƒ   ÚnanÚisnan)r`   r  Údrû   r:   r:   r;   Útest_return_dtypeÆ  s    ÿ
zTestSelect.test_return_dtypec                 C   s"   t ttg g dƒ t ttg g ƒ d S )Nù              @)r   r]   r+   r{   r:   r:   r;   Útest_deprecated_emptyÒ  s    z TestSelect.test_deprecated_emptyc                 C   sj   | j }| jd d … }|d  tj¡|d< ttt||ƒ |d  tj¡|d< ttt||ƒ ttt||ƒ d S ©Nr   )	r  r  rÌ   r4   Úint_r   Ú	TypeErrorr+   Úuint8r  r:   r:   r;   Útest_non_bool_deprecationÖ  s    z$TestSelect.test_non_bool_deprecationc                 C   s2   t  dg¡gd }t  dg¡gd }t||ƒ d S )NFéd   rJ   )r4   rƒ   r+   r	  r:   r:   r;   Útest_many_argumentsß  s    zTestSelect.test_many_argumentsN)r   )rq   rr   rs   r4   rƒ   r  r  r  rd   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   sv  g d¢}t t|ddƒg d¢ƒ t t|ddƒg d¢ƒ t t|g d¢g d¢ƒg d¢ƒ t t|dg d¢ƒg d¢ƒ t t|g d	¢d
ƒg d¢ƒ t t|tdd dƒd
ƒg d¢ƒ t t|g d¢g d¢ƒg d¢ƒ tjddgtjd�}t t|d|d ƒg d¢ƒ t t|g g ƒ|ƒ tjdd��R}t ddt	¡ t t|t dgd ¡d
ƒg d¢ƒ t
|d jt	u ƒ W d   ƒ n1 �sh0    Y  d S )NrŒ   r   rJ   )rJ   rJ   rH   rR   rR   )rJ   rH   rR   rJ   r¦   )rJ   rJ   rH   rR   rH   rR   )rJ   rY   rR   rõ   )rJ   rõ   rH   rõ   rR   rõ   rY   )rõ   rJ   rõ   rH   rõ   rR   ©rY   rJ   rR   rô   )rJ   rl   rH   rn   rR   rõ   râ   ©r¸   r¸   r¶   T©ÚrecordÚalwaysÚ rF   )rJ   rõ   rõ   rõ   rõ   rH   rR   )r   r#   Úslicer4   rƒ   rÎ   ÚwarningsÚcatch_warningsÚfilterwarningsÚFutureWarningr   Úcategory)r`   ra   r~   rÒ   r:   r:   r;   rd   è  s"    ÿzTestInsert.test_basicc              
   C   s~  g d¢g}g d¢g d¢g}t t|ddgƒg d¢ƒ t t|dg d¢dd�|ƒ t t|dddd�|ƒ t t|dddd�g d¢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g d¢dd�|ƒ t t|dg d¢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 )Nr¦   rG   r   rJ   r£   ru   rH   )rJ   rJ   rH   rJ   rR   rF   rŒ   é   rÊ   rY   rP   éüÿÿÿ)r   r#   r4   rƒ   r5   Úrepeatro   ZconcatenateÚTr   ry   )r`   ra   Ú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 d   ƒ n1 s<0    Y  t t¡�  t|g ddd� W d   ƒ n1 sv0    Y  d S )NrJ   rH   r   ru   Únonsense)r4   rƒ   rð   Úraisesry   r#   r  rj   r:   r:   r;   Útest_0d&  s
    
.zTestInsert.test_0dc              	   C   sä   G dd„ dt jƒ}t  d¡ |¡}ttt  |ddg¡|ƒƒ ttt  |g g ¡|ƒƒ ttt  |ddgddg¡|ƒƒ ttt  |tddƒddg¡|ƒƒ ttt  |tdddƒg ¡|ƒƒ t  d¡ |¡}ttt  |ddg¡|ƒƒ d S )	Nc                   @   s   e Zd ZdS )z*TestInsert.test_subclass.<locals>.SubClassNrÙ   r:   r:   r:   r;   ÚSubClass.  s   r1  r¨   r   rJ   rH   rP   rY   )	r4   rÛ   r5   rÜ   r   Ú
isinstancer#   r"  rƒ   ©r`   r1  ra   r:   r:   r;   Útest_subclass-  s     " zTestInsert.test_subclassc                 C   s<   t  g d¢¡}t  g d¢|g d¢¡ t|t  g d¢¡ƒ d S )Nr¦   rI   rQ   )r4   rƒ   r#   r   ©r`   rÅ   r:   r:   r;   Útest_index_array_copied:  s    z"TestInsert.test_index_array_copiedc                 C   s€   t jg d¢ddgd�}d}t  |d|¡}t|d t j||jd�ƒ dgd }t  |ddg|¡}t|ddg t j||jd�ƒ d S )	N))rJ   ra   )rH   r~   )rR   r‘   )ÚfoorŠ   )ÚbarÚa1râ   )rF   r  r   rH   rR   )r4   rƒ   r#   r   rÏ   )r`   ra   Úvalr~   r:   r:   r;   Útest_structured_array?  s    
ÿ
z TestInsert.test_structured_arrayc                 C   s”   t  t¡�0 t g d¢t ddg¡ddg¡ W d   ƒ n1 s@0    Y  t  t¡�, t g d¢tjg td�g ¡ W d   ƒ n1 s†0    Y  d S )NrI   r¶   r´   r¨   é   râ   )rð   r/  Ú
IndexErrorr4   r#   rƒ   Úfloatr{   r:   r:   r;   Útest_index_floatsI  s    >zTestInsert.test_index_floatsÚidxrF   r)  c                 C   sJ   t jtdd��( t g d¢|gddg¡ W d   ƒ n1 s<0    Y  d S )Nzout of bounds©ÚmatchrI   rR   rF   )rð   r/  r=  r4   r#   )r`   r@  r:   r:   r;   Útest_index_out_of_boundsO  s    z#TestInsert.test_index_out_of_boundsN)rq   rr   rs   rd   r-  r0  r4  r6  r;  r?  rð   rñ   rò   rC  r:   r:   r:   r;   r  æ  s   *
r  c                   @   s   e Zd Zdd„ ZdS )ÚTestAmaxc                 C   sb   g d¢}t t |¡dƒ g d¢g d¢g d¢g}t tj|dd�g d¢ƒ t tj|d	d�g d
¢ƒ d S )N©rR   rF   rS   r¨   rV   éûÿÿÿrÉ   ç      $@©rR   rÉ   ç      "@©rF   rG  r¾   ©rl   r·   r´   r   ru   )r»   rG  rI  rJ   )rI  rG  r»   )r   r4   Zamaxr}   r:   r:   r;   rd   W  s    þzTestAmax.test_basicN©rq   rr   rs   rd   r:   r:   r:   r;   rD  U  s   rD  c                   @   s   e Zd Zdd„ ZdS )ÚTestAminc                 C   sb   g d¢}t t |¡dƒ g d¢g d¢g d¢g}t tj|dd�g d¢ƒ t tj|d	d�g d
¢ƒ d S )NrE  g      ÀrH  rJ  rK  r   ru   )r·   r·   r´   rJ   )r·   r½   r´   )r   r4   Zaminr}   r:   r:   r;   rd   c  s    þzTestAmin.test_basicNrL  r:   r:   r:   r;   rM  a  s   rM  c                   @   s   e Zd Zdd„ ZdS )ÚTestPtpc                 C   sž   t  g d¢¡}t|jdd�dƒ t  g d¢g d¢g d¢g¡}t|jdd�g d¢ƒ t|jd	d�g d
¢ƒ t|jddd�g d¢gƒ t|jddd�dggƒ d S )NrE  r   ru   ç      .@rH  rJ  rK  )r¾   ç      @rP  rY   )rÉ   rÉ   rÉ   TrÁ   rZ   r»   )r4   rƒ   r   Zptpr}   r:   r:   r;   rd   o  s    
þzTestPtp.test_basicNrL  r:   r:   r:   r;   rN  m  s   rN  c                   @   s   e Zd Zdd„ ZdS )Ú
TestCumsumc              
   C   sô   g d¢}g d¢g d¢g d¢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  g d¢|¡}tt j|dd�|ƒ t  g d¢g d¢g d	¢g|¡}tt j|dd�|ƒ t  g d
¢g d¢g d¢g|¡}tt j|dd�|ƒ qJd S )N©rJ   rH   r¨   r¼   rm   rS   rF   ©rJ   rH   rR   rF   ©rS   rm   rn   rõ   ©r¨   rR   rF   rS   )rJ   rR   rW   r(  é   é#   é'   r   ru   )rm   rl   r¨   rW   )é   r¼   é   é   )rJ   rR   rm   r¨   )rS   r¼   r[  é   )r¨   rW   é   é   rJ   )r4   r  r  Úint16Úuint16Úint32Úuint32rÍ   rÎ   Ú	complex64Ú
complex128rƒ   r   Úcumsum)r`   ÚbaÚba2Úctypera   Úa2Útgtr:   r:   r;   rd   ~  s$    þÿÿzTestCumsum.test_basicNrL  r:   r:   r:   r;   rQ  |  s   rQ  c                   @   s   e Zd Zdd„ ZdS )ÚTestProdc                 C   sÚ   g d¢}g d¢g d¢g d¢g}t jt jt jt jt jt jt jt jfD ]’}t  	||¡}t  	||¡}|dv r†t
tt j|ƒ t
tt j|dƒ qBt|jdd�d	ƒ t|jdd�t  	g d
¢|¡ƒ t|jdd�t  	g d¢|¡ƒ qBd S )NrR  rS  rT  rU  ©Ú1r~   rJ   r   ru   é g  ©re   é$   éT   é´   rY   )r(  éb  éX  )r4   r_  r`  ra  rb  rÍ   rÎ   rc  rd  rƒ   r   ÚArithmeticErrorÚprodr   r   ©r`   rf  rg  rh  ra   ri  r:   r:   r;   rd   •  s"    ÿÿÿzTestProd.test_basicNrL  r:   r:   r:   r;   rk  “  s   rk  c                   @   s   e Zd Zdd„ ZdS )ÚTestCumprodc              	   C   s  g d¢}g d¢g d¢g d¢g}t jt jt jt jt jt jt jt jfD ]Î}t  	||¡}t  	||¡}|dv r”t
tt j|ƒ t
tt j|dƒ t
tt j|ƒ qBtt j|dd�t  	g d	¢|¡ƒ tt j|d
d�t  	g d¢g d¢g d¢g|¡ƒ tt j|dd�t  	g d¢g d¢g d¢g|¡ƒ qBd S )NrR  rS  rT  rU  rl  rJ   rY   ru   )rJ   rH   r<  éÜ   i(  iÈ  rn  r   )rS   r  é   rp  ro  )rJ   rH   rm   r(  )rS   rV  éÒ   rs  )r¨   rV  r‡   rt  )r4   r_  r`  ra  rb  rÍ   rÎ   rc  rd  rƒ   r   ru  Zcumprodr   rw  r:   r:   r;   rd   ©  s@    ÿ
ÿÿ
þþÿ
þþÿzTestCumprod.test_basicNrL  r:   r:   r:   r;   rx  §  s   rx  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Ð   g d¢}t  g d¢¡}t  g d¢¡}t  ddg¡}tt|ƒ|ƒ tt|dd�|ƒ tt|dd�|ƒ g d	¢}t  g d
¢¡}tt|ƒ|ƒ g d¢}t  g d¢¡}t  ddg¡}tt|ƒ|ƒ tt|dd�|ƒ d S )N)rJ   rF   rm   rn   r  )rR   rH   rJ   rS   )rY   rY   rF   r   rS   rH   ©r8   rR   )çš™™™™™ñ?çš™™™™™@r·   gš™™™™™É¿çš™™™™™¹¿)r~  gš™™™™™é?gš™™™™™	Àçš™™™™™¹?)TTFFrö   T)r4   rƒ   r   r   r	   )r`   rÅ   ÚoutÚout2Úout3r:   r:   r;   rd   Ä  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<  rV  rJ   rH   )r¨   é   rV  rY   )r¨   r<  é   ru   r   )rõ   r<  rV  rP   rR   r)  gæÇqÇñ?)
r4   r=   r^   r   r   r   ry   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¨   rV  rJ   rY   rH   r}  r   ru   )r8   rv   )r   r   r   )r`   rÅ   Zout1rƒ  r„  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�ˆ u ƒ tt||ƒdd	�D ]R\}\}}tt|ƒt	j
u ƒ t||ƒ t|jt	jƒ tt|ƒtdtˆ ƒ| ƒƒ qld S )
NrR   rY   r}  c                    s   g | ]}t ˆ |d �‘qS )r}  )r   )rê   r8   ©rÅ   r:   r;   rë   õ  rì   z#TestDiff.test_n.<locals>.<listcomp>rJ   rS   r   ©Ústart)Úlistr_   r   r]   r   r   Ú	enumeraterý   rÝ   r4   rÛ   r   r   rÏ   r  rü   Úmax)r`   r   Úexpectedr8   r‚  r:   r‰  r;   Útest_nò  s    
zTestDiff.test_nc                 C   sŒ   t jddt jd�}t jddgdd�t jdgdd�g}| t jg dd�gd ¡ t|dd�D ],\}}t||d	�}t||ƒ t|j	|j	ƒ qZd S )
Nz
1066-10-13z
1066-10-16râ   rJ   útimedelta64[D]r   rR   rŠ  r}  )
r4   r5   Z
datetime64rƒ   Úextendr�  r   r   r   rÏ   )r`   rÅ   r�  r8   r‡  r‚  r:   r:   r;   Ú
test_timesþ  s    þ
zTestDiff.test_timesc                 C   sö   t jddgddgddgddgd	d
ggddgddgddgddgddggd�}t|ƒ}t|jdgdgdgdgdggƒ t|jdgdgdgdgdggƒ tt|ƒt|ƒu ƒ t|dd�}t|jg g g g g gƒ t|jg g g g g gƒ tt|ƒt|ƒu ƒ d S )NrJ   rH   rR   rF   rS   rm   rn   rl   rõ   r¨   FT©Úmaskr}  )r   rƒ   r   r   r9   r•  r   rÝ   )r`   rÅ   r‚  r„  r:   r:   r;   r4  
  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 )NrS   rJ   r   )ÚprependrY   rm   rF   rH   )rv   r–  ©rR   rR   rR   )r–  rv   )r4   r5   r   r   r^   re  ro   r   r]   r=   ry   ©r`   rÅ   Úresultr�  r:   r:   r;   Útest_prepend  s$    



zTestDiff.test_prependc                 C   s<  t  d¡}t|dd�}g d¢}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 )NrS   r   )Úappend)rJ   rJ   rJ   rJ   r)  rH   rF   rJ   )rv   r›  rY   rV   rP   r—  rR   )r›  rv   )	r4   r5   r   r   ro   r   r]   r=   ry   r˜  r:   r:   r;   Útest_append1  s,    








zTestDiff.test_appendN)rq   rr   rs   rd   rˆ  r    r�  r“  r4  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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 )NrS   rH   rJ   )r4   r5   ra   r*  ro   Únd_ar{   r:   r:   r;   ÚsetupP  s    zTestDelete.setupc                 C   sˆ   t | j|ƒ}t | j|dd�}d| }tt|| j|f ƒ| j|d� t|dd d …df | jd|df ƒ}t|| jdd d …df |d� d S )NrJ   ru   zDelete failed for obj: %r)Úerr_msgr   )r   ra   rž  r   r,   )r`   ÚindicesÚa_delÚnd_a_delÚmsgÚxorr:   r:   r;   Ú_check_inverse_of_slicingT  s    ÿ$z$TestDelete._check_inverse_of_slicingc                 C   sH   g d¢}g d¢}|D ].}|D ]$}|D ]}t |||ƒ}|  |¡ q$qqd S )N)éúÿÿÿrP   r   rJ   rH   rF   rS   )rV   rY   rJ   rR   )r"  r¦  )r`   ZlimsZstepsr‹  ÚstopÚstepÚsr:   r:   r;   Útest_slices]  s    zTestDelete.test_slicesc                 C   sX  |   t ddgddgg¡¡ t t¡� t| jdgƒ W d   ƒ n1 sJ0    Y  t t¡� t| jdgƒ W d   ƒ n1 s‚0    Y  |   g d¢¡ |   g d¢¡ t t¡� t| jdƒ W d   ƒ n1 sÔ0    Y  t t¡� t| jd	ƒ W d   ƒ n1 �s0    Y  t t¡�" t| jd	gd
 ƒ W d   ƒ n1 �sJ0    Y  d S )Nr   rJ   rH   r  iœÿÿÿ)r   rY   rH   rH   )TFFTFTFrF   )	r¦  r4   rƒ   rð   r/  r=  r   ra   r]   r{   r:   r:   r;   Ú
test_fancyf  s    ,,*,zTestDelete.test_fancyc                 C   s   |   d¡ |   d¡ d S )Nr   r)  )r¦  r{   r:   r:   r;   Útest_single{  s    
zTestDelete.test_singlec                 C   s€   t  d¡}t t j¡� t|g dd� W d   ƒ n1 s:0    Y  t t¡� t|g dd� W d   ƒ n1 sr0    Y  d S )NrJ   r   ru   r.  )r4   rƒ   rð   r/  ry   r   r  rj   r:   r:   r;   r0    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;   r1  ‡  s   r1  r   rJ   rH   rP   )r4   rÛ   ra   rÜ   r   r2  r   r"  r3  r:   r:   r;   r4  †  s    zTestDelete.test_subclassc                 C   sR   t  d¡jdddd�}t|tdd ƒdd�}t|jj|jjƒ t|jj|jjƒ d S )	Nr¨   rH   rS   r«   r¬   é<   rJ   ru   )	r4   r5   ro   r   r"  r   r®   r¯   r°   )r`   rX   rû   r:   r:   r;   Útest_array_order_preserve�  s    z$TestDelete.test_array_order_preservec                 C   sŒ   t  t¡�* t g d¢t ddg¡¡ W d   ƒ n1 s:0    Y  t  t¡�* t g d¢tjg td�¡ W d   ƒ n1 s~0    Y  d S )NrI   r¶   r´   râ   )rð   r/  r=  r4   r   rƒ   r>  r{   r:   r:   r;   r?  š  s    8zTestDelete.test_index_floatsÚindexerrJ   c                 C   sX   t | jdƒ}t | j|ƒ}t||ƒ t | jddd�}t | jt dg¡dd�}t||ƒ d S )NrJ   ru   )r   ra   r   rž  r4   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 d   ƒ n1 sÎ0    Y  t t¡�, t t d	¡tjdgd
d�ƒ W d   ƒ n1 �s0    Y  d S )NrJ   F)rR   rJ   râ   TrY   ru   r   rH   zm8[ns])
r   r4   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)rq   rr   rs   rŸ  r¦  r«  r¬  r­  r0  r4  r¯  r?  rð   rñ   rò   r4   rƒ   r±  rµ  r:   r:   r:   r;   r�  N  s   		


	r�  c                   @   sü   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zdd„ Zej dejejejejg¡dd„ ƒZej dejejejejg¡dd„ ƒZej dejejejejg¡dd„ ƒZej dejejejejg¡dd „ ƒZd!S )"ÚTestGradientc                 C   sf   ddgddgg}t  |¡}t  ddgddgg¡t  ddgddgg¡g}tt|ƒ|ƒ tt|ƒ|ƒ d S )NrJ   rR   rF   r´   r·   r¸   r¶   )r4   rƒ   r   r   ©r`   ÚvrÅ   Údxr:   r:   r;   rd   Å  s    
ÿzTestGradient.test_basicc              	   C   sÆ   t  t  d¡¡}g d¢}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 )NrS   )r¶   r´   r¾   rI  ç      &@é   r·   ç      ø?rH   rJ   ru   z.*scalars or 1drY   )
r4   re  r^   r5   ro   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»  rS   rH   rJ   rZ   ru   )	r4   r5   ro   re  r^   r   r]   r   r  )r`   r¾  rÅ   r:   r:   r;   Útest_badargsæ  s    zTestGradient.test_badargsc                 C   sJ   t jg d¢dd�}t jg d¢dd�}tt|ƒ|ƒ t|jt  d¡kƒ d S )N)z
1910-08-16z
1910-08-11z
1910-08-10z
1910-08-12z
1910-10-12z
1910-12-12z
1912-12-12zdatetime64[D]râ   )rF  rV   r   é   é=   iŒ  iÛ  r‘  ©r4   rƒ   r   r   r   rÏ   ©r`   rÅ   r¹  r:   r:   r;   Útest_datetime64ö  s    ýþzTestGradient.test_datetime64c                 C   s�   t jjddgddggddgddggd�}t|ƒd }tt|ƒt|ƒƒ t|j|juƒ t j d¡}t jj	|d< t j|dd	� t
|jg d
¢ƒ d S )NrJ   rR   rF   Fr”  r   rS   rH   ©Ú
edge_order)FFTFF)r4   r   rƒ   r   r   rÝ   r   Z_maskr5   Úmaskedr   r•  )r`   rÅ   r‚  Úx2r:   r:   r;   Útest_masked  s    ÿzTestGradient.test_maskedc                 C   s  t  ddd¡}|d |d  }d|d  d|d   d|  }d|d  d|  d }t  t j||dd	�| d ¡}tt  |d
k ¡dkƒ t j d¡ t  t j d¡¡}d|d  d|d   d|  }d|d  d|  d }t  t j||dd	�| d ¡}tt  |d
k ¡dkƒ d S )Nr   rJ   r¨   rH   rR   rF   rm   rl   rÆ  g¸…ëQ¸ž?T)	r4   ÚlinspaceÚabsr   r   r¤   ÚrandomÚseedÚsort)r`   rÅ   r¹  rÑ   Z
analyticalZ	num_errorr:   r:   r;   Útest_second_order_accurate  s      z'TestGradient.test_second_order_accuratec                 C   sâ  t  g d¢¡}t  |d¡| dd¡ }t  g d¢¡}t  d¡}t  g d¢d¡}t  g d¢d¡}t  g d	¢d¡}t  g d
¢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 )N)r   r´   r·   r½   r¾   r¾   )rm   rJ   rY   rJ   )r¸   ç      à?r¶   r·   r¾   rP  rÉ   )r´   r¼  r¶   r¶   rÑ  r¸   )ç      @r¼  r¶   r¶   rÑ  ç      à¿)r½   r·   ç333333û?rÑ  ç      Ð?r¸   )r¾   r·   rÔ  rÑ  rÕ  g      Ð¿rH   r¶   rZ   )rv   rÇ  r   r[   )r4   rƒ   Ztilero   r5   r   r   r	   r+  r   r?   )r`   ÚfZx_unevenZx_evenZfdx_even_ord1Zfdx_even_ord2Zfdx_uneven_ord1Zfdx_uneven_ord2rÇ  Zexp_resÚres1Úres2Úres3r:   r:   r;   Útest_spacing%  sl    
ÿÿ

ÿÿ
zTestGradient.test_spacingc                 C   s@  ddgddgg}t  |¡}t  ddgddgg¡t  ddgddgg¡g}tt|dd	�|d ƒ tt|dd	�|d ƒ tt|d
d	�|d ƒ tt|dd	�|d |d gƒ tt|d d	�|d |d gƒ tt|d d	�t|ƒƒ tt|dddd	�|d d |d d gƒ ttt|dddd	� tt jt|dd	� tt jt|dd	� d S )NrJ   rR   rF   r´   r·   r¸   r¶   r   ru   rY   r[   rH   rV   )r4   rƒ   r   r   r	   r   r  ry   r·  r:   r:   r;   Útest_specific_axese  s"    
ÿÿzTestGradient.test_specific_axesc                 C   sJ   t jg d¢dd�}t jg d¢dd�}tt|ƒ|ƒ t|jt  d¡kƒ d S )N)rF  rV   r¨   r  rÂ  iA  é,  r‘  râ   )rH   rn   rn   r»  éš   éw   iëÿÿÿrÃ  rÄ  r:   r:   r;   Útest_timedelta64  s    þþzTestGradient.test_timedelta64c                 C   sD   t jt jt jfD ].}t jg d¢|d�}tt|ƒjt  |¡jƒ qd S )NrŒ   râ   )	r4   Ú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 )NrH   rJ   rÆ  rR   r   )r   r4   r5   r   r]   r{   r:   r:   r;   Útest_values�  s    zTestGradient.test_valuesÚf_dtypec                 C   s2   t jg d¢|d�}t|ƒ}t|dgt|ƒ ƒ d S )N)rS   rF   rR   rH   rJ   râ   rY   ©r4   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 )NrJ   rR   rY   râ   rH   )r4   ÚiinforŽ  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   sB   t jg d¢|d�}t  g d¢¡}t||ƒ}t|dgt|ƒ ƒ d S )NrŽ   râ   ©r   rH   rF   rP   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 )NrY   râ   rH   r   rÑ  )r4   rè  ÚminrŽ  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)rq   rr   rs   rd   r¿  rÀ  rÅ  rÊ  rÐ  rÚ  rÛ  rß  râ  rã  rð   rñ   rò   r4   r  r`  rb  Zuint64rç  r  r_  ra  Úint64rë  rî  rð  r:   r:   r:   r;   r¶  Ã  s6   @ÿ
ÿ
ÿ
ÿr¶  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú	TestAnglec                 C   s¸   dt  d¡d dt  d¡ d  dddddd	g}t|ƒ}t  d
¡t  d¡dt jd t jt j d t  d
¡ t jt  d
¡ g}t|dd�}t  |¡d t j }t||dƒ t||dƒ d S )Nù      ð?      @rH   r´   r  rJ   rY   ù       €      ð¿ù      ð?      Ày      ð¿      @r·   r¶   r   T)Údegrr  r¼   )r4   Úsqrtr   ÚarctanÚpirƒ   r
   )r`   rÅ   rÑ   ZyoÚzZzor:   r:   r;   rd   Á  s     ÿ ýzTestAngle.test_basicc                 C   sŒ   t j ddt  d¡d d g¡}t jj|d< t j t  d¡dt  d¡g¡}t jj|d< t|ƒ}tt|ƒt|ƒƒ t|j	|j	ƒ t||ƒ d S )Nró  rJ   rH   ù      ð?      ð?r·   r   r¶   )
r4   r   rƒ   r÷  rÈ  rø  r   r   rÝ   r•  )r`   rÅ   r�  rÓ   r:   r:   r;   r4  Î  s     zTestAngle.test_subclassN)rq   rr   rs   rd   r4  r:   r:   r:   r;   rò  ¿  s   rò  c                	   @   s²   e Zd Ze g d¢¡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 g d¢¡e g d¢¡e g d¢¡g¡dd„ ƒZdd„ Zdd„ ZdS )ÚTestTrimZeros)r   r   rJ   r   rH   rR   rF   r   c                    s   d}‡ fdd„|D ƒS )N)ra   r~   r‘   r  c                 3   s   | ]}t ˆ |ƒV  qd S r3   )Úgetattr)rê   Únamer{   r:   r;   Ú	<genexpr>â  rì   z'TestTrimZeros.values.<locals>.<genexpr>r:   )r`   Z
attr_namesr:   r{   r;   rþ   à  s    zTestTrimZeros.valuesc                 C   s6   t jdd… }|  ¡ D ]}t|ƒ}t||| ƒ qd S )NrH   rY   ©r4   Ús_rþ   r/   r   ©r`   ÚslcÚarrr´  r:   r:   r;   rd   ä  s    zTestTrimZeros.test_basicc                 C   s:   t jd d… }|  ¡ D ]}t|dd�}t||| ƒ qd S )NrY   r~   ©Ztrimr   r  r:   r:   r;   Útest_leading_skipê  s    zTestTrimZeros.test_leading_skipc                 C   s:   t jdd … }|  ¡ D ]}t|dd�}t||| ƒ qd S )NrH   r«   r  r   r  r:   r:   r;   Útest_trailing_skipð  s    z TestTrimZeros.test_trailing_skipc                 C   sZ   |   ¡ D ]L}tj||jd�}t|dd�}t|ƒdks8J ‚t|dd�}t|ƒdksJ ‚qd S )Nrâ   ÚBr  r   rÖ  )rþ   r4   Z
zeros_likerÏ   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  )r4   r=   r/   r   ©r`   r  r´  r:   r:   r;   Útest_size_zero   s    
zTestTrimZeros.test_size_zeror  )r   l            r   )r   l            r   )r   l            r   c                 C   s(   t jdd… }t|ƒ}t||| ƒ d S )NrJ   rH   )r4   r  r/   r   )r`   r  r  r´  r:   r:   r;   Útest_overflow  s    zTestTrimZeros.test_overflowc                 C   s$   t  g d¢¡}t|ƒ}t||ƒ d S )N)NrJ   N)r4   rƒ   r/   r   r
  r:   r:   r;   Útest_no_trim  s    zTestTrimZeros.test_no_trimc                 C   s    t | j ¡ ƒ}t|tƒsJ ‚d S r3   )r/   ra   Útolistr2  rŒ  )r`   r´  r:   r:   r;   Útest_list_to_list  s    zTestTrimZeros.test_list_to_listN)rq   rr   rs   r4   rƒ   ra   rÌ   r>  r~   Úcomplexr‘   r³  r  rþ   rd   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  g d¢¡}t|dk|ƒ}t|g d¢ƒ d S )N)rJ   rR   rH   rJ   rH   rR   rR   rJ   )rR   rH   rH   rR   rR   )r4   rƒ   r   r   r}   r:   r:   r;   rd     s    zTestExtins.test_basicc                    sÖ   t ttg d¢ddgddgƒ t g d¢¡‰ tˆ g d¢g d¢ƒ tˆ g d	¢ƒ tˆ t d
¡g ƒ tˆ t dd¡ƒ tˆ g d¢ddgƒ tˆ g d¢ƒ tt	d‡ fdd„ƒ t ddg¡‰ tˆ ddgdƒ tˆ ddgƒ d S )NrŒ   TFr   rJ   )rJ   rF   rR   rH   rS   rl   rn   )r   rJ   r   rJ   r   rJ   r   ©rH   rF   rm   )rJ   rH   rR   rF   rS   rm   rn   rn   rl   )rJ   r   rJ   r   rJ   r   rJ   rõ   )rl   rH   rõ   rF   rl   rm   rõ   z!Cannot insert from an empty arrayc                      s   t ˆ g d¢g ƒS )N)r   r   r   r   r   rJ   r   )r)   r:   ©ra   r:   r;   Ú<lambda>0  rì   z'TestExtins.test_place.<locals>.<lambda>Z12Z34Ú9)
r   r  r)   r4   rƒ   r   r=   r5   r   r]   r{   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`   ra   r•  Úacr‘   r:   r:   r;   Ú	test_both7  s    
zTestExtins.test_bothN)rq   rr   rs   rd   r  r  r:   r:   r:   r;   r    s   r  r¶   c                 C   s   |t  | ¡ S r3   ©ÚmathÚfloor©rÅ   rÑ   r:   r:   r;   Ú_foo1C  s    r  r¸   c                 C   s   |t  | ¡ | S r3   r  )rÅ   rÑ   rú  r:   r:   r;   Ú_foo2G  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   s4   dd„ }t |ƒ}|g d¢g d¢ƒ}t|g d¢ƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   ©ra   r~   r:   r:   r;   ÚaddsubtractN  s    z.TestVectorize.test_simple.<locals>.addsubtract©r   rR   rm   rõ   ©rJ   rR   rS   rn   ©rJ   rm   rJ   rH   ©r2   r   ©r`   r!  rÖ  r,  r:   r:   r;   Útest_simpleM  s    zTestVectorize.test_simplec                 C   s0   dd„ }t |ƒ}|g d¢dƒ}t|g d¢ƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   r   r:   r:   r;   r!  Y  s    z.TestVectorize.test_scalar.<locals>.addsubtractr"  rS   )rS   rl   rJ   rF   r%  r&  r:   r:   r;   Útest_scalarX  s    zTestVectorize.test_scalarc                 C   s0   t  ddd¡}tdd„ ƒ}||ƒ}t||ƒ d S )NrV   rH   i'  c                 S   s   | S r3   r:   r‰  r:   r:   r;   r  e  rì   z*TestVectorize.test_large.<locals>.<lambda>)r4   rË  r2   r   )r`   rÅ   rÖ  rÑ   r:   r:   r;   Ú
test_largec  s    zTestVectorize.test_largec                 C   sR   t tjƒ}t ddtj tjdtj dtj g¡}||ƒ}t |¡}t||ƒ d S )Nr   rÑ  r¼  rH   )r2   r  Úcosr4   rƒ   rù  r
   )r`   rÖ  ÚargsÚr1Úr2r:   r:   r;   Ú
test_ufunci  s
    
(
zTestVectorize.test_ufuncc                 C   sf   ddd„}t |ƒ}t g d¢¡}||ƒ}t g d¢¡}t||ƒ ||dƒ}t g d¢¡}t||ƒ d S )	NrJ   c                 S   s   | | S r3   r:   r   r:   r:   r;   r7  r  s    z(TestVectorize.test_keywords.<locals>.foorŒ   rÊ   rH   rQ   )rJ   ©r2   r4   rƒ   r   ©r`   r7  rÖ  r+  r,  r-  r:   r:   r;   Útest_keywordsp  s    


zTestVectorize.test_keywordsc                 C   s:   t ttgd�}|t d¡dƒ}|t d¡ƒ}t||ƒ d S ©N©Úotypesr·   r¶   ©r2   r  r>  r4   r5   r   ©r`   rÖ  r,  r-  r:   r:   r;   Ú test_keywords_with_otypes_order1~  s    z.TestVectorize.test_keywords_with_otypes_order1c                 C   s:   t ttgd�}|t d¡ƒ}|t d¡dƒ}t||ƒ d S r2  r5  r6  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 )Nr3  r·   r¶   ©rÑ   r5  ©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 )Nr3  çÍÌÌÌÌÌ$@r  )rú  rY   r9  ©r2   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 )	Nr3  r  r<  rY   )rú  rÅ   rÑ   rJ   rH   rR   r=  r6  r:   r:   r;   Ú+test_keywords_with_otypes_several_kwd_args2¬  s
    z9TestVectorize.test_keywords_with_otypes_several_kwd_args2c                 C   s4   dd l }zt|jƒ W n ty.   tƒ ‚Y n0 d S r  )rÍ  r2   Ú	randrangeÚ	ExceptionÚAssertionError)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 g d¢¡}||d�}t g d¢¡}t||ƒ |d|d�}t||ƒ ||dd	�}t g d
¢¡}t||ƒ d S )NrJ   c                 S   s   | | S r3   r:   r   r:   r:   r;   r7  Ä  s    z5TestVectorize.test_keywords2_ticket_2100.<locals>.foorŒ   r  rÊ   )r~   ra   rH   ©r~   rQ   )rJ   r/  r0  r:   r:   r;   Útest_keywords2_ticket_2100Á  s    



z(TestVectorize.test_keywords2_ticket_2100c                 C   sr   dd„ }t j|ddgd�}ddg}t||ddgg d	¢d
�ƒ t||ddgg d	¢d�ƒ t||ddgg d	¢ƒƒ d S )Nc                 S   s.   t |ƒ}| d¡}|r*||  | d¡ }q|S r  )rŒ  Úpop)rÅ   ÚpÚ_pr´  r:   r:   r;   Ú	mypolyvalÔ  s
    
z;TestVectorize.test_keywords3_ticket_2100.<locals>.mypolyvalrG  rJ   )ÚexcludedrR   rm   r   rŒ   )rÅ   rG  )rG  )r4   r2   r   )r`   rI  ZvpolyvalZansr:   r:   r;   Útest_keywords3_ticket_2100Ò  s    z(TestVectorize.test_keywords3_ticket_2100c                 C   s.   t dd„ ƒ}t|ddgddgd�ddgƒ d S )	Nc                  [   s   d}| D ]}|| | 9 }q|S ©Nr¶   r:   )Úkwr´  Z_kr:   r:   r;   rÖ  ã  s    z3TestVectorize.test_keywords4_ticket_2100.<locals>.frJ   rH   rR   rF   r   rl   r%  ©r`   rÖ  r:   r:   r;   Útest_keywords4_ticket_2100á  s    
z(TestVectorize.test_keywords4_ticket_2100c                 C   s,   t dd„ ƒ}t|ddgddgƒddgƒ d S )Nc                  W   s
   t  | ¡S r3   )r4   rv  )r¸  r:   r:   r;   rÖ  î  s    z3TestVectorize.test_keywords5_ticket_2100.<locals>.frJ   rH   rR   rF   rl   r%  rN  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 ©NrJ   r:   r:   r:   r:   r;   r7  õ  s    z5TestVectorize.test_coverage1_ticket_2100.<locals>.foorJ   r%  ©r`   r7  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:   r‰  r:   r:   r;   r7  ü  s    z3TestVectorize.test_assigning_docstring.<locals>.foozProvided documentation)Údoc)r2   r   Ú__doc__)r`   r7  rÖ  rT  r:   r:   r;   Útest_assigning_docstringû  s    z&TestVectorize.test_assigning_docstringc                 C   s`   G dd„ dƒ}t t|ƒ jƒt d¡ƒt d¡d ƒ t t|jƒ|ƒ t d¡ƒt d¡d ƒ d S )Nc                   @   s   e Zd ZdZdd„ ZdS )z9TestVectorize.test_UnboundMethod_ticket_1156.<locals>.FoorH   c                 S   s
   || j  S r3   rD  rj   r:   r:   r;   r8    s    z=TestVectorize.test_UnboundMethod_ticket_1156.<locals>.Foo.barN)rq   rr   rs   r~   r8  r:   r:   r:   r;   ÚFoo	  s   rW  rõ   rH   )r   r2   r8  r4   r5   )r`   rW  r:   r:   r;   Útest_UnboundMethod_ticket_1156  s    ÿÿz,TestVectorize.test_UnboundMethod_ticket_1156c                 C   sl   t dd„ ƒ}|t d¡ƒ}|t dd¡ƒ}t dd„ ƒ}|t dd¡ƒ}|t d¡ƒ}t||ƒ t||ƒ d S )Nc                 S   s   | S r3   r:   r‰  r:   r:   r;   r    rì   z@TestVectorize.test_execution_order_ticket_1487.<locals>.<lambda>rR   r�  c                 S   s   | S r3   r:   r‰  r:   r:   r;   r    rì   )r2   r4   r5   r   )r`   Úf1Zres1aZres1bÚf2Zres2bZres2ar:   r:   r;   Ú test_execution_order_ticket_1487  s    
z.TestVectorize.test_execution_order_ticket_1487c                 C   s$   t  dd„ ¡}d}t|||ƒƒ d S )Nc                 S   s   | S r3   r:   r‰  r:   r:   r;   r  !  rì   z7TestVectorize.test_string_ticket_1892.<locals>.<lambda>Zd0123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789)r4   r2   r   )r`   rÖ  rª  r:   r:   r;   Útest_string_ticket_1892  s    z%TestVectorize.test_string_ticket_1892c                    sN   dg‰ t ‡ fdd„ƒ}d|_t d¡}t||ƒ|| ƒ tˆ d t|ƒƒ d S )Nr   c                    s   ˆ d  d7  < | d S )Nr   rJ   rH   r:   r‰  ©Z_callsr:   r;   rÖ  )  s    z#TestVectorize.test_cache.<locals>.fTrS   )r2   Úcacher4   r5   r   r   rü   ©r`   rÖ  rÅ   r:   r]  r;   Ú
test_cache%  s    
zTestVectorize.test_cachec                 C   s0   t  dd„ ¡}d|_t  d¡}t||ƒ|ƒ d S )Nc                 S   s   | S r3   r:   r‰  r:   r:   r;   r  4  rì   z+TestVectorize.test_otypes.<locals>.<lambda>rŠ   rS   )r4   r2   r4  r5   r   r_  r:   r:   r;   Útest_otypes3  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
¡g d¢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¡g d¢dgfƒ ttƒ� t d¡ W d   ƒ n1 �sV0    Y  ttƒ� t d¡ W d   ƒ n1 �sŠ0    Y  ttƒ� t d¡ W d   ƒ n1 �s¾0    Y  d S )Nz(x)->()r‰  r:   z	(x,y)->()r  z(x),(y)->()r9  z(x)->(y)z(x)->(y),()z(),(a,b,c),(d)->(d,e))r:   )ra   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]   r{   r:   r:   r;   Útest_parse_gufunc_signature9  sP    

ÿ
ÿ

ÿ
ÿ
ÿ

ÿ
ÿ

ÿ
ÿÿþ
*
*
z)TestVectorize.test_parse_gufunc_signaturec                 C   s8   dd„ }t |dd�}|g d¢g d¢ƒ}t|g d¢ƒ d S )Nc                 S   s   | |kr| | S | | S d S r3   r:   r   r:   r:   r;   r!  \  s    z8TestVectorize.test_signature_simple.<locals>.addsubtractz	(),()->()©Ú	signaturer"  r#  r$  r%  r&  r:   r:   r;   Útest_signature_simple[  s    z#TestVectorize.test_signature_simplec                 C   s:   dd„ }t |dd�}|ddgddggƒ}t|ddgƒ d S )	Nc                 S   s   |   ¡ S r3   ©r¹   r  r:   r:   r;   r¹   g  s    z4TestVectorize.test_signature_mean_last.<locals>.meanz(n)->()re  rJ   rR   rH   rF   r%  )r`   r¹   rÖ  r,  r:   r:   r;   Útest_signature_mean_lastf  s    z&TestVectorize.test_signature_mean_lastc                 C   sB   dd„ }t |dd�}|ddgddggƒ}t|d	dgd	dggƒ d S )
Nc                 S   s   | |   ¡  S r3   rh  r  r:   r:   r;   Úcentero  s    z3TestVectorize.test_signature_center.<locals>.centerú(n)->(n)re  rJ   rR   rH   rF   rY   r%  )r`   rj  rÖ  r,  r:   r:   r;   Útest_signature_centern  s    z#TestVectorize.test_signature_centerc                 C   s^   t dd„ dd�}|g d¢ƒ}tt|tƒo2t|ƒdkƒ t|d g d¢ƒ t|d g d¢ƒ d S )	Nc                 S   s   | | fS r3   r:   r‰  r:   r:   r;   r  w  rì   z:TestVectorize.test_signature_two_outputs.<locals>.<lambda>ú	()->(),()re  rŒ   rH   r   rJ   )r2   r   r2  Útuplerü   r   ©r`   rÖ  r,  r:   r:   r;   Útest_signature_two_outputsv  s
    z(TestVectorize.test_signature_two_outputsc                 C   sê   t tjdd�}|ddgg d¢ƒ}t|g d¢g d¢gƒ |ddgggg d¢ƒ}t|g d¢g d¢gggƒ |ddgddggg d¢ƒ}t|g d¢g d¢gg d¢g d¢ggƒ |ddgg d¢g d¢gƒ}t|g d¢g d¢gg d¢g d¢ggƒ d S )	Nz(a),(b)->(a,b)re  rJ   rH   rŒ   r  r   r›   )r2   r4   r7   r   ro  r:   r:   r;   Útest_signature_outer}  s    ÿÿz"TestVectorize.test_signature_outerc                 C   sX   t dd„ dd�}|g d¢ƒ}t|ddgƒ |g d¢g d¢gƒ}t|ddgdd	ggƒ d S )
Nc                 S   s   | d d… S ©NrY   r:   r‰  r:   r:   r;   r  Ž  rì   z<TestVectorize.test_signature_computed_size.<locals>.<lambda>z(n)->(m)re  rŒ   rJ   rH   rÊ   rR   r%  ro  r:   r:   r;   Útest_signature_computed_size�  s
    z*TestVectorize.test_signature_computed_sizec                 C   sN   ddd„}t |ddhd�}t|g d¢ƒg d¢ƒ t|g d¢d	d
�g d¢ƒ d S )NrJ   c                 S   s   | | S r3   r:   r   r:   r:   r;   r7  —  s    z2TestVectorize.test_signature_excluded.<locals>.fooú()->()r~   )rf  rJ  rŒ   rÊ   r   rD  )rJ   r%  rR  r:   r:   r;   Útest_signature_excluded•  s    
z%TestVectorize.test_signature_excludedc                 C   sD   t dd„ ddgd�}|g d¢ƒ}t|jt d¡ƒ t|g d¢ƒ d S )Nc                 S   s   | S r3   r:   r‰  r:   r:   r;   r  Ÿ  rì   z5TestVectorize.test_signature_otypes.<locals>.<lambda>rk  rÎ   ©rf  r4  rŒ   )r2   r   rÏ   r4   r   ro  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 d   ƒ n1 s:0    Y  ttdƒ� |ddƒ W d   ƒ n1 sn0    Y  ttdƒ�" |ddgg d¢ƒ W d   ƒ n1 sª0    Y  t tjd	d�}ttdƒ� |ddƒ W d   ƒ n1 sì0    Y  d S )
Nz(n),(n)->(n)re  zwrong number of positionalrJ   rH   zdoes not have enough dimensionsú$inconsistent size for core dimensionrŒ   rt  )r2   Úoperatorr6   r   r  r]   rN  r:   r:   r;   Útest_signature_invalid_inputs¤  s    *ÿ(ÿ0z+TestVectorize.test_signature_invalid_inputsc                 C   sÒ   t dd„ dd�}ttdƒ� |g d¢ƒ W d   ƒ n1 s<0    Y  t dd„ dd�}ttd	ƒ� |d
ƒ W d   ƒ n1 s~0    Y  t dd„ dd�}ttd	ƒ� |d
dgƒ W d   ƒ n1 sÄ0    Y  d S )Nc                 S   s   | d d… S rr  r:   r‰  r:   r:   r;   r  µ  rì   z>TestVectorize.test_signature_invalid_outputs.<locals>.<lambda>rk  re  rx  rŒ   c                 S   s   | S r3   r:   r‰  r:   r:   r;   r  º  rì   rm  zwrong number of outputsrJ   c                 S   s   | | fS r3   r:   r‰  r:   r:   r;   r  ¾  rì   rt  rH   )r2   r   r]   rN  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 d   ƒ n1 sH0    Y  d|_t||ƒ|ƒ t jdd„ d	d
�}ttdƒ� ||ƒ W d   ƒ n1 s 0    Y  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 d   ƒ n1 �sP0    Y  d S )Nc                 S   s   | S r3   r:   r‰  r:   r:   r;   r  Ä  rì   z5TestVectorize.test_size_zero_output.<locals>.<lambda>r   rS   râ   r4  rŠ   c                 S   s   | S r3   r:   r‰  r:   r:   r;   r  Ì  rì   rt  re  c                 S   s   | S r3   r:   r‰  r:   r:   r;   r  Ð  rì   rv  c                 S   s   | S r3   r:   r‰  r:   r:   r;   r  Ó  rì   rk  c                 S   s   | S r3   r:   r‰  r:   r:   r;   r  Ö  rì   c                 S   s   | gS r3   r:   r‰  r:   r:   r;   r  Ù  rì   z()->(n)znew output dimensions)	r4   r2   r=   Úintr   r]   r4  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  g d¢g d¢g d¢g¡ |¡}t  g d¢g d¢g d¢g¡ |¡}t jt jd	d
�}|||ƒ}tt|ƒ|ƒ t|g d¢g d¢g d¢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½   r¾   rÉ   )rP  r»   rI  z(m,m),(m)->(m)re  )r¶   r·   r´   )r½   rÉ   r¾   )rP  rI  r»   c                 S   s   | | S r3   r:   r  r:   r:   r;   r  ì  rì   z/TestVectorize.test_subclasses.<locals>.<lambda>)r4   rÛ   rƒ   rÜ   r2   Úmatmulr   rÝ   )r`   rÚ   rû   r¸  Zmatvecr,  Zmultr:   r:   r;   rÞ   Ý  s     
þþ"

zTestVectorize.test_subclassesN)&rq   rr   rs   r'  r(  r)  r.  r1  r7  r8  r;  r>  r?  rC  rE  rK  rO  rP  rS  rV  rX  r[  r\  r`  ra  rd  rg  ri  rl  rp  rq  rs  ru  rw  rz  r{  r}  rÞ   r:   r:   r:   r;   r  K  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)rq   rr   rs   Úitersr�  Ústaticmethodr‚  r:   r:   r:   r;   ÚAó  s   r…  úPython lacks refcounts©Úreasonz
name, incrr�  )r‚  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 | ¡  n
| ¡  0 d S )Nr   rJ   r¨   rS   )Úgcrý  r…  ÚdisableÚsysÚgetrefcountr_   rƒ  r4   Z
frompyfuncrÖ  r5   r   ZcollectÚenable)	r`   rþ  Úincrr‰  ZA_funcÚrefcountrŠ   ra   r‚  r:   r:   r;   Útest_frompyfunc_leaksý  s    

zTestLeaks.test_frompyfunc_leaksN)rq   rr   rs   r…  rð   rñ   Úskipifr   rò   rƒ  r�  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§  rS   rF  r¼   ©r4   r5   r   r   ©r`   rÅ   Úbinsr:   r:   r;   Útest_forward  s    zTestDigitize.test_forwardc                 C   s6   t  ddd¡}t  ddd¡}tt||ƒt  d¡ƒ d S )NrS   r§  rY   rF  r¼   r“  r”  r:   r:   r;   Útest_reverse"  s    zTestDigitize.test_reversec                 C   s:   t dƒ}t | ¡ | ¡ d¡}tt t||ƒdk¡ƒ d S )Nr¨   r   ©r   r4   rË  rï  rŽ  r   r¤   r   )r`   rÅ   Úbinr:   r:   r;   Útest_random'  s    zTestDigitize.test_randomc                 C   sF   g d¢}g d¢}g d¢}t t||ƒ|ƒ g d¢}t t||dƒ|ƒ d S )N)rJ   rS   rF   r¨   rl   r¼   r   )rJ   rS   r¨   )rJ   rH   rJ   rR   rH   rR   r   )r   rJ   rJ   rH   rH   rR   r   T)r   r   )r`   rÅ   r•  Zdefault_answerZright_answerr:   r:   r;   Útest_right_basic,  s    zTestDigitize.test_right_basicc                 C   s4   t  dd¡}t  dd¡}tt||dƒt  d¡ƒ d S )Nr§  rS   rF   Tr¼   r“  r”  r:   r:   r;   Útest_right_open4  s    zTestDigitize.test_right_openc                 C   s8   t  ddd¡}t  ddd¡}tt||dƒt  d¡ƒ d S )NrS   r§  rY   rF   Tr¼   r“  r”  r:   r:   r;   Útest_right_open_reverse9  s    z$TestDigitize.test_right_open_reversec                 C   s<   t dƒ}t | ¡ | ¡ d¡}tt t||dƒdk¡ƒ d S )Nr¨   Tr˜  r”  r:   r:   r;   Útest_right_open_random>  s    z#TestDigitize.test_right_open_randomc                 C   sÔ   g d¢}g d¢}t t||dƒg d¢ƒ t t||dƒg d¢ƒ g d¢}t t||dƒg d¢ƒ t t||dƒg d	¢ƒ g d
¢}t t||dƒg d¢ƒ t t||dƒg d¢ƒ g d¢}ttt||ƒ g d¢}ttt||ƒ d S )N)rY   r   rJ   rH   r¥   F)r   rH   rR   rR   T)r   r   rH   rR   r�   )rR   rH   r   r   )rR   rR   rH   r   r£   )r   r   rF   rF   )r   r   r   rF   r”   )rJ   rJ   r   rJ   )r   r   r   r]   r”  r:   r:   r;   Útest_monotonicC  s    zTestDigitize.test_monotonicc                 C   s:   g d¢}g d¢}t tt||ƒ || }}t tt||ƒ d S )N)rJ   rH   y      @      ð?rŒ   )r   r  r   r”  r:   r:   r;   Útest_casting_errorS  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;   r…  \  s   r…  rS   rJ   rR   FT)r4   rÛ   r5   rÜ   r   r2  r   )r`   r…  ra   r~   r:   r:   r;   Útest_return_typeZ  s
    zTestDigitize.test_return_typec                 C   s&   d}t t ||d |d g¡dƒ d S ©Nl          rJ   ©r   r4   r   r5  r:   r:   r;   Útest_large_integers_increasingc  s    z+TestDigitize.test_large_integers_increasingz8gh-11022: np.core.multiarray._monoticity loses precisionr‡  c                 C   s&   d}t t ||d |d g¡dƒ d S r¢  r£  r5  r:   r:   r;   Útest_large_integers_decreasingh  s    z+TestDigitize.test_large_integers_decreasingN)rq   rr   rs   r–  r—  rš  r›  rœ  r�  rž  rŸ  r   r¡  r¤  rð   rñ   Úxfailr¥  r:   r:   r:   r;   r’    s   	ÿr’  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestUnwrapc                 C   sH   t tdddtj  gƒddgƒ tt tttdƒd ƒƒtjk ¡ƒ d S )NrJ   rH   r¨   r  )r   r0   r4   rù  r   r¤   r   r   r{   r:   r:   r;   r'  r  s     zTestUnwrap.test_simplec                 C   sÐ   t tddgdd�ddgƒ tt tttdƒd dd�ƒdk ¡ƒ t g d¢¡}t |d¡}t t|dd�|ƒ t g d	¢¡}t |d
¡}t|d
d�}t |g d¢ƒ t|d
dd�}t |g d	¢ƒ |j	|j	ksÌJ ‚d S )NrJ   i  éÿ   ©ÚperiodrH   r¨   éè  )r   éK   é–   éá   rÜ  )r   r¬  r­  r®  rÜ  i®  éú   )r   r¬  r­  r®  rÜ  rr  éŒ   )rª  Zdiscont)
r   r0   r   r4   r¤   r   r   rƒ   ÚmodrÏ   )r`   Z
simple_seqZwrap_seqZ
uneven_seqZwrap_unevenZ
no_discontZ
sm_discontr:   r:   r;   Útest_periodx  s    &zTestUnwrap.test_periodN)rq   rr   rs   r'  r²  r:   r:   r:   r;   r§  p  s   r§  rÏ   ÚOÚ
AllIntegerZFloatÚM)r   rJ   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sHJ ‚t|t|ƒƒ |dk rpt|t  g ¡ƒ n0|dkrŠt|t  	d¡ƒ nt
t j|dd�ddƒ d S )	Nrâ   r:   r³  rJ   r   ru   ç      @rF   )r4   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sHJ ‚t|t|ƒƒ |dk rpt|t  g ¡ƒ n0|dkrŠt|t  	d¡ƒ nt
t j|dd�ddƒ d S )	Nrâ   r:   r³  rJ   r   ru   gÃõ(\�Â@rF   )r4   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sHJ ‚t|t|ƒƒ |dk rpt|t  g ¡ƒ n0|dkrŠt|t  	d¡ƒ nt
t j|dd�ddƒ d S )	Nrâ   r:   r³  rJ   r   ru   gž^)ËÇ@rF   )r4   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sHJ ‚t|t|ƒƒ |dk rpt|t  g ¡ƒ n0|dkrŠt|t  	d¡ƒ nt
t j|dd�ddƒ d S )	Nrâ   r:   r³  rJ   r   ru   g=
×£p=@rF   )r4   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sJJ ‚t|t|ƒƒ |dk rrt|t  g ¡ƒ n0|dkrŒt|t  	d¡ƒ nt
t j|dd�ddƒ d S )	Nrâ   r:   r   r³  rJ   ru   r¨   r  )r4   rƒ   r%   rÎ   rÐ   rÏ   r   r   r   r^   r	   rË   r¹  r:   r:   r;   Útest_kaiserå  s    
zTestFilterwindows.test_kaiser)
rq   rr   rs   Ú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¨   r�  rÓ  rH   )r¹  rJ   rn   )r4   r5   r.   r‡  r÷  rù  r	   )r`   rÅ   r,  r:   r:   r;   r'  ý  s    *zTestTrapz.test_simplec                 C   s&  t  ddd¡}t  ddd¡}t  ddd¡}t  |¡|d |d   }|d  d  < |d  d  < t  |¡|d |d   }|d  d  < |d  d  < t  |¡|d |d   }|d  d  < |d  d  < |d d …d d f |d d d …d f  |d d d d …f  }||d d …d d f  jdd�}||d d d …d f  jdd�}	||d d d d …f  jdd�}
t||d d …d d f dd	�}t||ƒ t||d d d …d f dd	�}t||	ƒ t||d d d d …f dd	�}t||
ƒ t||dd	�}t||ƒ t||dd	�}t||	ƒ t||dd	�}t||
ƒ d S )
Nr   rJ   rR   rH   rl   rW   rY   ru   )rÅ   rv   )r4   rË  Z	ones_likerË   r.   r	   )r`   rÅ   rÑ   rú  ZwxZwyZwzÚqZqxZqyZqzr,  r:   r:   r;   Ú	test_ndim  s8    6




zTestTrapz.test_ndimc                 C   s‚   t  d¡}|| }|dk}t jj||d�}d}tt||ƒ|ƒ t jj||d�}tt||ƒ|ƒ t jj||d�}tt||ƒ|ƒ d S )NrS   rH   r”  g      *@)r4   r5   r   rƒ   r	   r.   )r`   rÅ   rÑ   r•  Zymr,  Zxmr:   r:   r;   rÊ  (  s    
zTestTrapz.test_maskedN)rq   rr   rs   r'  rÃ  rÊ  r:   r:   r:   r;   rÀ  û  s   %rÀ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestSincc                 C   s6   t tdƒdkƒ tt ddd¡ƒ}t|t|ƒdƒ d S )Nr   rJ   rY   r  rn   )r   r-   r4   rË  r
   r   ©r`   rÒ   r:   r:   r;   r'  ;  s    zTestSinc.test_simplec                 C   sF   ddg}t t |¡ƒ}t t|ƒƒ}t t|ƒƒ}t||ƒ t||ƒ d S )Nr   rÑ  )r-   r4   rƒ   rŒ  rn  r   )r`   rÅ   r˜   r™   rš   r:   r:   r;   Útest_array_likeA  s    
zTestSinc.test_array_likeN)rq   rr   rs   r'  rÆ  r:   r:   r:   r;   rÄ  9  s   rÄ  c                   @   s   e Zd Zdd„ ZdS )Ú
TestUniquec                 C   s˜   t  g d¢¡}tt  t|ƒg d¢k¡ƒ ttt  g d¢¡ƒt  dg¡kƒ g d¢}tt  t|ƒg d¢k¡ƒ t  g d¢¡}tt  t|ƒg d¢k¡ƒ d S )	N)	rF   rR   rH   rJ   rJ   rH   rR   rF   r   )r   rJ   rH   rR   rF   )rJ   rJ   rJ   rJ   rJ   rJ   )ÚwidgetÚhamr7  r8  r7  rÉ  )r8  r7  rÉ  rÈ  )ù      @      @rû  ù      ð?      $@r¨   rÊ  )rû  rË  rÊ  r¨   )r4   rƒ   r   r¤   r1   r5  r:   r:   r;   r'  L  s    "zTestUnique.test_simpleN©rq   rr   rs   r'  r:   r:   r:   r;   rÇ  J  s   rÇ  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestCheckFinitec                 C   sP   g d¢}ddt jg}ddt jg}t j |¡ ttt jj|ƒ ttt jj|ƒ d S )NrŒ   rJ   rH   )r4   Úinfr  ÚlibÚasarray_chkfiniter   r]   r�   r:   r:   r;   r'  X  s    zTestCheckFinite.test_simplec                 C   s0   g d¢}t jj|dt jd�}t|jt jkƒ d S )NrŒ   r«   )r­   rÏ   )r4   rÏ  rÐ  rÎ   r   rÏ   rj   r:   r:   r;   Útest_dtype_order`  s    z TestCheckFinite.test_dtype_orderN)rq   rr   rs   r'  rÑ  r:   r:   r:   r;   rÍ  V  s   rÍ  c                	   @   sô   e Zd Ze g d¢g d¢g d¢g¡Ze g d¢g d¢g d¢g¡Ze g d¢g d¢g d	¢g¡Ze g d
¢g d¢g d¢g d¢g d¢g 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ej d ejejejejg¡d!d"„ ƒZd#S )$ÚTestCorrCoef)gÿÁ°‘^³Ã?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¶   çÞ›•£¶î?çßÉár@©¿)rÓ  r¶   çp¾è]‚4Ó?)rÔ  rÕ  r¶   )r¶   rÓ  rÔ  ç?Ä'LÓ?çÝë(÷Ð8å?çîê4V‹}à?)rÓ  r¶   rÕ  çÕØw¨{¨¿ç,H¨×5ì?çjSŽ,úè?)rÔ  rÕ  r¶   çªÀâÓóî¿çµ)h¤ïßæ?çå5#AÀ“ê?)rÖ  rÙ  rÜ  r¶   çƒätÄçoà¿çBCÃæ,å¿)r×  rÚ  rÝ  rß  r¶   ç@§ÿ02vï?)rØ  rÛ  rÞ  rà  rá  r¶   c                 C   s*   t t g d¢g d¢¡ddgddggƒ d S )Nrœ   )rJ   r   rJ   r¶   ç      ð¿)r	   r4   r   r{   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 rL  )
r   r…  r	   r×  r   r4   r¤   rÌ  r  rØ  )r`   Ztgt1Ztgt2r:   r:   r;   r'  €  s    
zTestCorrCoef.test_simplec                 C   s°   t ƒ �–}t d¡ ttt| jdd� | t¡ tt| jdd�| j	ƒ tt| j| j
dd�| jƒ tt| jdd�| j	ƒ tt| j| j
dd�| jƒ W d   ƒ n1 s¢0    Y  d S )Nr   rY   ©ZddofrR   )r   r#  Úsimplefilterr   ÚDeprecationWarningr   r…  Úfilterr	   r×  r  rØ  ©r`   Úsupr:   r:   r;   Ú	test_ddof‰  s    

zTestCorrCoef.test_ddofc                 C   s|   t ƒ �b}t d¡ ttt| j| jddƒ ttt| jdd� | t¡ t	t| jdd�| j
ƒ W d   ƒ n1 sn0    Y  d S )Nr   rJ   r   )Zbias)r   r#  rå  r   ræ  r   r…  r  rç  r	   r×  rè  r:   r:   r;   Ú	test_bias•  s    

zTestCorrCoef.test_biasc                 C   sZ   t  g d¢g d¢g¡}t|ƒ}t  ddgddgg¡}t||ƒ tt  t  |¡dk¡ƒ d S ©NrŒ   ©r  y               @r  r¶   rô  r  )r4   rƒ   r   r   r   r¤   rÌ  )r`   rÅ   r´  rj  r:   r:   r;   Útest_complexŸ  s
    
zTestCorrCoef.test_complexc                 C   sH   t  g d¢g¡}t  g d¢g¡}tt  ||¡t  ddgddgg¡ƒ d S rì  )r4   rƒ   r   r   ©r`   rÅ   rÑ   r:   r:   r;   Útest_xy¦  s    zTestCorrCoef.test_xyc                 C   s²   t jdd��’ t  dt¡ ttt g ¡ƒtjƒ ttt g ¡ 	dd¡ƒt g ¡ 	dd¡ƒ ttt g ¡ 	dd¡ƒt tjtjgtjtjgg¡ƒ W d   ƒ n1 s¤0    Y  d S ©NTr  r   r   rH   )
r#  r$  rå  ÚRuntimeWarningr   r   r4   rƒ   r  ro   r{   r:   r:   r;   Ú
test_empty«  s    ÿÿzTestCorrCoef.test_emptyc                 C   s|   ddgddgg}t jdd�� t|ƒ}W d   ƒ n1 s:0    Y  t|t  ddgddgg¡ƒ tt  t  |¡dk¡ƒ d S )Ng0Žä.ÿ++g}Ã”%­I²TÚraise)r¤   r¶   râ  )r4   Zerrstater   r
   rƒ   r   r¤   rÌ  )r`   rÅ   r‘   r:   r:   r;   Útest_extreme´  s
    &zTestCorrCoef.test_extremeÚ	test_typec                 C   s*   | j  |¡}t||d�}||jks&J ‚d S ©Nrâ   )r…  rÌ   r   rÏ   )r`   rö  Zcast_Ar´  r:   r:   r;   Útest_corrcoef_dtype»  s    z TestCorrCoef.test_corrcoef_dtypeN)rq   rr   rs   r4   rƒ   r…  r  r×  rØ  rã  r'  rê  rë  rî  rð  ró  rõ  rð   rñ   rò   ÚhalfÚsingleÚdoubleÚ
longdoublerø  r:   r:   r:   r;   rÒ  g  sJ   þÿþÿþÿûÿ	
	rÒ  c                   @   s\  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g d¢dd�Ze g d¢¡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 g d¢¡Ze ddgddgg¡Ze d¡Ze g 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$d*S )+ÚTestCovr   rH   rJ   r¶   râ  )r¸   r¶   r´   )Úndmin)rJ   rF   rJ   r¸   r´   çš™™™™™Ù?gš™™™™™Ù¿rR   râ   )r¶   r½   r¶   gUUUUUUå?gUUUUUUå¿)g&S£’:Ù?gÒo_Îã?g#Ûù~j¼è?g”‡…ZÓ¼ï?gÎQÚ|é?c                 C   s   t t| jƒ| jƒ d S r3   )r   r   Úx1r×  r{   r:   r:   r;   rd   Ï  s    zTestCov.test_basicc                 C   sV   t  g d¢g d¢g¡}t  ddgddgg¡}tt|ƒ|ƒ tt|t  d¡d�|ƒ d S )NrŒ   rí  r¶   rô  r  rR   ©Úaweights)r4   rƒ   r   r   r^   )r`   rÅ   r´  r:   r:   r;   rî  Ò  s    zTestCov.test_complexc                 C   sF   t  g d¢g¡}t  g d¢g¡}tt||ƒt  ddgddgg¡ƒ d S rì  )r4   rƒ   r   r   rï  r:   r:   r;   rð  Ø  s    zTestCov.test_xyc                 C   s²   t jdd��’ t  dt¡ ttt g ¡ƒtjƒ ttt g ¡ 	dd¡ƒt g ¡ 	dd¡ƒ ttt g ¡ 	dd¡ƒt tjtjgtjtjgg¡ƒ W d   ƒ n1 s¤0    Y  d S rñ  )
r#  r$  rå  rò  r   r   r4   rƒ   r  ro   r{   r:   r:   r;   ró  Ý  s    ÿÿzTestCov.test_emptyc                 C   sn   t jdd��N t  dt¡ tt| jdd�t tj	tj	 gtj	 tj	gg¡ƒ W d   ƒ n1 s`0    Y  d S )NTr  r   rS   rä  )
r#  r$  rå  rò  r   r   r   r4   rƒ   rÎ  r{   r:   r:   r;   Útest_wrong_ddofæ  s    ÿÿzTestCov.test_wrong_ddofc                 C   sJ   t t| jƒt| jdd�ƒ t g d¢¡}t t| j|ƒt| j|dd�ƒ d S )NF)Zrowvar)g+‡ÙÎ÷³?g4€·@‚âÓ?g¾Á&SË?gÒo_Î¡?gŒJê4ë?)r   r   Úx3r4   rƒ   ©r`   rÑ   r:   r:   r;   Útest_1D_rowvarí  s    zTestCov.test_1D_rowvarc                 C   s$   t t| jdd�tj| jdd�ƒ d S )NrJ   rä  )r   r   r  r4   Úvarr{   r:   r:   r;   Útest_1D_varianceò  s    zTestCov.test_1D_variancec                 C   sÖ   t t| j| jd�t| jƒƒ t t| j| jd�| jƒ t t| j| jd�| jƒ | jd }t	t
t| j|d� tjdtjd�}t	tt| j|d� tjdtjd�}t	tt| j|d� dtjdtjd� }t	tt| j|d� d S )N)ÚfweightsrÑ  ©rH   rR   râ   rH   rY   rR   )r   r   rÉ  ÚfrequenciesÚ
x2_repeatsr   rØ  Úunit_frequenciesr×  r   r  r4   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
  rH   râ  rR   )r   r   r   rÃ   rÙ  Úunit_weightsr×  r4   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Ù  r{   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&J ‚d S r÷  )r   rÌ   r   rÏ   )r`   rö  Zcast_x1r´  r:   r:   r;   Útest_cov_dtype%	  s    zTestCov.test_cov_dtypeN)%rq   rr   rs   r4   rƒ   r+  r   r×  rÉ  r  r  rØ  r^   r  r  rÃ   rÙ  r  r  rd   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 g d¢¡}t g d¢¡}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?Û�?rG  )gšÖ¿N^ñ?gEá¿ ò?gé–¡Ä1ð?gÔ%©m? ð?gDíénÿ¥@g>@÷åÌvê?gÏu¯Í¥üï?gVºX¤Ë³ì?g÷uaœ&Ù?gB-¬sJØ?g-^þ§ª?g§_¿³V×?g¨X±Ï.ç?gVØëaXÓÞ?gõj¨•à?gpÁÛÚò?g~-ØÛ@ô?g¦¼D/bó?gÝ¦‰ˆ¬Ÿð?g,êY1Ø”ð?gš[!¬Æð?g‘QÐL‰ð?gWè¤sU+ò?g÷ ±@ñð?g™fx»wñ?r¸   rí   r¶   )r	   r"   r4   rƒ   r   r?   r   )r`   r…  r�  r  Zi0_0r:   r:   r;   r'  .	  s4    þ
ü
üþzTest_I0.test_simplec                    sV   t  d¡‰ G ‡ fdd„dƒ}tt  |ƒ ¡|ƒs2J ‚t  ˆ ¡}t  |ƒ ¡}t||ƒ d S )NrF   c                       s   e Zd Z” jZdd„ ZdS )z*Test_I0.test_non_array.<locals>.array_likec                 S   s   | S r3   r:   )r`   r  r:   r:   r;   Ú__array_wrap__P	  s    z9Test_I0.test_non_array.<locals>.array_like.__array_wrap__N)rq   rr   rs   Z__array_interface__r  r:   r  r:   r;   Ú
array_likeM	  s   r  )r4   r5   r2  rÌ  r"   r   )r`   r  r‡  r´  r:   r  r;   rã  J	  s    

zTest_I0.test_non_arrayc                 C   sH   t  ddg¡}tjtdd�� t|ƒ}W d   ƒ n1 s:0    Y  d S )Nr   y      ð?       @z#i0 not supported for complex valuesrA  )r4   rƒ   rð   r/  r  r"   )r`   ra   r´  r:   r:   r;   rî  Z	  s    zTest_I0.test_complexN)rq   rr   rs   r'  rã  rî  r:   r:   r:   r;   r  ,	  s   r  c                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú
TestKaiserc                 C   s|   t t tddƒ¡ƒ ttddƒt g ¡ƒ ttddƒt ddg¡ƒ ttddƒt g d¢¡ƒ ttddƒt g d	¢¡ƒ d S )
NrJ   r¶   r   rH   ç ˆöoFé?rS   )r  çÀvT¶=î?r¶   r  r  gg›Óù?)çø†„½¦â?ç÷�ñY…Jì?r¶   r  r  )r   r4   Úisfiniter%   r	   rƒ   r{   r:   r:   r;   r'  b	  s    
ÿ
ÿ
ÿ
ÿzTestKaiser.test_simplec                 C   s   t ddƒ d S )NrR   rF   )r%   r{   r:   r:   r;   Útest_int_betao	  s    zTestKaiser.test_int_betaN)rq   rr   rs   r'  r  r:   r:   r:   r;   r  `	  s   r  c                   @   s   e Zd Zdd„ ZdS )Ú	TestMsortc                 C   sF   t  g d¢g d¢g d¢g¡}tt|ƒt  g d¢g d¢g d¢g¡ƒ d S )N)çî\é…Ü?çb¥ÝCQé?ç×”�s‘á?)çwøˆ‹”×?ç¥¹klã×?çø*dtaÀî?)çÐèÓ¯Áä?ç6Hœòïà?çÜ˜C÷Ù?)r"  r#  r'  )r  r&  r!  )r%  r   r$  )r4   rƒ   r	   r'   )r`   r…  r:   r:   r;   r'  u	  s    
þ
þþzTestMsort.test_simpleNrÌ  r:   r:   r:   r;   r  s	  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   sj   t g d¢g d¢ƒ\}}t|t g d¢g d¢g d¢g d¢g¡ƒ t|t g d¢g d¢g d¢g d¢g¡ƒ d S )NrŒ   ©rF   rS   rm   rn   rÀ   )rS   rS   rS   )rm   rm   rm   )rn   rn   rn   ©r&   r   r4   rƒ   ©r`   ÚXÚYr:   r:   r;   r'  ‚	  s    ýýzTestMeshgrid.test_simplec                 C   s&   t g d¢ƒ\}t|t g d¢¡ƒ d S )NrS  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ð   g d¢}g d¢}t ||dd�\}}t|t g d¢g d¢g d¢g¡ƒ t|t g d¢g d¢g d¢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 )NrŒ   r)  Úij©Zindexingr£   )rH   rH   rH   rH   )rR   rR   rR   rR   rl   rõ   r   r  ©rR   rF   )rF   rR   rH   )rR   rF   rH   Znotvalid)r&   r   r4   rƒ   r   r?   r   r]   )r`   rÅ   rÑ   r,  r-  rú  r:   r:   r;   Útest_indexing–	  s"    þþzTestMeshgrid.test_indexingc                 C   sT   t g d¢g d¢dd�\}}t|t g d¢g¡ƒ t|t dgdgdgdgg¡ƒ d S )	NrŒ   r)  T©ÚsparserF   rS   rm   rn   r*  r+  r:   r:   r;   Útest_sparseª	  s    zTestMeshgrid.test_sparsec                 C   s   t ttg d¢g d¢dd� d S )NrŒ   r)  r0  )r¡  )r   r  r&   r{   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©   r4  )r4   r5   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 )
Nr~  r  gffffff
@gš™™™™™@FT)r5  r©   r   rJ   )r4   rƒ   r&   r   )r`   r,  r-  rÅ   rÑ   r:   r:   r;   Útest_writebackÎ	  s    zTestMeshgrid.test_writebackc                 C   sh   t jdd„ tddƒD ƒŽ \}}}}}d}t|j|ƒ t|j|ƒ t|j|ƒ t|j|ƒ t|j|ƒ d S )Nc                 s   s   | ]}d g| V  qdS )r   Nr:   ©rê   rŠ   r:   r:   r;   rÿ  Ù	  rì   z-TestMeshgrid.test_nd_shape.<locals>.<genexpr>rJ   rm   )rH   rJ   rR   rF   rS   )r4   r&   r_   r   r?   )r`   ra   r~   r‘   r  rb  Zexpected_shaper:   r:   r;   Útest_nd_shapeØ	  s    $zTestMeshgrid.test_nd_shapec                 C   sp   t  dgddgg d¢¡\}}}t|g d¢gg d¢ggƒ t|g d¢gg d¢ggƒ t|g d¢gg d¢ggƒ d S )Nr   rJ   rH   rQ   r›   r¦   rG   ©r4   r&   r   r�   r:   r:   r;   Útest_nd_valuesá	  s    zTestMeshgrid.test_nd_valuesc                 C   sn   t jdgddgg d¢dd�\}}}t|g d¢g d¢ggƒ t|g d¢g d	¢ggƒ t|g d¢g d¢ggƒ d S )
Nr   rJ   rH   rQ   r0  r1  r›   r¦   rG   r;  r�   r:   r:   r;   Útest_nd_indexingç	  s    "zTestMeshgrid.test_nd_indexingN)rq   rr   rs   r'  r.  r/  r3  r6  r7  r¡  r8  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   s4  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g d	¢ƒ d S )
Nr   TFrJ   c                 S   s   dS rr  r:   r‰  r:   r:   r;   r  
  rì   z+TestPiecewise.test_simple.<locals>.<lambda>rY   z1 or 2 functions are expectedrŒ   )r(   r   r4   rƒ   r   r]   r5  r:   r:   r;   r'  ð	  s$    ÿÿzTestPiecewise.test_simplec                 C   s2   t ddgddgddggddgƒ}t|ddgƒ d S )NrJ   rH   TFrR   rF   ©r(   r   r5  r:   r:   r;   Útest_two_conditions
  s     z!TestPiecewise.test_two_conditionsc                 C   s"   t dg d¢g d¢ƒ}t|dƒ d S )NrR   )TFF)rF   rH   r   rF   )r(   r   r5  r:   r:   r;   Ú$test_scalar_domains_three_conditions
  s    z2TestPiecewise.test_scalar_domains_three_conditionsc                 C   sN   t ddgddgdgƒ}t|ddgƒ t ddgddgddgƒ}t|ddgƒ d S )NrJ   rH   TFr   rR   r?  r5  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|g d¢g d	¢ƒ}t|dƒ d S )
NrR   rF   r   rS   TFrJ   r÷   rŒ   )r4   rƒ   r(   r   rˆ   r   rï  r:   r:   r;   r0  
  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g d¢ƒ}t|dƒ ttdt ||dk|dkgdgƒ ttdt ||dk|dkgg d	¢ƒ d S )
NrR   rF   r   rS   rŒ   rH   z2 or 3 functions are expectedrJ   r£   )r(   r   r   r   r]   rï  r:   r:   r;   Útest_0d_comparison-
  s    
*
ÿÿz TestPiecewise.test_0d_comparisonc                 C   s8   t  d¡}t  |dk¡}t||gddgƒ}t|dƒ d S )NrR   rJ   rH   )r4   rƒ   r(   r   )r`   rÅ   r‘   rÑ   r:   r:   r;   Útest_0d_0d_condition<
  s    
z"TestPiecewise.test_0d_0d_conditionc                 C   sR   t  g d¢g d¢g¡}t||dk |dkgg d¢ƒ}t|t  g d¢g d¢g¡ƒ d S )N)g      Àg      ø¿rÓ  )rÑ  r¼  rÒ  r   rH   r  )râ  râ  râ  )r·   r·   r¶   )r4   rƒ   r(   r   rï  r:   r:   r;   Útest_multidimensional_extrafuncB
  s    
ÿÿz-TestPiecewise.test_multidimensional_extrafuncc                 C   s^   G dd„ dt jƒ}t  d¡ |¡}t||dk |dkgg d¢ƒ}tt|ƒ|ƒ t|g d¢ƒ d S )Nc                   @   s   e Zd ZdS )z/TestPiecewise.test_subclasses.<locals>.subclassNrÙ   r:   r:   r:   r;   rÚ   J
  s   rÚ   r¾   r´   rF   )râ  r¶   r¸   )râ  râ  r¸   r¸   r¶   )r4   rÛ   r5   rÜ   r(   r   rÝ   )r`   rÚ   rÅ   r,  r:   r:   r;   rÞ   I
  s
    zTestPiecewise.test_subclassesN)rq   rr   rs   r'  r@  rA  rB  r0  rC  rD  rE  rÞ   r:   r:   r:   r;   r>  î	  s   	r>  c                   @   s–   e Zd Zdd„ Zdd„ Zdd„ Zdd„ Zd	d
„ Zdd„ Zdd„ Z	dd„ Z
dd„ Zdd„ Zejje dd�dd„ ƒZej dddggdg¡dd„ ƒZdS )ÚTestBincountc                 C   s$   t  t  d¡¡}t|t  d¡ƒ d S )NrF   )r4   Úbincountr5   r   r^   r  r:   r:   r;   r'  T
  s    zTestBincount.test_simplec                 C   s,   t  t  g d¢¡¡}t|t  g d¢¡ƒ d S )N)rJ   rS   rH   rF   rJ   )r   rH   rJ   r   rJ   rJ   )r4   rG  rƒ   r   r  r:   r:   r;   Útest_simple2X
  s    zTestBincount.test_simple2c                 C   s2   t  d¡}t  g d¢¡}t  ||¡}t||ƒ d S )NrF   )çš™™™™™É?ç333333Ó?rÑ  r�  )r4   r5   rƒ   rG  r   ©r`   rÅ   rÒ   rÑ   r:   r:   r;   Útest_simple_weight\
  s    
zTestBincount.test_simple_weightc                 C   s@   t  g d¢¡}t  g d¢¡}t  ||¡}t|t  g d¢¡ƒ d S )N©rJ   rH   rF   rS   rH   ©rI  rJ  rÑ  r�  rI  )r   rI  rÑ  r   rÑ  r�  ©r4   rƒ   rG  r   rK  r:   r:   r;   Útest_simple_weight2b
  s    z TestBincount.test_simple_weight2c                 C   sV   t  g d¢¡}t j|dd�}t|t  g d¢¡ƒ g }t j|dd�}t|t  g ¡ƒ d S )N)r   rJ   r   rJ   rJ   rR   ©Z	minlength)rH   rR   r   r   rO  rï  r:   r:   r;   Útest_with_minlengthh
  s    z TestBincount.test_with_minlengthc                 C   sV   t  g d¢¡}t j|dd�}t|t  g d¢¡ƒ t j|dd�}t|t  g d¢¡ƒ d S )N)r   rJ   rJ   rH   rH   rR   rR   rH   rQ  )rJ   rH   rH   rH   r   rO  rï  r:   r:   r;   Ú)test_with_minlength_smaller_than_maxvaluep
  s
    z6TestBincount.test_with_minlength_smaller_than_maxvaluec                 C   sB   t  g d¢¡}t  g d¢¡}t  ||d¡}t|t  g d¢¡ƒ d S )NrM  rN  rl   )r   rI  rÑ  r   rÑ  r�  r   r   rO  rK  r:   r:   r;   Útest_with_minlength_and_weightsw
  s    z,TestBincount.test_with_minlength_and_weightsc                 C   s&   t jg td�}t  |¡}t||ƒ d S r÷  )r4   rƒ   r|  rG  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â   rS   rQ  )r4   rƒ   r|  rG  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ÚfoobarrQ  ©r4   rG  r:   r‰  r:   r;   r  ‹
  rì   z<TestBincount.test_with_incorrect_minlength.<locals>.<lambda>zmust not be negativec                      s   t jˆ dd�S ©NrY   rQ  rX  r:   r‰  r:   r;   r  Ž
  rì   rS   c                      s   t jˆ dd�S rV  rX  r:   r‰  r:   r;   r  “
  rì   c                      s   t jˆ dd�S rY  rX  r:   r‰  r:   r;   r  –
  rì   )r4   rƒ   r|  r   r  r]   r5   r{   r:   r‰  r;   Útest_with_incorrect_minlength‡
  s$    
þ
þ

þ
þz*TestBincount.test_with_incorrect_minlengthr†  r‡  c                 C   sÆ   t  t tj¡¡}t  t tj¡¡}tdƒD ]}t g d¢¡ q,tt  t tj¡¡|ƒ tt  t tj¡¡|ƒ tdƒD ]}t g d¢g d¢¡ qxtt  t tj¡¡|ƒ tt  t tj¡¡|ƒ d S )Nr¨   rŒ   r�   )	r‹  rŒ  r4   rÏ   Zintprû  r_   rG  r   )r`   Zintp_refcountZdouble_refcountÚjr:   r:   r;   Útest_dtype_reference_leaks˜
  s    z'TestBincount.test_dtype_reference_leaksÚvalsrH   c                 C   sr   t  |¡}ttƒ� t  |¡ W d   ƒ n1 s20    Y  ttƒ� t  |¡ W d   ƒ n1 sd0    Y  d S r3   )r4   Úasarrayr   r]   rG  )r`   r]  Zvals_arrr:   r:   r;   Útest_error_not_1d¨
  s
    

(
zTestBincount.test_error_not_1dN)rq   rr   rs   r'  rH  rL  rP  rR  rS  rT  ró  rU  rZ  rð   rñ   r‘  r   r\  rò   r_  r:   r:   r:   r;   rF  R
  s   
rF  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g d¢d�dd„ ƒZ
dd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"d#„ Zd$d%„ Zd&S )'Ú
TestInterpc                 C   st   t ttdg g ƒ t ttddgddgƒ t ttdddgddgdd� t ttdg g dd� t ttddgddgdd� d S )Nr   rJ   rH   r©  éh  )r   r]   r$   r{   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   rJ   rS   re   )r4   rË  r	   r$   ©r`   rÅ   rÑ   Úx0r:   r:   r;   rd   »
  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g d¢td�}|d d d… }	t||ƒ t||	ƒ t|||dd�}t|||dd�}tjg d¢td�}|d d d… }	t||ƒ t||	ƒ t|||d	d
�}t|||d	d
�}tjg d¢td�}|d d d… }	t||ƒ t||	ƒ t|||dd	d�}t|||dd	d�}tjg d¢td�}|d d d… }	t||ƒ t||	ƒ q
d S )NrJ   r¨   râ   rY   r   r£   ©Úleft)r   rJ   rJ   rJ   rH   ©Úright)rJ   rJ   rJ   rH   )rf  rh  )r   rJ   rJ   rH   )	r_   r4   r5   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   rJ   rS   rJ  )r4   rË  r	   r$   rÍ   rÎ   r  rc  r:   r:   r;   Útest_scalar_interpolation_pointç
  s    

z*TestInterp.test_scalar_interpolation_pointc                 C   st   g d¢}g d¢}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 )N©rJ   rH   rÒ  rR   rF   rS  rJ   rH   rF   )r4   rÎ  r	   r$   r  )r`   rÅ   rj  Úfpr:   r:   r;   Ú test_non_finite_behavior_exact_xõ
  s    "z+TestInterp.test_non_finite_behavior_exact_xc                 C   s
   t  | ¡S r3   )r4   Zfloat_r‰  r:   r:   r;   r  þ
  rì   zTestInterp.<lambda>c                 C   s
   t | dƒS r  ©rD   r‰  r:   r:   r;   r  ÿ
  rì   c                 C   s
   t d| ƒS r  rp  r‰  r:   r:   r;   r     rì   c                 C   s   t | t | d¡ƒS )NrP   )rD   r4   Úmultiplyr‰  r:   r:   r;   r    rì   )rA   zcomplex-realzcomplex-imagzcomplex-both)ÚparamsÚidsc                 C   s   |j S )z( scale function used by the below tests )Úparam)r`   Úrequestr:   r:   r;   Úscý
  s    zTestInterp.scc                 C   s¤   t t dtjdg|ddgƒ¡|tjƒƒ t t ddtjg|ddgƒ¡|tjƒƒ t t dddg|tjdgƒ¡|tjƒƒ t t dddg|dtjgƒ¡|tjƒƒ dS )z test that nans are propagated rÑ  rJ   r   r¨   N)r   r4   r$   r  ©r`   rv  r:   r:   r;   Útest_non_finite_any_nan  s    (((z"TestInterp.test_non_finite_any_nanc                 C   sº   t t dtj tj
 g|ddgƒ¡|tjƒƒ t t dddg|tj tj
 gƒ¡|tjƒƒ t t dddg|tj
 tj gƒ¡|tjƒƒ t t dtj tj
 g|ddgƒ¡|dƒƒ dS )z2 Test that interp between opposite infs gives nan rÑ  r   r¨   rJ   N©r   r4   r$   rÎ  r  rw  r:   r:   r;   Útest_non_finite_inf  s    ...zTestInterp.test_non_finite_infc                 C   st  t t dtj dg|tj dgƒ¡|tjƒƒ t t dtj dg|tj
 dgƒ¡|tjƒƒ t t dtj dg|dtj gƒ¡|tjƒƒ t t dtj dg|dtj
 gƒ¡|tjƒƒ t t ddtj
 g|tj dgƒ¡|tjƒƒ t t ddtj
 g|tj
 dgƒ¡|tjƒƒ t t ddtj
 g|dtj gƒ¡|tjƒƒ t t ddtj
 g|dtj
 gƒ¡|tjƒƒ dS )z@ Test that interp where both axes have a bound at inf gives nan rÑ  rJ   r¨   r   Nry  rw  r:   r:   r;   Útest_non_finite_half_inf_xf  s    .......z&TestInterp.test_non_finite_half_inf_xfc                 C   s¬   t t dtj tj g|ddgƒ¡|dƒƒ t t dtj dg|ddgƒ¡|dƒƒ t t ddtj
 g|ddgƒ¡|dƒƒ t t dtj
 tj
 g|ddgƒ¡|dƒƒ dS )z1 Test interp where the x axis has a bound at inf rÑ  r   r¨   rJ   N©r   r4   r$   rÎ  rw  r:   r:   r;   Útest_non_finite_half_inf_x'  s    ,((z%TestInterp.test_non_finite_half_inf_xc                 C   s  t t dddg|dtj gƒ¡|tj ƒƒ t t dddg|dtj
 gƒ¡|tj
 ƒƒ t t dddg|tj dgƒ¡|tj ƒƒ t t dddg|tj
 dgƒ¡|tj
 ƒƒ t t dddg|tj tj gƒ¡|tj ƒƒ t t dddg|tj
 tj
 gƒ¡|tj
 ƒƒ dS )z1 Test interp where the f axis has a bound at inf rÑ  r   rJ   r¨   Nr|  rw  r:   r:   r;   Útest_non_finite_half_inf_f.  s    ,,,,0z%TestInterp.test_non_finite_half_inf_fc           	      C   s  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
�|ƒ g d¢}g d¢}ddt jdg}ddt jd t jdg}tt  |||¡|ƒ g d¢}g d¢}g d¢}g d¢}tt j|||dd�|ƒ d S )Nr   rJ   rS   r  rJ  rY   ù       @      @re  r´   rg  rm  rS  ù       @      ð?rF   y              à?©iLÿÿÿiVÿÿÿiGÿÿÿé¹   rÁ  rF  r   im  ©é¾   iBÿÿÿi^  i¢þÿÿ)ù      @      ð?y      $@       @ù      @      @y      @      @)y      @      ø?r…  y     €!@      ü?y      @      ô?r†  y      
@      
@y      @      @y      @      @ra  r©  )r4   rË  r	   r$   rÎ  )	r`   rÅ   rÑ   rd  Zy0rf  rh  rj  rn  r:   r:   r;   Útest_complex_interp7  s*    $zTestInterp.test_complex_interpc                 C   sº   t  ddd¡}t  ddd¡}t  d¡}tt  |||¡|ƒ t  g d¢¡}t  g d¢¡}t  t  d¡||¡}t|dƒ tt|t jƒƒ t jt  d¡||dd	�}t|d
ƒ tt|t jƒƒ d S )Nr   rJ   rS   rJ  rí  )rJ   rY   rJ   r¸  rF   r©  rÑ  )	r4   rË  rƒ   r	   r$   r   r   r2  rÎ   )r`   rÅ   rÑ   rd  rj  rn  rÓ   r:   r:   r;   Ú)test_zero_dimensional_interpolation_pointS  s    


z4TestInterp.test_zero_dimensional_interpolation_pointc                 C   s2   t  ddd¡}t  |¡}tt  t j||¡dƒ d S )Nr   r¨   g-Cëâ6?r¸   )r4   r5   Úsinr	   r$   rù  )r`   rj  rn  r:   r:   r;   Útest_if_len_x_is_smalld  s    
z!TestInterp.test_if_len_x_is_smallc                 C   s€   g d¢}g d¢}g d¢}g d¢}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ƒ  )rS   r¨   rR   rF   )g      @r¾   ç     €!@g      @r·   g      
@ç      @g      @ra  r©  r«   r¬   rH   rY   rù   )r	   r4   r$   rƒ   ro   )r`   rÅ   rj  rn  rÑ   r:   r:   r;   r²  i  s    zTestInterp.test_periodN)rq   rr   rs   rb  rd   rk  rl  ro  rð   Zfixturerv  rx  rz  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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g d¢¡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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,dBS )CÚ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 )Nrl   rÑ  r   r¸   r  rŒ  re   rº   rJ   Únearest©Úmethod)r4   r5   r   Ú
percentiler  r5  r:   r:   r;   rd   v  s    
zTestPercentile.test_basicc                 C   sØ   dd„ t dƒD ƒ}t |tdƒ¡}t|tdƒƒ tt|ƒtƒ t |tdƒ¡}t|tddƒƒ tt|ƒtƒ t |tdƒ¡}t|tdd	ƒƒ tt|ƒtƒ t |tdƒg¡}t|t tdd	ƒg¡ƒ tt|ƒtjƒ d S )
Nc                 S   s   g | ]}t |d ƒ‘qS ©rH   r   r9  r:   r:   r;   rë   €  rì   z0TestPercentile.test_fraction.<locals>.<listcomp>rl   r   r  rn   rH   re   rF   )r_   r4   r‘  r   r   rÝ   rƒ   rÛ   )r`   rÅ   rG  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 )NrS   FÚlinearrí   )r4   r^   r‘  )r`   r  Úor:   r:   r;   Útest_api’  s
    

zTestPercentile.test_apic                 C   sF   t  g d¢g d¢g d¢g d¢g d¢g¡}tt j|ddd�g d¢ƒ d S )Nr¦   )rF   rF   rR   re   r   ru   )r4   rƒ   r   r‘  r5  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 )NrO  ç     €A@ç      D@ç      I@râ   r”  r�  )r4   r^  ZNANr‘  Ú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:   )r4   rÎ   )rê   Zint_typer:   r:   r;   rë   ¬  s   ÿzTestPercentile.<listcomp>r´  r³  Úinput_dtypeÚexpected_dtyper�  r�  )	)Úinverted_cdfr<  )Úaveraged_inverted_cdfç     €;@)Úclosest_observationr<  )Úinterpolated_inverted_cdfr<  )Úhazenr¡  )Úweibullé   )r”  r†  )Úmedian_unbiasedr\  )Únormal_unbiasedg      ;@c                 C   sš   t jg d¢|d�}t j|d|d�}t j ||d¡ |dv rz|dkr\t j t  |¡jt j¡ q–t j t  |¡jt  |¡¡ nt j t  |¡jt  |¡¡ d S )N)rO  g      4@r˜  r™  rš  râ   r™  r�  rZ  )rŸ  r¢  r³  )r4   r^  r‘  r›  r	   r   rÏ   rÎ   )r`   r�  r�  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â   re   Úlowerr�  rF   ÚhigherrS   ©r   r4   r‘  r5   ©r`   rÏ   r:   r:   r;   Útest_lower_higherÙ  s    ÿÿÿÿz TestPercentile.test_lower_higherc                 C   sˆ   t tjtjd|d�ddd�dƒ t tjtjd|d�d d	dd�d
ƒ t tjtjd|d�ddd�dƒ t tjtjd|d�d	dd�d
ƒ d S )Nr¨   râ   é3   Úmidpointr�  r¸  rõ   rJ   re   rS   r¼   ç      @r¬  r­  r:   r:   r;   Útest_midpointà  s(    ÿÿÿÿÿÿÿÿzTestPercentile.test_midpointc                 C   sD   t tjtjd|d�ddd�dƒ t tjtjd|d�ddd�dƒ d S )	Nr¨   râ   r¯  rŽ  r�  rS   é1   rF   r¬  r­  r:   r:   r;   Útest_nearestë  s    ÿÿÿÿzTestPercentile.test_nearestc                 C   sL   t j d¡}t  |d¡}t j || ¡ ¡ t  |d¡}t j || ¡ ¡ d S )NrS   r  r   )r4   rÍ  r   r‘  r›  r   rŽ  rï  )r`   r  rÓ   r:   r:   r;   Ú'test_linear_interpolation_extrapolationò  s
    z6TestPercentile.test_linear_interpolation_extrapolationc                 C   s,   t  d¡d }tt  |g d¢¡g d¢ƒ d S )Nrl   rÑ  )r   r  re   )r   rŒ  rº   )r4   r5   r   r‘  r5  r:   r:   r;   Útest_sequenceû  s    zTestPercentile.test_sequencec                 C   sô  t  d¡ dd¡}tt  |d¡g d¢ƒ g d¢g d¢g d¢g}tt j|dd	d
�|ƒ g d¢g d¢g d¢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  rR   rF   )r»  re   r  )g      @r±  rº  )rH   rR   rF   rS   r)  )rl   rõ   r¨   r¼   r   ru   )ç      è?r¼  rR   )ç      @r±  rn   )r‹  r¿   r¼   rJ   ra  rS   rm   ©r»  re   r’  )r»  re   r¬  ©rR   )rH   rF   rS   rm   )rH   rR   rS   rm   rH   )rH   rR   rF   rm   )rR   rR   rS   rm   r«  r�  ©rv   r�  )r4   r5   ro   r   r‘  rƒ   r+  r?   )r`   rÅ   Úr0r,  r:   r:   r;   rˆ  ÿ  sf    ÿ
ÿÿ
ÿÿÿÿÿÿÿÿÿÿÿÿzTestPercentile.test_axisc                 C   s�  t  d¡ dd¡}tt  |d¡dƒ tt  t  |d¡¡ƒ t  g d¢¡}tt j|ddd�|ƒ tt j|ddd�j|jƒ t  g d	¢¡}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  g d¢¡}t j|dddd�}t||ƒ t|j|jƒ t  g d¢¡}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  rR   rF   re   r±  ©r½   r¾   rÉ   rP  r   ru   ©r¼  r±  r¿   rJ   ©r‚  ©rv   r‚  rª  r�  r¾   )r�  rv   )r¶   r¾   rI  r:   râ   ©r�  r‚  rS   ©r�  rv   r‚  )r4   r5   ro   r   r‘  r   Úisscalarrƒ   r?   r	   ÚemptyrÏ   )r`   rÅ   r¼  r,  r‚  Zc0Zc1r‘   r:   r:   r;   Útest_scalar_q#  sR    












zTestPercentile.test_scalar_qc                 C   s€   t ttjddgddd� t ttjdgdƒ t ttjdgdƒ t ttjdgttdƒƒdg ƒ t ttjdgttdƒƒd	g ƒ d S )
NrJ   rH   é8   rW  r�  ée   rY   re   r€  )r   r]   r4   r‘  rŒ  r_   r{   r:   r:   r;   Útest_exceptionS  s    ÿ zTestPercentile.test_exceptionc                 C   s   t t g d¢d¡dƒ d S )NrŒ   r   rJ   )r   r4   r‘  r{   r:   r:   r;   Útest_percentile_list[  s    z#TestPercentile.test_percentile_listc                 C   sî  t  g d¢¡}t  d¡}d}t j|||d� tt  ||¡|ƒ t  g d¢g d¢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  g d¢g d¢g¡}t  d¡}tt j|dd|d�|ƒ t||ƒ t  g d¢g d¢g¡}t  d¡}tt j|dd
|d�|ƒ t||ƒ t  g d¢g d¢g¡}t jd|jd�}t j|ddd|d�}t||ƒ t||ƒ t  g d¢g d¢g¡}t jd|jd�}t j|ddd
|d�}t||ƒ t||ƒ d S )NrŒ   rº  r¿  r�   r—  r   rÀ  ru   ©rR   rH   rJ   r  rR   rF   )r´   r·   r½   r¾   r½  )rH   rF   r¹  )r·  r¸  r‹  r¾  r
  ©r   rJ   rH   rR   r)  râ   rª  rÂ  )r   rF   rl   )rJ   rS   rõ   )	r4   rƒ   r=   r‘  r   r5   ro   rÄ  rÏ   )r`   rÅ   rÑ   rG  r¼  r‚  r,  r‘   r:   r:   r;   Útest_percentile_out^  sB    

ÿ








z"TestPercentile.test_percentile_outc                 C   s–  t  d¡ dddd¡}tt j|ddd�jdƒ tt j|ddd�jd	ƒ tt j|ddd�jd
ƒ tt j|ddd�jdƒ tt j|ddd�jdƒ tt j|ddd�jd
ƒ tt j|ddd�jd	ƒ tt j|ddd�jdƒ tt j|dddd�jd
ƒ tt j|dddd�jd
ƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ tt  t j|ddgdd�¡jdƒ d S )Nr^  r¼   rJ   rH   re   r   ru   )rJ   rH   rJ   )r¼   rH   rJ   )r¼   rJ   rJ   rR   )r¼   rJ   rH   rY   rP   rV   r)  r°  r»  r¨   )rH   rJ   rH   rJ   )rH   r¼   rH   rJ   )rH   r¼   rJ   rJ   )rH   r¼   rJ   rH   )r4   r5   ro   r   r‘  r?   rƒ   ©r`   r  r:   r:   r;   Útest_percentile_empty_dim‡  s>    ÿþÿþÿÿÿÿz(TestPercentile.test_percentile_empty_dimc                 C   sh   t  g d¢¡}t j|dgdd� t|t  g d¢¡ƒ t  g d¢¡}t  |dg¡ t|t  g d¢¡ƒ d S )N©rH   rR   rF   rJ   re   F©Úoverwrite_input©r4   rƒ   r‘  r   rj   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@rS   )Únumr°  r�  )r4   rË  r‘  r5   r   r  )r`   rG  r:   r:   r;   Útest_no_p_overwrite¬  s    z"TestPercentile.test_no_p_overwritec                 C   s^   t  g d¢¡}t j|dgdd�}t|t  dg¡ƒ t jg d¢dgdd�}t|t  dg¡ƒ d S )NrÏ  re   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   é   ©ri  r¨   rV  rZ   ru   rY   r   ri   rJ   rg   r»  r®  rI   ©r   éƒ  ©rR   rS   rn   r¼   éZ   ©r   rJ   rR   ©rR   rJ   r)  rH   ©rR   rJ   rH   rÊ  ©rH   rJ   ©rJ   rP   ©rJ   rR   rM   )r4   rÍ  ÚnormalÚdstackr   r‘  Úmoveaxisr‰   r©   r5   ro   ÚshuffleÚravelÚflatten©r`   r•  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Þ  rF  r»  )rv   rÂ  ©r   rF  rF   ©r   rF   rO   )rY   rY   )rR   rY   )r4   r^   r   ry   r‘  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Þ  rn   TrÁ   r£   rZ   ©rJ   rJ   rn   r¼   rx   ©rJ   rS   rn   rJ   rí   ©rR   rJ   rn   r¼   rË  )rÂ   rà  ©rJ   rJ   rn   rJ   rJ   )rH   rJ   rJ   rn   rJ   )rH   rJ   rS   rn   rJ   )r4   r^   r   r‘  r?   rÍ  r:   r:   r;   Útest_keepdimsç  s:    
ÿÿÿÿÿÿÿÿÿÿzTestPercentile.test_keepdimsc                 C   s¾   t  d¡}t  d¡}tt j|dd|d�|ƒ tt j|ddd|d�|ƒ t  d¡}tt j|dd|d�|ƒ tt j|ddd|d�|ƒ t  d	¡}tt j|d
|d�|ƒ tt j|d
d|d�|ƒ d S )N©rF   r2  r   r¿  rŽ  rÁ  rº  rJ   r:   rH   )r4   r=   r^   r   r‘  ©r`   r•  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 d   ƒ n1 sô0    Y  d S )NTr  r   r!  rö  r2  rã  r   r¿  rŽ  rÁ  rº  rJ   r:   )
r#  r$  r%  rò  r4   r=   r^   r  r   r‘  r÷  r:   r:   r;   Útest_out_nan  s&    


ÿ
ÿ
ÿzTestPercentile.test_out_nanc                 C   s:  t jdtd�}t j|d< tt  |d¡t jƒ tt j|ddd�t jƒ tt j|ddgdd�t  t jgd ¡ƒ t jdtd� ddd	¡}t j|d
< t j|d< tt  |d¡t jƒ tt  |d¡jdƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …ddf< t j|d d …ddf< tt  |ddgd¡|ƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …ddf< t j|d d …ddf< tt  |ddgd¡|ƒ t  t jdtd� ddd	¡dd¡}t j|d< t j|d< tt  |dd¡|ƒ t  t jdtd� ddd	¡ddgd¡}t j|d d …df< t j|d d …df< tt  |ddgd¡|ƒ t jt jdtd� ddd	¡ddgddd�}t j|d d …df< t j|d d …df< tt j|ddgddd�|ƒ d S )Nr(  râ   rH   rJ  r   ru   g333333ã?rR   rF   rŒ   ©rJ   rJ   rH   r
  rh   rJ   rå  rN   rŽ  r�  )	r4   r5   r>  r  r   r‘  rƒ   ro   rˆ   r}   r:   r:   r;   Útest_nan_behavior  sl    
ÿ

"

ÿ"

ÿÿ

ÿ
ÿÿÿz TestPercentile.test_nan_behaviorc                 C   sÜ   t jtdd��" t g d¢tj¡ W d   ƒ n1 s60    Y  t jtdd��$ t g d¢tjg¡ W d   ƒ n1 sx0    Y  t ddd¡}tj|d< t jtdd��  t g d¢|¡ W d   ƒ n1 sÎ0    Y  d S )NzPercentiles must be inrA  )rJ   rH   rR   r½   r¶   g     ÀX@rY  r   )rð   r/  r]   r4   r‘  r  rË  )r`   rÂ  r:   r:   r;   Ú
test_nan_qW  s    02
zTestPercentile.test_nan_qN)-rq   rr   rs   rd   r“  r–  r—  rð   rñ   rò   r4   Ú	typecodesrœ  rà  rÎ   rÍ   rü  rc  rd  ZclongdoublerÏ   ZH_F_TYPE_CODESr©  Z
TYPE_CODESr®  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�  t  sb   	

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


	$0)	 =r�  c                
   @   s¸   e Zd Zdd„ Zdd„ Zejjdd�dd„ ƒZd	d
„ Z	dd„ Z
ej dejd ¡dd„ ƒZej dg d¢¡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*   g d¢}t  |d¡}t jj|ddd� d S )N)r¸   rI  rÿ  gÍÌÌÌÌÌÜ?g
×£p=
Ç?rJ   )Zmaxulp)r4   Úquantiler›  Zassert_array_max_ulp)r`   rÅ   ra   r:   r:   r;   Útest_max_ulpf  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 )Nrl   rÑ  r   r¸   rJ   rŒ  rº   )r4   r5   r   rÿ  r5  r:   r:   r;   rd   n  s    zTestQuantile.test_basiczSee gh-19154r‡  c                 C   sl   t  dg¡}t  dd¡}t||d ƒ tt|ƒ|jƒ t  g d¢¡}t  ||¡}t||ƒ t|j|jƒ d S )NTFr   )FTT)r4   rƒ   rÿ  r   rÝ   rÏ   r   )r`   ra   Ztf_quantZ	quant_resr:   r:   r;   Útest_correct_quantile_valuet  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 r’  r   r9  r:   r:   r;   rë   �  rì   z.TestQuantile.test_fraction.<locals>.<listcomp>rl   r   rJ   rn   rH   rF   )	r_   r4   rÿ  r   rÝ   r   rƒ   rÛ   r5   )r`   rÅ   rÂ  r:   r:   r;   r“    s$    

zTestQuantile.test_fractionc                 C   sj   t  g d¢¡}| ¡ }t jt  d¡|dd� t||ƒ | ¡ }| ¡ }t jt  d¡|dd� t||ƒ d S )N)r   r·  rÕ  rÑ  r¶   rÔ  r°  r�  )r4   rƒ   r©   rÿ  r5   r   r  )r`   Úp0rG  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.J ‚d S )NrJ   rH   râ   rÑ  rŽ  r�  )r4   rÿ  rƒ   rÏ   )r`   rÏ   r´  r:   r:   r;   Útest_quantile_preserve_int_type¦  s    ÿz,TestQuantile.test_quantile_preserve_int_typer�  )rŸ  r   r¢  r£  r¤  r¥  r”  r§  r¨  rŽ  rª  r«  r°  c                 C   sd   t  ddd¡}t jt  g d¢¡d ||d�}tt  |¡|ƒ t jg d¢||d�}tt  |¡|ƒ d S )Nr   rJ   rÇ  )r   rJ   rJ   rH   rH   rR   rR   rF   rS   rS   rJ   rJ   rõ   rõ   rõ   rl   rl   rn   r�  r�  )r¸   r¶   r´   r·   )r4   rË  rÿ  rƒ   r   rÏ  )r`   r�  r  rÿ  r:   r:   r;   Útest_quantile_monotonic¬  s    	ÿÿz$TestQuantile.test_quantile_monotonicrR   r«  )Ú	min_valueÚ	max_valueFçœu ˆ<ä7þçœu ˆ<ä7~)Úallow_infinityÚ	allow_nanr  r  )rÏ   r?   Úelements)r  c                 C   s.   t  ddd¡}t  ||¡}tt  |¡|ƒ d S )Nr   rJ   g{®Gáz„?)r4   r5   rÿ  r   rÏ  )r`   r  r  rÿ  r:   r:   r;   Útest_quantile_monotonic_hypo¾  s    z)TestQuantile.test_quantile_monotonic_hypoc                 C   sV   t  g d¢g d¢g¡}t j|d d< t  |d¡}t  |¡s>J ‚tt  |d¡t jƒ d S )N)rG  rP  r½   )r·   r´   r¶   r   rJ   rÑ  )r4   rƒ   r  rÿ  rÃ  r   )r`   ra   rÓ   r:   r:   r;   Útest_quantile_scalar_nanÈ  s
    z%TestQuantile.test_quantile_scalar_nanN)rq   rr   rs   r   rd   rð   rñ   r¦  r  r“  rÖ  rò   r4   rý  r  r  Ú
hypothesisÚgivenr   rÎ   ÚstZintegersÚfloatsr  r  r:   r:   r:   r;   rþ  c  s,   


ÿ
ÿþÿ
rþ  c                
   @   sê   e Zd Zejejddddd�ejddddd�ejddddd�ejddddd�d�dd	„ ƒZejejddddd�ejddddd�ejddddd�d
�dd„ ƒZejejddddd�ejddddd�ejddddd�d
�dd„ ƒZ	dd„ Z
dS )ÚTestLerpFr   rJ   )r
  r	  r  r  r  r  )Út0Út1ra   r~   c                 C   sh   t  |||¡}t  |||¡}||ks,||kr:||ksdJ ‚n*||k ||k krX||ksdJ ‚n||ksdJ ‚d S r3   ©rc  Ú_lerp)r`   r  r  ra   r~   Zl0Úl1r:   r:   r;   Ú+test_linear_interpolation_formula_monotonicÑ  s    	z4TestLerp.test_linear_interpolation_formula_monotonic)Útra   r~   c                 C   sV   ||kr.|t  |||¡  kr&|ksRn J ‚n$|t  |||¡  krL|ksRn J ‚d S r3   r  )r`   r  ra   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 rQ  )rc  r  r   )r`   r  ra   r~   rf  rh  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s4J ‚d S )NrH   rS   rI  gÍÌÌÌÌÌ@)r4   rƒ   rc  r  )r`   ra   r~   r  r:   r:   r;   Ú+test_linear_interpolation_formula_0d_inputsû  s    


z4TestLerp.test_linear_interpolation_formula_0d_inputsN)rq   rr   rs   r  r  r  r  r  r  r  r  r:   r:   r:   r;   r  Ð  sJ   ÿÿÿÿú

ÿÿÿü
ÿÿÿü
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g d¢dejdgejdf¡dd„ ƒZdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zd d!„ Zd"S )#Ú
TestMedianc                 C   s>  t  d¡}t  d¡}t  d¡ dd¡}tt  |¡dƒ tt  |¡dƒ tt  |¡dƒ tt j|dd�g d	¢ƒ tt j|dd�dd
gƒ tt j|d d�dƒ t  g d¢¡}t|d |d  d t  |¡ƒ t  g d¢¡}t|d t  |¡ƒ t  g d¢¡}t|d t  |¡ƒ tt  |¡jdƒ t j	|d< tt  |¡jdƒ d S )NrJ   rH   rm   rR   rÑ  rÒ  r   ru   ©r¼  rÒ  rŒ  rF   )çð™6-Â¦?çº¤0”¸§?çºÝË}rÂ?g©Á4¯?r´   )r   r  r!  )r  r!  r   rY   )
r4   rƒ   r5   ro   r   Úmedianr   r	   rˆ   r  )r`   Úa0r9  ri  ra   r:   r:   r;   rd     s$    

 
zTestMedian.test_basicc                 C   sè   t  ddgddgddgddgg¡}|t jjdd	d
d�fD ]B}| ¡ }t j|d d� t|jƒD ]}t j||d� q\t||ƒ q8t	t j|dd�ddgƒ t	t j|j
dd�ddgƒ t	t  |¡dƒ t	t j|d d�dƒ t	t  |j
¡dƒ d S )NrH   rR   r   rJ   rm   rn   rF   rS   r  rÊ   rÛ  ru   rŒ  )r4   rƒ   rÍ  Úrandintr©   r"  r_   rˆ   r   r   r+  )r`   Úa3ra   ÚorigÚ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�g d¢ƒ tt j| ¡ d	dd�ddgƒ tt j| ¡ d	d d�dƒ tt j| ¡ d	dd�ddgƒ tt j|j ¡ d	dd�ddgƒ t jdt jd� d¡}t j	 
| ¡ ¡ tt j|d d�t j| ¡ d d	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ tt j|dd�t j| ¡ dd	d�ƒ d S )NrH   rR   r   rJ   rm   rn   rF   rS   TrÐ  rÑ  rÒ  )rÑ  rv   r  r®  râ   rQ   ru   )rv   rÑ  )r4   rƒ   r5   ro   r   r"  r©   r+  rÍ   rÍ  ré  rê  )r`   r%  r#  r9  ri  Za4r:   r:   r;   Útest_overwrite_keyword,  sP    
ý

ÿÿÿÿÿÿÿÿÿz!TestMedian.test_overwrite_keywordc                 C   sF   g d¢}t t |¡dƒ |g}t t |¡dƒ ttj|dd�|ƒ d S )NrŒ   rH   r   ru   )r	   r4   r"  r   )r`   rÅ   rÉ  r:   r:   r;   rÆ  M  s
    zTestMedian.test_array_likec                 C   s2   G dd„ dt jƒ}|g d¢ƒ}tt  |¡dƒ d S )Nc                   @   s    e Zd Zddd„Zddd„ZdS )z,TestMedian.test_subclass.<locals>.MySubClassNc                 S   s   t  |¡ | ¡}||_|S r3   )r4   r^  rÜ   Úinfo)ÚclsZinput_arrayr*  Úobjr:   r:   r;   Ú__new__X  s    z4TestMedian.test_subclass.<locals>.MySubClass.__new__c                 S   s   dS )Néùÿÿÿr:   )r`   rv   rÏ   r‚  r:   r:   r;   r¹   ]  s    z1TestMedian.test_subclass.<locals>.MySubClass.mean)N)NNN)rq   rr   rs   r-  r¹   r:   r:   r:   r;   Ú
MySubClassV  s   
r/  rŒ   r.  )r4   rÛ   r   r"  )r`   r/  ra   r:   r:   r;   r4  T  s    
zTestMedian.test_subclassr  rµ   r¶   r·   r¸   c                 C   s:   G dd„ dt jƒ}t  t  |¡ |¡¡}t||ƒs6J ‚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;   Ú
MySubclassg  s   r0  N)r4   rÛ   r"  rƒ   rÜ   r2  )r`   r  r0  rû   r:   r:   r;   Útest_subclass2c  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ö  r2  r   r¿  rº  rJ   r:   )r4   r=   r^   r   r"  r÷  r:   r:   r;   rø  m  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 d   ƒ n1 s¢0    Y  d S )NTr  r   r!  rö  r2  rã  r   r¿  rº  rJ   r:   )
r#  r$  r%  rò  r4   r=   r^   r  r   r"  r÷  r:   r:   r;   rù  v  s    




zTestMedian.test_out_nanc                 C   sf  t jdtd�}t j|d< tt  |¡t jƒ tt j|dd�t jƒ t jdtd� ddd¡}t j|d< t j|d	< tt  |¡t jƒ tt  |¡jdƒ t  t jdtd� ddd¡d¡}t j|d
< t j|d< tt  |d¡|ƒ t  t jdtd� ddd¡d¡}t j|d< t j|d< tt  |d¡|ƒ t  t jdtd� ddd¡d¡}t j|d< t j|d< tt  |d¡|ƒ d S )Nr(  râ   rH   r   ru   rR   rF   rŒ   rú  r
  rh   rJ   rå  rN   )r4   r5   r>  r  r   r"  ro   rˆ   r}   r:   r:   r;   rû  ‚  s*    


 

 

 

zTestMedian.test_nan_behaviorc                 C   s˜  t jg td�}tjdd��P}t ddt¡ tt  |¡t j	ƒ t
|d jtu ƒ tt|ƒdƒ W d   ƒ n1 sp0    Y  t jg tdd	�}tjdd��B}t ddt¡ tt  |¡t j	ƒ t
|d jtu ƒ W d   ƒ n1 sÞ0    Y  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��D}t ddt¡ tt j|dd
�|ƒ t
|d jtu ƒ W d   ƒ n1 �sŠ0    Y  d S )Nrâ   Tr  r   r!  r   rH   rR   )rÏ   rþ  ru   rJ   )r4   rƒ   r>  r#  r$  r%  rò  r   r"  r  r   r'  rü   )r`   ra   rÒ   r~   r:   r:   r;   ró  ¢  s&    ,0zTestMedian.test_emptyc                 C   sL   t  d¡}ttt  | t¡¡ƒtƒ t j|d< ttt  | t¡¡ƒtƒ d S )NrP  rH   )	r4   r5   r   rÝ   r"  rÌ   r³  r>  r  )r`   r•  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¨   rZ   ru   rY   r   ri   rJ   rg   rI   rÜ  )rY   rÝ  rÞ  rà  rá  rH   râ  rÊ  rã  rä  rå  rM   )r4   rÍ  ræ  rç  r   r"  rè  r‰   r©   r5   ro   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Þ  rF  ru   rî  rF   rï  rO   )r4   r^   r   ry   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£   rZ   rñ  rx   rò  rí   ró  rË  rà  rô  )r4   r^   r   r"  r?   rÍ  r:   r:   r;   rõ  ë  s&    
ÿÿÿÿÿÿzTestMedian.test_keepdimsN)rq   rr   rs   rd   r(  r)  rÆ  r4  rð   rñ   rò   r4   r  r1  rø  rù  rû  ró  r2  rí  rð  rõ  r:   r:   r:   r;   r    s"   !ÿ
	 r  c                   @   s   e Zd Zdd„ Zdd„ ZdS )ÚTestAdd_newdoc_ufuncc                 C   s"   t ttddƒ t tttjdƒ d S )NrH   Zblah)r   r  r   r]   r4   r6   r{   r:   r:   r;   Útest_ufunc_argý  s    z#TestAdd_newdoc_ufunc.test_ufunc_argc                 C   s   t tttjdƒ d S )NrR   )r   r  r   r4   r6   r{   r:   r:   r;   Útest_string_arg  s    z$TestAdd_newdoc_ufunc.test_string_argN)rq   rr   rs   r4  r5  r:   r:   r:   r;   r3  û  s   r3  c                   @   s\   e Zd Zejjejjdkdd�ejj	e
dd�dd„ ƒƒZejjejjdkdd�dd„ ƒZd	S )
ÚTestAdd_newdocrH   úPython running -OOr‡  úPyPy does not modify tp_docc                 C   sV   d}t tjjjjd t|ƒ… |ƒ tttjjj	jƒdkƒ tttj
jjjƒdkƒ d S )Nz"Current flat index into the array.rÜ  )r   r4   ÚcoreÚflatiterÚindexrU  rü   r   ZufuncÚidentityrÏ  Zindex_tricksZmgrid)r`   rj  r:   r:   r;   Útest_add_doc  s    zTestAdd_newdoc.test_add_docc                 C   s2   t jjjj}t  ddd¡ |t jjjjks.J ‚d S )Nz
numpy.corer:  )r;  zbad docstring)r4   r9  r:  r;  rU  Z
add_newdoc)r`   Zprev_docr:   r:   r;   Útest_errors_are_ignored  s    z&TestAdd_newdoc.test_errors_are_ignoredN)rq   rr   rs   rð   rñ   r‘  r‹  r®   Úoptimizer¦  r   r=  r>  r:   r:   r:   r;   r6    s
   r6  c                   @   s\   e Zd Zejjejjdkdd�ejje	dd�dd„ ƒƒZ
ejjejjdkdd�dd„ ƒZd	S )
ÚTestAddDocstringrH   r7  r‡  r8  c                 C   s0   t  t jjt jjj¡ dd„ }t  ||j¡ d S )Nc                   S   s   dS ©Ú	docstringNr:   r:   r:   r:   r;   Úfunc"  s    z6TestAddDocstring.test_add_same_docstring.<locals>.func)r4   Úadd_docstringrÛ   ÚflatrU  ©r`   rC  r:   r:   r;   Útest_add_same_docstring  s    z(TestAddDocstring.test_add_same_docstringc                 C   sx   t tƒ�  t tjjd¡ W d   ƒ n1 s.0    Y  dd„ }t tƒ� t |d¡ W d   ƒ n1 sj0    Y  d S )Nzdifferent docstringc                   S   s   dS rA  r:   r:   r:   r:   r;   rC  .  s    z=TestAddDocstring.test_different_docstring_fails.<locals>.func)r   r  r4   rD  rÛ   rE  rF  r:   r:   r;   Útest_different_docstring_fails(  s
    
.
z/TestAddDocstring.test_different_docstring_failsN)rq   rr   rs   rð   rñ   r‘  r‹  r®   r?  r   rG  rH  r:   r:   r:   r;   r@    s
   
r@  c                   @   s.   e Zd Zej dg d¢¡dd„ ƒZdd„ ZdS )ÚTestSortComplexztype_in, type_out))ÚlÚD)Úhr«   )ÚHr«   )r~   r«   )r  r«   )ræ  ÚGc                 C   sH   t jg d¢|d�}t  |¡}t  |¡ |¡}t||ƒ t|j|jƒ d S )N)rS   rR   rm   rH   rJ   râ   )r4   rƒ   Úsort_complexrÏ  rÌ   r   rÏ   )r`   Ztype_inZtype_outra   rÓ   r�  r:   r:   r;   Útest_sort_real8  s
    


zTestSortComplex.test_sort_realc                 C   sJ   t jg d¢dd�}t jg d¢dd�}t  |¡}t||ƒ t|j|jƒ d S )N)r  ù      ð?       Àrõ  r€  rK  râ   )rõ  rQ  r€  r  )r4   rƒ   rO  r   rÏ   )r`   ra   r�  rÓ   r:   r:   r;   Útest_sort_complexH  s
    

z!TestSortComplex.test_sort_complexN)rq   rr   rs   rð   rñ   rò   rP  rR  r:   r:   r:   r;   rI  6  s   
rI  )r¶   )r¶   r¸   )zry  r#  r‹  rè   Z	fractionsr   r  rð   r  Zhypothesis.extra.numpyr   Zhypothesis.strategiesZ
strategiesr  Únumpyr4   r   Znumpy.testingr   r   r   r	   r
   r   r   r   r   r   r   r   Znumpy.lib.function_baserÏ  Zfunction_baserc  Znumpy.randomr   Z	numpy.libr   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r<   rD   rE   rt   r“   r¢   r§   r³   ró   r  rD  rM  rN  rQ  rk  rx  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>  rF  r`  r�  rþ  r  r  r3  r6  r@  rI  r:   r:   r:   r;   Ú<module>   s    8ˆDg# 	>o u }A)

   *)Uÿl>[j4nd` C   rm2 z
