a
    ³ÐOc/®  ã                   @   sö  d dl Z d dlZd dlZd dlZd dlmZmZ d dlm	Z	m
Z
mZmZmZmZ e dejddejdgdd	ejd
ddgejejejdejdgdejejddejgg¡Ze g d¢¡e g d¢¡e ddg¡e g d¢¡gZe g d¢g d¢g d¢g d¢g¡Ze g d¢g d¢g d¢g d¢g¡ZG dd„ dƒZG dd „ d ƒZG d!d"„ d"ƒZe d#¡e g d$¢¡d%œZe ¡ D ]Zejd&d'� �qjej d(ejd) ejd*  d+ ¡ejjd,e ¡ e ¡ d-�G d.d/„ d/ƒƒƒZ G d0d1„ d1ƒZ!G d2d3„ d3e!ƒZ"G d4d5„ d5e!ƒZ#G d6d7„ d7e!ƒZ$d8Z%e&ejd* ƒZ'e'd9d:„ e%D ƒ7 Z'G d;d<„ d<ƒZ(G d=d>„ d>ƒZ)G d?d@„ d@ƒZ*ej dAe ejdBejej+g¡e g dC¢¡fejg dD¢ej,dE�dFfe g dC¢¡dFfejejdBgejej+ggej-dE�e d&dFgd&dFgg¡fg¡dGdH„ ƒZ.dIdJ„ Z/dS )Ké    N)Ú	_nan_maskÚ_replace_nan)Úassert_Úassert_equalÚassert_almost_equalÚassert_raisesÚassert_array_equalÚsuppress_warningsç³êsµûã?ç&S£’:Ñ?çàœ¥½Á‡?çÁÊ¡E¶ó½?çÞ	Šá?ç»¸�ðî¿çáz®GáÊ?çL¦
F%uÞ?ç6<½R–!Ò?ç[B>èÙ¬º?ç“:M„ã¿çÏ÷Sã¥›Ä?çzÇ):’ËÇ?ç•Ô	h"Ô?)r
   r   r   r   )r   r   r   r   r   )r   r   r   )r
   ç      ð?r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r
   ç        r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   c                   @   sÂ   e Zd Zejejejejejej	ej
ejejejejejejejejejejejejejejejejejejejejejiZ dd„ e D ƒZ!e"ddd„ƒZ#e$j%j&de  '¡ e!d�dd	„ ƒZ(d
d„ Z)dS )ÚTestSignatureMatchc                 C   s   g | ]
}|j ‘qS © ©Ú__name__)Ú.0Úkr   r   úX/var/www/html/gsl.tools/lib/python3.9/site-packages/numpy/lib/tests/test_nanfunctions.pyÚ
<listcomp>8   ó    zTestSignatureMatch.<listcomp>ú...c                 C   sT   g }t  | ¡}|j ¡ D ]0}|jt jju r6| |¡ q| |j|d�¡ qt  	|¡S )z?Construct a signature and replace all default parameter-values.)Údefault)
ÚinspectÚ	signatureÚ
parametersÚvaluesr$   Ú	ParameterÚemptyÚappendÚreplaceÚ	Signature)Úfuncr$   Zprm_listr&   Zprmr   r   r    Úget_signature:   s    
z TestSignatureMatch.get_signatureznan_func,func©Úidsc                 C   s&   |   |¡}|   |¡}tj ||¡ d S ©N)r/   ÚnpÚtestingr   )ÚselfZnan_funcr.   r&   Znan_signaturer   r   r    Útest_signature_matchF   s    

z'TestSignatureMatch.test_signature_matchc                 C   s"   t j t| jƒtt jjjƒ¡ dS )z4Validate that all nan functions are actually tested.N)r3   r4   r   ÚsetÚIDSÚlibZnanfunctionsÚ__all__©r5   r   r   r    Útest_exhaustivenessO   s    ÿz&TestSignatureMatch.test_exhaustivenessN)r#   )*r   Ú
__module__Ú__qualname__r3   ÚnanminZaminÚnanmaxZamaxÚ	nanargminÚargminÚ	nanargmaxÚargmaxÚnansumÚsumÚnanprodÚprodÚ	nancumsumÚcumsumÚ
nancumprodÚcumprodÚnanmeanÚmeanÚ	nanmedianÚmedianÚnanpercentileÚ
percentileÚnanquantileÚquantileÚnanvarÚvarÚnanstdÚstdZNANFUNCSr8   Ústaticmethodr/   ÚpytestÚmarkÚparametrizeÚitemsr6   r<   r   r   r   r    r   '   s*   ò
r   c                	   @   sþ   e Zd ZejejgZejejgZ	dd„ Z
dd„ Zdd„ Zdd„ Zd	d
„ Zej dg d¢¡ej dejd ¡ejjde ej¡e dej¡gddgd�dd„ ƒƒƒZdd„ Zdd„ Zdd„ Zdd„ Zej dejd ¡dd„ ƒZej dejd ¡d d!„ ƒZd"S )#ÚTestNanFunctions_MinMaxc                 C   s*   t  ¡ }| jD ]}||ƒ t|t ƒ qd S r2   ©Ú_ndatÚcopyÚnanfuncsr   ©r5   ÚndatÚfr   r   r    Útest_mutation[   s    
z%TestNanFunctions_MinMax.test_mutationc                 C   s\   t  d¡}t| j| jƒD ]>\}}dD ]0}|||dd�}|||dd�}t|j|jkƒ q$qd S ©Né   ©Nr   é   T©ÚaxisÚkeepdims©r3   ÚeyeÚziprb   Ústdfuncsr   Úndim©r5   ÚmatÚnfÚrfrl   ÚtgtÚresr   r   r    Útest_keepdimsb   s    
z%TestNanFunctions_MinMax.test_keepdimsc                 C   s^   t  d¡}t| j| jƒD ]@\}}t  d¡}||dd�}||d|d�}t||ƒ t||ƒ qd S ©Nrh   rj   ©rl   ©rl   Úout©r3   ro   rp   rb   rq   Úzerosr   ©r5   rt   ru   rv   Úresoutrw   rx   r   r   r    Útest_outj   s    


z TestNanFunctions_MinMax.test_outc                 C   s�   d}t | j| jƒD ]x\}}|D ]j}tjd|d�}||dd�jj}||dd�jj}t||u ƒ ||d d�jj}||d d�jj}t||u ƒ qqd S )NÚefdgFDGrh   ©Údtyperj   r{   ©rp   rb   rq   r3   ro   r…   Útyper   ©r5   Úcodesru   rv   Úcrt   rw   rx   r   r   r    Útest_dtype_from_inputs   s    z-TestNanFunctions_MinMax.test_dtype_from_inputc                    sD   t | j| jƒD ]0\}‰ ‡ fdd„tD ƒ}|tdd�}t||ƒ qd S )Nc                    s   g | ]}ˆ |ƒ‘qS r   r   ©r   Úd©rv   r   r    r!   ‚   r"   z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>rj   r{   ©rp   rb   rq   Ú_rdatr`   r   ©r5   ru   rw   rx   r   rŽ   r    Útest_result_values€   s    z*TestNanFunctions_MinMax.test_result_valuesrl   ri   r…   ÚAllFloatÚarray©rh   rh   Ú0dÚ2dr0   c              	   C   s–   |d ur|j dkrt d¡ | |¡}d}| jD ]`}tjt|d�� |||d�}W d   ƒ n1 sd0    Y  t |¡ 	¡ s€J ‚|j
|j
ks0J ‚q0d S ©Nr   ú*`axis != None` not supported for 0d arraysúAll-NaN slice encountered©Úmatchr{   )rr   rZ   ÚskipÚastyperb   ÚwarnsÚRuntimeWarningr3   ÚisnanÚallr…   ©r5   rl   r…   r”   rœ   r.   r}   r   r   r    Útest_allnans†   s    


*z$TestNanFunctions_MinMax.test_allnansc                 C   sj   t j t¡}|j ¡ }t jfD ]F}||dd�}|tdd�}t||ƒ t|j|ƒ tt  	|¡ 
¡  ƒ qd S )Nrj   r{   )r3   ÚmaZfix_invalidr`   Z_maskra   r?   r   r   ÚisinfÚany)r5   rt   Zmskre   rx   rw   r   r   r    Útest_masked˜   s    

z#TestNanFunctions_MinMax.test_maskedc                 C   s    | j D ]}t|dƒdkƒ qd S ©Nr   ©rb   r   ©r5   re   r   r   r    Útest_scalar¢   s    
z#TestNanFunctions_MinMax.test_scalarc              	   C   sB  G dd„ dt jƒ}t  d¡ |¡}| jD ]j}||dd�}tt||ƒƒ t|jdkƒ ||dd�}tt||ƒƒ t|jdkƒ ||ƒ}t|jdkƒ q(t j|d< | jD �]–}t	j
d	d
��Z}t	 d¡ ||dd�}tt||ƒƒ tt  t  |¡¡ ƒ tt|ƒdkƒ W d   ƒ n1 �s0    Y  t	j
d	d
���}t	 d¡ ||dd�}tt||ƒƒ tt  |d ¡�o†t  |d ¡ �o†t  |d ¡ ƒ tt|ƒdkdƒ tt|d jtƒƒ W d   ƒ n1 �sÆ0    Y  t	j
d	d
��N}t	 d¡ ||ƒ}t|jdkƒ t|t jkƒ tt|ƒdkƒ W d   ƒ q¤1 �s20    Y  q¤d S )Nc                   @   s   e Zd ZdS )z8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayN©r   r=   r>   r   r   r   r    Ú	MyNDArray§   s   r®   rh   r   r{   ©rh   rj   r   T©ÚrecordÚalwaysé   úno warning raised)r3   Úndarrayro   Úviewrb   r   Ú
isinstanceÚshapeÚnanÚwarningsÚcatch_warningsÚsimplefilterr§   r¡   ÚlenÚ
issubclassÚcategoryr    )r5   r®   Úminere   rx   Úwr   r   r    Útest_subclass¦   sD    


0
$ÿ4
z%TestNanFunctions_MinMax.test_subclassc                 C   sÎ   t jddgt jdgt jt jggtd�}tt  |¡dƒ tt j|dd�ddgƒ tjdd��`}t d	¡ tt	t j|d
d�ƒddt jgƒ t
t|ƒd
kdƒ t
t|d jtƒƒ W d   ƒ n1 sÀ0    Y  d S )Nr   g       @ç      @r„   r   r{   Tr°   r²   rj   r´   )r3   r”   r¹   Úobjectr   r?   rº   r»   r¼   Úlistr   r½   r¾   r¿   r    )r5   ÚarrrÁ   r   r   r    Útest_object_arrayÑ   s    &
 z)TestNanFunctions_MinMax.test_object_arrayc                 C   s¤   G dd„ dt jƒ}t  d¡ |¡}t j|d d…< | jD ]h}|t ju rHdnd}|||d�}|j|ksfJ ‚||ksrJ ‚|| |¡|d�}|j|ks’J ‚||ks6J ‚q6d S )Nc                   @   s   e Zd ZdS )z7TestNanFunctions_MinMax.test_initial.<locals>.MyNDArrayNr­   r   r   r   r    r®   ß   s   r®   é	   é   éd   r   ©Úinitial)	r3   rµ   Úarangerž   r¹   rb   r@   r…   r¶   )r5   r…   r®   Úarre   rÌ   Úret1Úret2r   r   r    Útest_initialÝ   s    
z$TestNanFunctions_MinMax.test_initialc           	      C   sÔ   G dd„ dt jƒ}t  d¡ dd¡ |¡}t j|dd d …f< t j|t jd�}d|d d …df< | jD ]l}|t j	u rtdnd	}|||d
d�}|j
|ks”J ‚||ks J ‚|| |¡|d
d�}|j
|ksÂJ ‚||ksbJ ‚qbd S )Nc                   @   s   e Zd ZdS )z5TestNanFunctions_MinMax.test_where.<locals>.MyNDArrayNr­   r   r   r   r    r®   ò   s   r®   rÈ   rh   r   r„   Fé   é   rÉ   ©ÚwhererÌ   )r3   rµ   rÍ   Úreshaperž   r¹   Ú	ones_likeÚbool_rb   r?   r…   r¶   )	r5   r…   r®   rÎ   rÕ   re   Ú	referencerÏ   rÐ   r   r   r    Ú
test_whereð   s    
z"TestNanFunctions_MinMax.test_whereN)r   r=   r>   r3   r?   r@   rb   ÚminÚmaxrq   rf   ry   r‚   r‹   r’   rZ   r[   r\   Ú	typecodesr”   r¹   Úfullr¤   r¨   r¬   rÂ   rÇ   rÑ   rÚ   r   r   r   r    r^   V   s0   	
þý
+
r^   c                	   @   sÒ   e Zd ZejejgZdd„ Zdd„ Ze	j
 dg d¢¡e	j
 dejd ¡e	j
jd	e ej¡e d
ej¡gddgd�dd„ ƒƒƒZdd„ Zdd„ Zdd„ Ze	j
 dejd ¡dd„ ƒZe	j
 dejd ¡dd„ ƒZdS )ÚTestNanFunctions_ArgminArgmaxc                 C   s*   t  ¡ }| jD ]}||ƒ t|t ƒ qd S r2   r_   rc   r   r   r    rf   
  s    
z+TestNanFunctions_ArgminArgmax.test_mutationc              
   C   s°   t | jtjtjgƒD ]–\}}tD ]ˆ}tƒ �n}| td¡ ||ƒ}|| }t	t 
|¡ ƒ t	|||ƒ ¡  ƒ t	t ||d |… ¡ ¡  ƒ W d   ƒ q 1 sž0    Y  q qd S )Nzinvalid value encountered in)rp   rb   r3   ZgreaterZlessr`   r	   Úfilterr    r   r¡   r§   Úequal)r5   re   ZfcmpÚrowÚsupÚindÚvalr   r   r    r’     s    z0TestNanFunctions_ArgminArgmax.test_result_valuesrl   ri   r…   r“   r”   r•   r–   r—   r0   c              	   C   sp   |d ur|j dkrt d¡ | |¡}| jD ]>}tjtdd�� |||d� W d   ƒ q,1 s`0    Y  q,d S r˜   )rr   rZ   r�   rž   rb   ZraisesÚ
ValueError)r5   rl   r…   r”   r.   r   r   r    r¤     s    


z*TestNanFunctions_ArgminArgmax.test_allnansc                 C   sZ   t  d¡}| jD ]D}dD ]}tt|||d� qdD ] }|||d�}t|t  d¡ƒ q2qd S )N©r   rh   ©r   Nr{   ©rj   r   )r3   r   rb   r   ræ   r   )r5   rt   re   rl   rx   r   r   r    Ú
test_empty-  s    

z(TestNanFunctions_ArgminArgmax.test_emptyc                 C   s    | j D ]}t|dƒdkƒ qd S r©   rª   r«   r   r   r    r¬   6  s    
z)TestNanFunctions_ArgminArgmax.test_scalarc                 C   s˜   G dd„ dt jƒ}t  d¡ |¡}| jD ]j}||dd�}tt||ƒƒ t|jdkƒ ||dd�}tt||ƒƒ t|jdkƒ ||ƒ}t|jdkƒ q(d S )	Nc                   @   s   e Zd ZdS )z>TestNanFunctions_ArgminArgmax.test_subclass.<locals>.MyNDArrayNr­   r   r   r   r    r®   ;  s   r®   rh   r   r{   r¯   rj   r   )r3   rµ   ro   r¶   rb   r   r·   r¸   )r5   r®   rÀ   re   rx   r   r   r    rÂ   :  s    
z+TestNanFunctions_ArgminArgmax.test_subclassc                 C   sh   t  d¡ |¡}t j|d d…< | jD ]>}|t ju r6dnd}||dd�}|j|jksVJ ‚||ks$J ‚q$d S )NrÈ   rÉ   rÓ   T)rm   )r3   rÍ   rž   r¹   rb   rA   rr   ©r5   r…   rÎ   re   rÙ   Úretr   r   r    ry   K  s    
z+TestNanFunctions_ArgminArgmax.test_keepdimsc                 C   st   t  d¡ |¡}t j|d d…< | jD ]J}t jdt jd�}|t ju rFdnd}|||d�}||u sbJ ‚||ks$J ‚q$d S )NrÈ   rÉ   r   r„   rÓ   ©r}   )r3   rÍ   rž   r¹   rb   r   ÚintprA   )r5   r…   rÎ   re   r}   rÙ   rì   r   r   r    r‚   V  s    
z&TestNanFunctions_ArgminArgmax.test_outN)r   r=   r>   r3   rA   rC   rb   rf   r’   rZ   r[   r\   rÝ   r”   r¹   rÞ   r¤   rê   r¬   rÂ   ry   r‚   r   r   r   r    rß     s&   
þý		

rß   rÉ   )é   é'   é]   éW   é.   )r–   Z1dF)Úwriter…   Z
AllIntegerr“   ÚOrt   r0   c                   @   s  e Zd Zejejejejejej	ej
ejejejejejejejejejejejejejejejejejiZdd„ eD ƒZejj de !¡ ed�ej"dd�dd„ ƒƒZ#ejj dej$ej%fej&ej'fgd	d
gd�dd„ ƒZ(ejj dejejfejejfgddgd�dd„ ƒZ)dS )ÚTestNanFunctions_NumberTypesc                 C   s   g | ]
}|j ‘qS r   r   )r   Úir   r   r    r!   €  r"   z'TestNanFunctions_NumberTypes.<listcomp>znanfunc,funcr0   Úignore)Zoverc                 C   sV   |  |¡}||ƒ}||ƒ}t||ƒ |dkrBt|ƒt|ƒu sRJ ‚n|j|jksRJ ‚d S )Nrõ   ©rž   r   r‡   r…   ©r5   rt   r…   Znanfuncr.   rw   r}   r   r   r    Útest_nanfunc‚  s    

z)TestNanFunctions_NumberTypes.test_nanfuncrS   rQ   c                 C   s^   |  |¡}||dd�}||dd�}t||ƒ |dkrJt|ƒt|ƒu sZJ ‚n|j|jksZJ ‚d S )Nrj   ©Úqrõ   rù   rú   r   r   r    Útest_nanfunc_q�  s    

z+TestNanFunctions_NumberTypes.test_nanfunc_qrU   rW   c                 C   s^   |  |¡}||dd�}||dd�}t||ƒ |dkrJt|ƒt|ƒu sZJ ‚n|j|jksZJ ‚d S )Nç      à?©Úddofrõ   rù   rú   r   r   r    Útest_nanfunc_ddofŸ  s    

z.TestNanFunctions_NumberTypes.test_nanfunc_ddofN)*r   r=   r>   r3   r?   rÛ   r@   rÜ   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rU   rV   rW   rX   rb   Znanfunc_idsrZ   r[   r\   r]   Zerrstaterû   rS   rT   rQ   rR   rþ   r  r   r   r   r    rö   l  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 )ÚSharedNanFunctionsTestsMixinc                 C   s*   t  ¡ }| jD ]}||ƒ t|t ƒ qd S r2   r_   rc   r   r   r    rf   ±  s    
z*SharedNanFunctionsTestsMixin.test_mutationc                 C   s\   t  d¡}t| j| jƒD ]>\}}dD ]0}|||dd�}|||dd�}t|j|jkƒ q$qd S rg   rn   rs   r   r   r    ry   ¸  s    
z*SharedNanFunctionsTestsMixin.test_keepdimsc                 C   s^   t  d¡}t| j| jƒD ]@\}}t  d¡}||dd�}||d|d�}t||ƒ t||ƒ qd S rz   r~   r€   r   r   r    r‚   À  s    


z%SharedNanFunctionsTestsMixin.test_outc           	   
   C   sö   t  d¡}d}t| j| jƒD ]Ô\}}|D ]Æ}tƒ �¬}|t jt jhv rX|dv rX| t j	¡ ||t  
|¡dd�j
j}||t  
|¡dd�j
j}t||u ƒ ||t  
|¡d d�j
j}||t  
|¡d d�j
j}t||u ƒ W d   ƒ q(1 sä0    Y  q(qd S ©Nrh   rƒ   ZFDGrj   )r…   rl   ©r3   ro   rp   rb   rq   r	   rW   rU   rà   ÚComplexWarningr…   r‡   r   ©	r5   rt   r‰   ru   rv   rŠ   rã   rw   rx   r   r   r    Útest_dtype_from_dtypeÉ  s    
z2SharedNanFunctionsTestsMixin.test_dtype_from_dtypec           	   
   C   sÞ   t  d¡}d}t| j| jƒD ]¼\}}|D ]®}tƒ �”}|t jt jhv rX|dv rX| t j	¡ |||dd�j
j}|||dd�j
j}t||u ƒ |||d d�j
j}|||d d�j
j}t||u ƒ W d   ƒ q(1 sÌ0    Y  q(qd S r  r  r  r   r   r    Útest_dtype_from_charÚ  s    
z1SharedNanFunctionsTestsMixin.test_dtype_from_charc                 C   sš   d}t | j| jƒD ]‚\}}|D ]t}tjd|d�}||dd�jj}||dd�jj}t||u d||f ƒ ||d d�jj}||d d�jj}t||u ƒ qqd S )Nrƒ   rh   r„   rj   r{   zres %s, tgt %sr†   rˆ   r   r   r    r‹   ë  s    z2SharedNanFunctionsTestsMixin.test_dtype_from_inputc                    sD   t | j| jƒD ]0\}‰ ‡ fdd„tD ƒ}|tdd�}t||ƒ qd S )Nc                    s   g | ]}ˆ |ƒ‘qS r   r   rŒ   rŽ   r   r    r!   ú  r"   zCSharedNanFunctionsTestsMixin.test_result_values.<locals>.<listcomp>rj   r{   r�   r‘   r   rŽ   r    r’   ø  s    z/SharedNanFunctionsTestsMixin.test_result_valuesc                 C   s    | j D ]}t|dƒdkƒ qd S r©   rª   r«   r   r   r    r¬   þ  s    
z(SharedNanFunctionsTestsMixin.test_scalarc                 C   sÐ   G dd„ dt jƒ}t  d¡}| |¡}| jD ]ž}||dd�j}||dd�}tt||ƒƒ t|j|kƒ ||dd�j}||dd�}tt||ƒƒ t|j|kƒ ||ƒj}||ƒ}tt||ƒƒ t|j|kƒ q,d S )Nc                   @   s   e Zd ZdS )z=SharedNanFunctionsTestsMixin.test_subclass.<locals>.MyNDArrayNr­   r   r   r   r    r®     s   r®   rh   r   r{   rj   )r3   rµ   ro   r¶   rb   r¸   r   r·   )r5   r®   r”   rÀ   re   Zexpected_shaperx   r   r   r    rÂ     s     



z*SharedNanFunctionsTestsMixin.test_subclassN)r   r=   r>   rf   ry   r‚   r  r	  r‹   r’   r¬   rÂ   r   r   r   r    r  °  s   	r  c                	   @   s¾   e Zd ZejejgZejejgZ	e
j dg d¢¡e
j dejd ¡e
jjde ej¡e dej¡gddgd	�d
d„ ƒƒƒZdd„ Ze
j dejd ¡dd„ ƒZe
j dejd ¡dd„ ƒZdS )ÚTestNanFunctions_SumProdrl   ri   r…   r“   r”   r•   r–   r—   r0   c                 C   sr   |d ur|j dkrt d¡ | |¡}t| jddgƒD ]6\}}|||d�}t ||k¡s\J ‚|j|jks6J ‚q6d S )Nr   r™   rj   r{   ©	rr   rZ   r�   rž   rp   rb   r3   r¢   r…   ©r5   rl   r…   r”   r.   Úidentityr}   r   r   r    r¤     s    

z%TestNanFunctions_SumProd.test_allnansc                 C   s‚   t tjtjgddgƒD ]f\}}t d¡}|gd }||dd�}t||ƒ g }||dd�}t||ƒ |}||d d�}t||ƒ qd S )Nr   rj   rç   rh   r{   )rp   r3   rE   rG   r   r   ©r5   re   Z	tgt_valuert   rw   rx   r   r   r    rê   .  s    



z#TestNanFunctions_SumProd.test_emptyc                 C   sf   t  d¡ |¡}t j|d d…< | jD ]<}|t ju r6dnd}||dd�}|j|ksTJ ‚||ks$J ‚q$d S )NrÈ   rÉ   é   i   r³   rË   )r3   rÍ   rž   r¹   rb   rE   r…   rë   r   r   r    rÑ   ;  s    
z%TestNanFunctions_SumProd.test_initialc                 C   s”   t  d¡ dd¡ |¡}t j|dd d …f< t j|t jd�}d|d d …df< | jD ]>}|t ju rbdnd}|||dd	�}|j	|ks‚J ‚||ksPJ ‚qPd S )
NrÈ   rh   r   r„   Fé   iÀ  r³   rÔ   )
r3   rÍ   rÖ   rž   r¹   r×   rØ   rb   rE   r…   )r5   r…   rÎ   rÕ   re   rÙ   rì   r   r   r    rÚ   F  s    
z#TestNanFunctions_SumProd.test_whereN)r   r=   r>   r3   rE   rG   rb   rF   rH   rq   rZ   r[   r\   rÝ   r”   r¹   rÞ   r¤   rê   rÑ   rÚ   r   r   r   r    r
    s    
þý


r
  c                	   @   sž   e Zd ZejejgZejejgZ	e
j dg d¢¡e
j dejd ¡e
jjde ej¡e dej¡gddgd	�d
d„ ƒƒƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestNanFunctions_CumSumProdrl   ri   r…   r“   r”   r•   r–   r—   r0   c                 C   sn   |d ur|j dkrt d¡ | |¡}t| jddgƒD ]2\}}||ƒ}t ||k¡sXJ ‚|j|jks6J ‚q6d S )Nr   r™   rj   r  r  r   r   r    r¤   Y  s    

z(TestNanFunctions_CumSumProd.test_allnansc                 C   s†   t | jddgƒD ]p\}}t d¡}|t d¡ }||dd�}t||ƒ |}||dd�}t||ƒ t d¡}||d d�}t||ƒ qd S )Nr   rj   rç   r{   )rp   rb   r3   r   Úonesr   r  r   r   r    rê   i  s    



z&TestNanFunctions_CumSumProd.test_emptyc           	      C   sÔ   t | j| jƒD ]H\}}t d¡}dD ]0}|||d d�}|||d d�}t|j|jkƒ q$q| jD ]p}t d¡}tj 	d¡}tj
||j|jŽ dk < ||d d�}t|jdƒ t d	¡D ]}|||d�}t|jdƒ q°q^d S )
Nrh   ri   r|   ©rh   rÉ   é   é   r   rÿ   r{   )iƒ  rÒ   )rp   rb   rq   r3   ro   r   rr   r  ÚrandomZRandomStater¹   Úrandr¸   r   rÍ   )	r5   re   Úgrt   rl   rw   rx   r�   Úrsr   r   r    ry   v  s    


z)TestNanFunctions_CumSumProd.test_keepdimsc                 C   sZ   dD ]P}t jt|d�}t jt|d�}t||ƒ t jt|d�}t jt|d�}t||ƒ qd S )N)éþÿÿÿéÿÿÿÿr   rj   Nr{   )	r3   rL   Ú
_ndat_onesrK   r`   r   rJ   Ú_ndat_zerosrI   )r5   rl   rw   rx   r   r   r    r’   ‰  s    
z.TestNanFunctions_CumSumProd.test_result_valuesc                 C   sh   t  d¡}t| j| jƒD ]J\}}t  d¡}dD ]2}|||d�}||||d�}t||ƒ t||ƒ q.qd S )Nrh   )r  r  r   rj   r{   r|   )r3   ro   rp   rb   rq   r   )r5   rt   ru   rv   r�   rl   rw   rx   r   r   r    r‚   ’  s    


z$TestNanFunctions_CumSumProd.test_outN)r   r=   r>   r3   rI   rK   rb   rJ   rL   rq   rZ   r[   r\   rÝ   r”   r¹   rÞ   r¤   rê   ry   r’   r‚   r   r   r   r    r  T  s   
þý
	r  c                	   @   sÊ   e Zd ZejejejgZejej	ej
gZdd„ Zdd„ Zdd„ Zdd„ Zej d	g d
¢¡ej dejd ¡ejjde ej¡e dej¡gddgd�dd„ ƒƒƒZdd„ Zej dejd ¡dd„ ƒZdS )ÚTestNanFunctions_MeanVarStdc              	   C   s8   | j D ],}tjtjtjfD ]}tt|td|d� qqd S )Nrj   )rl   r…   )rb   r3   rØ   Úint_Úobject_r   Ú	TypeErrorr`   )r5   re   r…   r   r   r    Útest_dtype_error¢  s    
z,TestNanFunctions_MeanVarStd.test_dtype_errorc              	   C   sL   | j D ]@}tjtjtjfD ]*}tjtjd |d�}tt	|td|d� qqd S )Nr   r„   rj   r|   )
rb   r3   rØ   r  r   r*   r`   r¸   r   r!  )r5   re   r…   r}   r   r   r    Útest_out_dtype_error§  s    
z0TestNanFunctions_MeanVarStd.test_out_dtype_errorc                    sf   t jt jg}t jt jg}t||ƒD ]>\}‰dD ]0‰ ‡ ‡fdd„tD ƒ}|tdˆ d�}t||ƒ q.q"d S )N©r   rj   c                    s   g | ]}ˆ|ˆ d �‘qS )r   r   rŒ   ©r  rv   r   r    r!   ²  r"   z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>rj   ©rl   r  )	r3   rU   rW   rV   rX   rp   r�   r`   r   )r5   rb   rq   ru   rw   rx   r   r%  r    Ú	test_ddof­  s    z%TestNanFunctions_MeanVarStd.test_ddofc           	   
      sæ   t jt jg}t jt jg}dd„ tD ƒ}t||ƒD ]°\}}tdƒD ]ž‰ tƒ �„}| 	t
¡ | t j¡ ‡ fdd„|D ƒ}|tdˆ d�}tt  |¡|ƒ t|ƒr®tt|jƒdkƒ ntt|jƒdkƒ W d   ƒ q@1 sÔ0    Y  q@q0d S )Nc                 S   s   g | ]}t |ƒ‘qS r   )r½   rŒ   r   r   r    r!   ¹  r"   zATestNanFunctions_MeanVarStd.test_ddof_too_big.<locals>.<listcomp>rÉ   c                    s   g | ]}ˆ |k‘qS r   r   rŒ   r   r   r    r!   ¿  r"   rj   r&  r   )r3   rU   rW   rV   rX   r�   rp   Úranger	   r±   r    rà   r  r`   r   r¡   r§   r   r½   Úlog)	r5   rb   rq   Zdsizeru   rv   rã   rw   rx   r   r   r    Útest_ddof_too_big¶  s    
z-TestNanFunctions_MeanVarStd.test_ddof_too_bigrl   ri   r…   r“   r”   r•   r–   r—   r0   c              	   C   s¸   |d ur|j dkrt d¡ | |¡}d}| jD ]‚}tjt|d�� |||d�}W d   ƒ n1 sd0    Y  t |¡ 	¡ s€J ‚|tj
u rœ|j|jks²J ‚q0|jt |¡jks0J ‚q0d S )Nr   r™   z:(Degrees of freedom <= 0 for slice.)|(Mean of empty slice)r›   r{   )rr   rZ   r�   rž   rb   rŸ   r    r3   r¡   r¢   rM   r…   Úabsr£   r   r   r    r¤   Ç  s    


*
z(TestNanFunctions_MeanVarStd.test_allnansc              
   C   s   t  d¡}| jD ]ê}dD ]x}tjdd��X}t d¡ tt  |||d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d jtƒƒ W d   ƒ q1 s†0    Y  qd	D ]b}tjdd��B}t d¡ t|||d�t  g ¡ƒ tt	|ƒdkƒ W d   ƒ q–1 sî0    Y  q–qd S ©
Nrç   rè   Tr°   r²   r{   rj   r   ré   )r3   r   rb   rº   r»   r¼   r   r¡   r¢   r½   r¾   r¿   r    r   )r5   rt   re   rl   rÁ   r   r   r    rê   ß  s    


4
z&TestNanFunctions_MeanVarStd.test_emptyc           	      C   s¸   t  d¡ dd¡ |¡}t j|dd d …f< t j|t jd�}d|d d …df< t| j| j	ƒD ]Z\}}||| dd … ƒ}|t j
u r‚|n|jj}|||d�}|j|ks¤J ‚t j ||¡ qXd S )NrÈ   rh   r   r„   Fr³   )rÕ   )r3   rÍ   rÖ   rž   r¹   r×   rØ   rp   rb   rq   rM   Úrealr…   r4   Zassert_allclose)	r5   r…   rÎ   rÕ   re   Zf_stdrÙ   Zdtype_referencerì   r   r   r    rÚ   î  s    z&TestNanFunctions_MeanVarStd.test_whereN)r   r=   r>   r3   rM   rU   rW   rb   rN   rV   rX   rq   r"  r#  r'  r*  rZ   r[   r\   rÝ   r”   r¹   rÞ   r¤   rê   rÚ   r   r   r   r    r  �  s$   	
þýr  )ÚYÚMÚWÚDÚhÚmÚsÚmsÚusÚnsZpsÚfsÚasc                 C   s   g | ]}d |› d�‘qS )zm8[ú]r   )r   Úunitr   r   r    r!     r"   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¢¡ej	 
de¡dd„ ƒƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestNanFunctions_Medianc                 C   s    t  ¡ }t |¡ t|t ƒ d S r2   )r`   ra   r3   rO   r   ©r5   rd   r   r   r    rf   	  s    
z%TestNanFunctions_Median.test_mutationc                 C   sn  t  d¡}dD ]8}t j||d dd�}t j||d dd�}t|j|jkƒ qt  d¡}t j d¡t  |j	¡d d …d f  }| 
t j¡}t j|t|ƒ< tƒ �Â}| t¡ t j|d dd�}t|j	d	ƒ t j|d
dd�}t|j	dƒ t j|ddd�}t|j	dƒ t j|ddd�}t|j	dƒ t j|ddd�}t|j	d	ƒ t j|ddd�}t|j	dƒ W d   ƒ n1 �s`0    Y  d S )Nrh   ri   F©rl   r}   Úoverwrite_inputr  ©rÒ   éÈ   Trk   ©rj   rj   rj   rj   r$  ©rj   rj   r  r  rç   ©rj   rÉ   r  rj   ré   ©rh   rj   r  r  ©r   rj   r³   rh   ©r   rj   rh   ©rj   rj   r  rj   )r3   ro   rP   rO   r   rr   r  r  r”   r¸   rž   rî   r¹   Útupler	   rà   r    r   ©r5   rt   rl   rw   rx   r�   rÁ   rã   r   r   r    ry     s.    

$
z%TestNanFunctions_Median.test_keepdimsc                 C   sÆ   t j dd¡}t j|ddgt jdd�}t  d¡}t j|dd�}t j|d|d�}t||ƒ t||ƒ t  d¡}t j|d d�}t j|d |d�}t||ƒ t||ƒ t j|d|d�}t||ƒ t||ƒ d S )	Nrh   r   r³   rj   r{   r|   r   r$  )	r3   r  r  Úinsertr¹   r   rP   rO   r   ©r5   rt   Únan_matr�   rw   rx   r   r   r    r‚   *  s    






z TestNanFunctions_Median.test_outc                 C   sž   dD ]”}t j d|¡}t jjd|j|jd d�}t j| ¡ |< d|d d …df< g }|D ],}t  t  |¡ |¡}| 	t j
|dd�¡ qVtt j|d	d
�|ƒ qd S )N)rÉ   é   é3   rA  iè  rÒ   r   rÉ   )Úsizer   T)r?  r  r{   )r3   r  ZrandnÚrandintrP  r¹   ZravelÚcompressr¡   r+   rP   r   rO   )r5   r4  r�   rÁ   rw   ÚxZnonanr   r   r    Útest_small_large<  s    z(TestNanFunctions_Median.test_small_largec                 C   s*   dd„ t D ƒ}tjtdd�}t||ƒ d S )Nc                 S   s   g | ]}t  |¡‘qS r   )r3   rP   rŒ   r   r   r    r!   M  r"   z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>rj   r{   )r�   r3   rO   r`   r   ©r5   rw   rx   r   r   r    r’   L  s    z*TestNanFunctions_Median.test_result_valuesrl   ri   r…   c                 C   s  t  dt j¡ |¡}tƒ �ä}| t¡ t j||d�}|j|jksDJ ‚t  	|¡ 
¡ sVJ ‚|d u rrtt|jƒdkƒ ntt|jƒdkƒ t  t j¡ |¡d }t  |¡}|j|jks´J ‚t  	|¡sÂJ ‚|d u rÞtt|jƒdkƒ ntt|jƒdkƒ W d   ƒ n1 �s0    Y  d S )Nr•   r{   rj   rh   r   r³   rÒ   )r3   rÞ   r¹   rž   r	   r±   r    rO   r…   r¡   r¢   r   r½   r)  r”   )r5   r…   rl   rt   rã   ÚoutputZscalarZoutput_scalarr   r   r    r¤   Q  s     

z$TestNanFunctions_Median.test_allnansc              	   C   sø   t  d¡}dD ]z}tjdd��Z}t d¡ tt  t j||d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d jtƒƒ W d   ƒ q1 s~0    Y  qd	D ]d}tjdd��D}t d¡ tt j||d�t  g ¡ƒ tt	|ƒdkƒ W d   ƒ qŽ1 sè0    Y  qŽd S r,  )r3   r   rº   r»   r¼   r   r¡   rO   r¢   r½   r¾   r¿   r    r   ©r5   rt   rl   rÁ   r   r   r    rê   l  s    

4
z"TestNanFunctions_Median.test_emptyc                 C   s   t t d¡dkƒ d S r©   )r   r3   rO   r;   r   r   r    r¬   z  s    z#TestNanFunctions_Median.test_scalarc                 C   sp   t  d¡}tt jt j|dd� tt jt j|dd� tt jt j|dd� tt jt j|dd� ttt j|dd� d S )Nr  éûÿÿÿr{   ©r   rX  rÒ   ©r   rÒ   ©rj   rj   )r3   r  r   Ú	AxisErrorrO   ræ   ©r5   r�   r   r   r    Útest_extended_axis_invalid}  s    
z2TestNanFunctions_Median.test_extended_axis_invalidc              	   C   sú  t ƒ ��Ü}| t¡ tjtj fD �]°}t |tjgtjtjgg¡}ttj|dd�|tjgƒ ttj|dd�|tjgƒ tt |¡|ƒ t tjtj|gtjtj|gg¡}tt |¡|ƒ ttj|dd�tjtj|gƒ ttj|dd�|ƒ t ||g||gg¡}ttj|dd�|ƒ tj|d| dgdtjtjdgdtjtj|ggtj	d	�}|dk�rˆttj|dd�d
d| dgƒ tt |¡dƒ n.ttj|dd�dd| dgƒ tt |¡dƒ ttj|dd�dd|gƒ t
ddƒD ]ø}t
ddƒD ]æ}t tjg| |g|  gd ¡}tt |¡|ƒ ttj|dd�|ƒ ttj|dd�tjg| |g|  ƒ t tjg| | g|  gd ¡}tt |¡| ƒ ttj|dd�| ƒ ttj|dd�tjg| | g|  ƒ �qè�qÚq"W d   ƒ n1 �sì0    Y  d S )Nr   r{   rj   r  i÷ÿÿÿiöÿÿÿrÉ   rÒ   r„   rÃ   g      @ç      @g      @g      $Àg      "Àg      Àr  g      ð¿é
   r³   )r	   rà   r    r3   Úinfr”   r¹   r   rO   Úfloat32r(  )r5   rã   ra  Úar÷   Újr   r   r    Útest_float_special…  sR    

ÿþý
"ÿ$ÿz*TestNanFunctions_Median.test_float_specialN)r   r=   r>   rf   ry   r‚   rT  r’   rZ   r[   r\   Ú_TYPE_CODESr¤   rê   r¬   r^  re  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	g d
¢¡ej 	de
jd ¡ejj	de
 e
j¡e
 de
j¡gddgd�dd„ ƒƒƒZdd„ Zdd„ Zdd„ Zdd„ ZdS )ÚTestNanFunctions_Percentilec                 C   s"   t  ¡ }t |d¡ t|t ƒ d S )Né   )r`   ra   r3   rQ   r   r=  r   r   r    rf   ¶  s    z)TestNanFunctions_Percentile.test_mutationc                 C   s~  t  d¡}dD ]<}t j|d|d dd�}t j|d|d dd�}t|j|jkƒ qt  d¡}t j d¡t  |j	¡d d …d f  }| 
t j¡}t j|t|ƒ< tƒ �Î}| t¡ t j|dd d	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ t j|ddd	d
�}t|j	dƒ W d   ƒ n1 �sp0    Y  d S )Nrh   ri   éF   Fr>  r  r@  éZ   Trk   rB  r$  rC  rç   rD  ré   rE  rF  rG  rH  )r3   ro   rR   rQ   r   rr   r  r  r”   r¸   rž   rî   r¹   rI  r	   rà   r    r   rJ  r   r   r    ry   ¼  s6    
ÿÿ
$
z)TestNanFunctions_Percentile.test_keepdimsc                 C   sÐ   t j dd¡}t j|ddgt jdd�}t  d¡}t j|ddd�}t j|dd|d�}t||ƒ t||ƒ t  d¡}t j|dd d�}t j|dd |d�}t||ƒ t||ƒ t j|dd	|d�}t||ƒ t||ƒ d S )
Nrh   r   r³   rj   r{   é*   r|   r   r$  )	r3   r  r  rK  r¹   r   rR   rQ   r   rL  r   r   r    r‚   Ù  s    






z$TestNanFunctions_Percentile.test_outc                 C   sZ   dd„ t D ƒ}tjtddd�}t||ƒ t dd„ t D ƒ¡}tjtddd�}t||ƒ d S )Nc                 S   s   g | ]}t  |d ¡‘qS )r  ©r3   rR   rŒ   r   r   r    r!   ì  r"   zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>r  rj   r{   c                 S   s   g | ]}t  |d ¡‘qS )©r  éb   rl  rŒ   r   r   r    r!   ð  r"   rm  )r�   r3   rQ   r`   r   Z	transposerU  r   r   r    r’   ë  s    
z.TestNanFunctions_Percentile.test_result_valuesrl   ri   r…   r“   r”   r•   r–   r—   r0   c                 C   sŠ   |d ur|j dkrt d¡ | |¡}tjtdd��  tj|d|d�}W d   ƒ n1 sZ0    Y  t |¡ 	¡ svJ ‚|j
|j
ks†J ‚d S )Nr   r™   rš   r›   é<   r{   )rr   rZ   r�   rž   rŸ   r    r3   rQ   r¡   r¢   r…   ©r5   rl   r…   r”   r}   r   r   r    r¤   ô  s    

.z(TestNanFunctions_Percentile.test_allnansc              
   C   sü   t  d¡}dD ]|}tjdd��\}t d¡ tt  t j|d|d�¡ ¡ ƒ tt	|ƒdkƒ tt
|d	 jtƒƒ W d   ƒ q1 s€0    Y  qd
D ]f}tjdd��F}t d¡ tt j|d|d�t  g ¡ƒ tt	|ƒd	kƒ W d   ƒ q�1 sì0    Y  q�d S )Nrç   rè   Tr°   r²   é(   r{   rj   r   ré   )r3   r   rº   r»   r¼   r   r¡   rQ   r¢   r½   r¾   r¿   r    r   rW  r   r   r    rê     s    

4
z&TestNanFunctions_Percentile.test_emptyc                 C   sH   t t dd¡dƒ t d¡}tj|ddd�}t |dƒ tt |¡ƒ d S )Nr   rÊ   é   é2   r   r{   g      @)r   r3   rQ   rÍ   r   Zisscalar)r5   rc  Úrr   r   r    r¬     s
    

z'TestNanFunctions_Percentile.test_scalarc                 C   sz   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� d S )	Nr  rÉ   rX  ©rý   rl   rY  rÒ   rZ  r[  )r3   r  r   r\  rQ   ræ   r]  r   r   r    r^    s    
z6TestNanFunctions_Percentile.test_extended_axis_invalidc              
   C   s0  ddg}t  d¡}t j| }t  d¡}d|d d …ddd…d d …f< |d d …d d …dd …f  d9  < d	D ] }d
D ]–}tƒ �|}| td¡ t j||||d�}t j||||d�}	t|	j	|j	ƒ t j||||d�}t j||||d�}	t|	|ƒ W d   ƒ qp1 sü0    Y  qpqht  d¡}
tt j|
|dd�j	dƒ d S )Nrs  rÊ   )rÒ   rh   )rh   rÒ   rÉ   r   r³   rÒ   rh   ri   )FTrš   rk   )rh   rÒ   rÉ   rr  )rj   r³   r{   )r³   rh   rr  )
r3   r  r¹   r	   rà   r    rR   rQ   r   r¸   )r5   Úpercrt   rM  Z	large_matrl   Zkeepdimrã   rå   Znan_valZmegamatr   r   r    Útest_multiple_percentiles!  s0    


"
ÿ
ÿ
ÿ,
z5TestNanFunctions_Percentile.test_multiple_percentilesN)r   r=   r>   rf   ry   r‚   r’   rZ   r[   r\   r3   rÝ   r”   r¹   rÞ   r¤   rê   r¬   r^  rw  r   r   r   r    rg  ´  s"   	
þý
rg  c                	   @   s~   e Zd Zdd„ Zdd„ Zdd„ Zej dg d¢¡ej d	e	j
d
 ¡ejjde	 e	j¡e	 de	j¡gddgd�dd„ ƒƒƒZdS )ÚTestNanFunctions_Quantilec                 C   sÞ   t  d¡ ddd¡ t¡}t j|d d< tt j|dd�t j|d	d�ƒ tt j|ddd
�t j|d	dd
�ƒ tt j|ddd
�t j|d	dd
�ƒ tt j|dgdd
�t j|d	gdd
�ƒ tt j|g d¢dd
�t j|g d¢dd
�ƒ d S )Né   r³   rh   rÒ   r   rj   rÿ   rü   rs  ru  )ç      Ð?rÿ   ç      è?)é   rs  éK   )	r3   rÍ   rÖ   rž   Úfloatr¹   r   rS   rQ   )r5   rÎ   r   r   r    Útest_regression?  s    ÿÿÿÿz)TestNanFunctions_Quantile.test_regressionc                 C   sH   t  d¡d }tt  |d¡dƒ tt  |d¡dƒ tt  |d¡dƒ d S )NrÓ   rÿ   r   r   rj   g      @g      ü?)r3   rÍ   r   rS   )r5   rS  r   r   r    Ú
test_basicM  s    z$TestNanFunctions_Quantile.test_basicc                 C   sj   t  g d¢¡}| ¡ }t jt  d¡|dd� t||ƒ | ¡ }| ¡ }t jt  d¡|dd� t||ƒ d S )N)r   r{  rz  rÿ   r   g      Y@Zmidpoint)Úmethod)r3   r”   ra   rS   rÍ   r   Útolist)r5   Zp0Úpr   r   r    Útest_no_p_overwriteS  s    
z-TestNanFunctions_Quantile.test_no_p_overwriterl   ri   r…   r“   r”   r•   r–   r—   r0   c                 C   sŠ   |d ur|j dkrt d¡ | |¡}tjtdd��  tj|d|d�}W d   ƒ n1 sZ0    Y  t |¡ 	¡ svJ ‚|j
|j
ks†J ‚d S )Nr   r™   rš   r›   rj   r{   )rr   rZ   r�   rž   rŸ   r    r3   rS   r¡   r¢   r…   rp  r   r   r    r¤   _  s    

.z&TestNanFunctions_Quantile.test_allnansN)r   r=   r>   r  r€  r„  rZ   r[   r\   r3   rÝ   r”   r¹   rÞ   r¤   r   r   r   r    rx  <  s   
þýrx  zarr, expectedr_  )FTFT)rj   rÉ   r  rÈ   r„   Tc                 C   sP   d t j| jt jd�fD ]4}t| |d�}t||ƒ t|ƒt jur|du sJ ‚qd S )Nr„   rí   T)r3   r*   r¸   rØ   r   r   r‡   rµ   )rÆ   Úexpectedr}   Úactualr   r   r    Útest__nan_masko  s
    
r‡  c                  C   s  t jt jt jfD ]<} t jddg| d�}t|dƒ\}}|du s@J ‚||u sJ ‚qt jt jfD ]´} t jddg| d�}t|dƒ\}}|dk ¡ sŽJ ‚||usšJ ‚t	||ƒ t jddt j
g| d�}t|dƒ\}}t	|t  g d¢¡ƒ ||usèJ ‚t	|t  g d¢¡ƒ t  |d	 ¡sZJ ‚qZdS )
z] Test that _replace_nan returns the original array if there are no
    NaNs, not a copy.
    r   rj   r„   Nr³   F)FFT)r   rj   r³   r  )r3   rØ   Úint32Úint64r”   r   rb  Úfloat64r¢   r   r¹   r¡   )r…   rÆ   ÚresultÚmaskZarr_nanZ
result_nanZmask_nanr   r   r    Útest__replace_nanŠ  s"    
r�  )0rº   rZ   r%   Únumpyr3   Znumpy.lib.nanfunctionsr   r   Znumpy.testingr   r   r   r   r   r	   r”   r¹   r`   r�   r  r  r   r^   rß   Z_TEST_ARRAYSr(   Z_vZsetflagsr[   r\   rÝ   Úkeysrö   r  r
  r  r  Z_TIME_UNITSrÅ   rf  r<  rg  rx  ra  r‰  Z	complex64r‡  r�  r   r   r   r    Ú<module>   s”    ýý
ý
ý/ 1_þþ?i;Ia . 	3ÿÿÿ
ÿÿ
ÿþõ
