
    Ng                        d dl Z d dlZd dlZd dlZd dlmZ d dlmZm	Z	 d dl
mZmZmZmZmZmZ  ej        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j        g d           ej        g d           ej        ddg           ej        g d          gZ ej        g dg dg dg dg          Z ej        g dg dg dg dg          Z G d d          Z G d  d!          Z G d" d#          Z ej        d$           ej        g d%          d&Ze                                D ]Ze                    d'(           ej                            d)ej         d*         ej         d+         z   d,z             ej                            d-e                                e!                                .           G d/ d0                                  Z" G d1 d2          Z# G d3 d4e#          Z$ G d5 d6e#          Z% G d7 d8e#          Z&d9Z' e(ej         d+                   Z)e)d: e'D             z  Z) G d; d<          Z* G d= d>          Z+ G d? d@          Z,ej                            dA ej        ej        dBej        ej-        g           ej        g dC          f ej        g dDej.        E          dFf ej        g dC          dFf ej        ej        dBgej        ej-        ggej/        E           ej        d'dFgd'dFgg          fg          dG             Z0dH Z1dS )I    N)normalize_axis_tuple)	_nan_mask_replace_nan)assert_assert_equalassert_almost_equalassert_raisesassert_array_equalsuppress_warningss?&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                      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 e D             Z!e"d	d            Z#e$j%        &                    de '                                e!          d             Z(d Z)dS )
TestSignatureMatchc                     g | ]	}|j         
S  __name__).0ks     ]/var/www/html/ai-engine/env/lib/python3.11/site-packages/numpy/lib/tests/test_nanfunctions.py
<listcomp>zTestSignatureMatch.<listcomp>9   s    
(
(
(!1:
(
(
(    ...c                 <   g }t          j        |           }|j                                        D ]Y}|j        t           j        j        u r|                    |           0|                    |                    |                     Zt          j	        |          S )z?Construct a signature and replace all default parameter-values.)default)
inspect	signature
parametersvaluesr)   	Parameteremptyappendreplace	Signature)funcr)   prm_listr+   prms        r$   get_signaturez TestSignatureMatch.get_signature;   s     %d++	'..00 	> 	>C{g/555$$$$G < <==== ***r&   znan_func,funcidsc                     |                      |          }|                      |          }t          j                            ||           d S N)r6   nptestingr   )selfnan_funcr3   r+   nan_signatures        r$   test_signature_matchz'TestSignatureMatch.test_signature_matchG   sH    
 &&t,,	**844

	=99999r&   c                     t           j                            t          | j                  t          t           j        j        j                             dS )z4Validate that all nan functions are actually tested.N)r;   r<   r   setIDSlibnanfunctions__all__r=   s    r$   test_exhaustivenessz&TestSignatureMatch.test_exhaustivenessP   sC    

MM3rv2:;;	
 	
 	
 	
 	
r&   N)r'   )*r!   
__module____qualname__r;   nanminaminnanmaxamax	nanargminargmin	nanargmaxargmaxnansumsumnanprodprod	nancumsumcumsum
nancumprodcumprodnanmeanmean	nanmedianmediannanpercentile
percentilenanquantilequantilenanvarvarnanstdstdNANFUNCSrC   staticmethodr6   pytestmarkparametrizeitemsr@   rH   r   r&   r$   r   r   (   s       
	27
	27
bi
bi
	26

BG
bi
rz

BG
bi
"-

	26
	26H  )
(x
(
(
(C	+ 	+ 	+ \	+ [_hnn.>.>CHH: : IH:
 
 
 
 
r&   r   c            
       x   e Zd Zej        ej        gZej        ej        gZ	d Z
d Zd Zd Zd Zej                            dg d          ej                            dej        d	                   ej                            d
 ej        ej                   ej        dej                  gddg          d                                     Zd Zd Zd Zd Zej                            dej        d	                   d             Zej                            dej        d	                   d             ZdS )TestNanFunctions_MinMaxc                     t                                           }| j        D ]"} ||           t          |t                      #d S r:   _ndatcopynanfuncsr   r=   ndatfs      r$   test_mutationz%TestNanFunctions_MinMax.test_mutation\   J    zz|| 	& 	&AAdGGGu%%%%	& 	&r&   c                     t          j        d          }t          | j        | j                  D ]C\  }}dD ];} |||d          } |||d          }t          |j        |j        k               <Dd S N   Nr      Taxiskeepdimsr;   eyeziprs   stdfuncsr   ndimr=   matnfrfr   tgtress          r$   test_keepdimsz%TestNanFunctions_MinMax.test_keepdimsc       fQii$-77 	. 	.FB$ . .b4$777b4$777CH,----.	. 	.r&   c                    t          j        d          }t          | j        | j                  D ]T\  }}t          j        d          } ||d          } ||d|          }t          ||           t          ||           Ud S Nr{   r}   r   r   outr;   r   r   rs   r   zerosr   r=   r   r   r   resoutr   r   s          r$   test_outz TestNanFunctions_MinMax.test_outk       fQii$-77 	* 	*FBXa[[F"Sq///C"Sqf---CV,,,S))))	* 	*r&   c                 |   d}t          | j        | j                  D ]\  }}|D ]}t          j        d|          } ||d          j        j        } ||d          j        j        }t          ||u             ||d           j        j        } ||d           j        j        }t          ||u            d S )NefdgFDGr{   dtyper}   r   r   rs   r   r;   r   r   typer   r=   codesr   r   cr   r   r   s           r$   test_dtype_from_inputz-TestNanFunctions_MinMax.test_dtype_from_inputt   s    $-77 		$ 		$FB $ $fQa(((b1ooo+0b1ooo+0s
###b4(((.3b4(((.3s
####$		$ 		$r&   c                     t          | j        | j                  D ]:\  }fdt          D             } |t          d          }t          ||           ;d S )Nc                 &    g | ]} |          S r   r   r"   dr   s     r$   r%   z>TestNanFunctions_MinMax.test_result_values.<locals>.<listcomp>   !    (((Q22a55(((r&   r}   r   r   rs   r   _rdatrq   r   r=   r   r   r   r   s       @r$   test_result_valuesz*TestNanFunctions_MinMax.test_result_values   n    $-77 	* 	*FB((((%(((C"U###CS))))	* 	*r&   r   r|   r   AllFloatarrayr{   r{   0d2dr7   c                 ~   ||j         dk    rt          j        d           |                    |          }d}| j        D ]|}t          j        t          |          5   |||          }d d d            n# 1 swxY w Y   t          j        |          	                                sJ |j
        |j
        k    sJ }d S Nr   *`axis != None` not supported for 0d arraysAll-NaN slice encounteredmatchr   )r   ri   skipastypers   warnsRuntimeWarningr;   isnanallr   r=   r   r   r   r   r3   r   s          r$   test_allnansz$TestNanFunctions_MinMax.test_allnans   s    
aKEFFFU##+M 	, 	,DnE::: - -d5t,,,- - - - - - - - - - - - - - -8C==$$&&&&&9+++++		, 	,   A77A;	>A;	c                    t           j                            t                    }|j                                        }t           j        fD ]z} ||d          } |t          d          }t          ||           t          |j        |           t          t          j	        |          
                                            {d S )Nr}   r   )r;   mafix_invalidrq   _maskrr   rK   r   r   isinfany)r=   r   mskrv   r   r   s         r$   test_maskedz#TestNanFunctions_MinMax.test_masked   s    e&&inn) 	- 	-A!Ca...C!E"""Cc"""C((())+++,,,,	- 	-r&   c                 R    | j         D ]}t           |d          dk               d S Nr   rs   r   r=   rv   s     r$   test_scalarz#TestNanFunctions_MinMax.test_scalar   :     	! 	!AAAbEERK    	! 	!r&   c           	          G d dt           j                  }t          j        d                              |          }| j        D ]} ||d          }t          t          ||                     t          |j        dk                ||d          }t          t          ||                     t          |j        dk                ||          }t          |j        dk               t           j        |d<   | j        D ]y}t          j
        d	
          5 }t          j        d            ||d          }t          t          ||                     t          t          j        t          j        |                                t          t          |          dk               d d d            n# 1 swxY w Y   t          j
        d	
          5 }t          j        d            ||d          }t          t          ||                     t          t          j        |d                   o5t          j        |d                    ot          j        |d                               t          t          |          dk    d           t          t          |d         j        t"                               d d d            n# 1 swxY w Y   t          j
        d	
          5 }t          j        d            ||          }t          |j        dk               t          |t           j        k               t          t          |          dk               d d d            n# 1 swxY w Y   {d S )Nc                       e Zd ZdS )8TestNanFunctions_MinMax.test_subclass.<locals>.MyNDArrayNr!   rI   rJ   r   r&   r$   	MyNDArrayr              Dr&   r   r{   r   r   r{   r}   r   Trecordalways   no warning raised)r;   ndarrayr   viewrs   r   
isinstanceshapenanwarningscatch_warningssimplefilterr   r   len
issubclasscategoryr   )r=   r   minerv   r   ws         r$   test_subclassz%TestNanFunctions_MinMax.test_subclass   s   	 	 	 	 	
 	 	 	
 vayy~~i(( 	% 	%A!Dq///CJsI..///CI%&&&!Dq///CJsI..///CI%&&&!D''CCIO$$$$ &Q 	% 	%A(555 %%h///a1ooo
3	22333BF28C==111222A!$$$% % % % % % % % % % % % % % % (555 C%h///a1ooo
3	22333Q(( 1#a&1A1A-A 1 "Q 0 002 2 2A!%8999
1Q4=.AABBBC C C C C C C C C C C C C C C (555 %%h///agg	R(((rv&&&A!$$$% % % % % % % % % % % % % % %#	% 	%s9   BF>>G	G	C*KK	K	4A5M55M9	<M9	c           	         t          j        ddgt           j        dgt           j        t           j        ggt                    }t	          t          j        |          d           t	          t          j        |d          ddg           t          j        d          5 }t          j        d	           t	          t          t          j        |d
                    ddt           j        g           t          t          |          d
k    d           t          t          |d         j        t                               d d d            d S # 1 swxY w Y   d S )Nr   g       @      @r   r   r   Tr   r   r}   r   )r;   r   r   objectr   rK   r   r   r   listr   r   r   r   r   )r=   arrr   s      r$   test_object_arrayz)TestNanFunctions_MinMax.test_object_array   sZ   hc
RVSMBFBF3CDFSSSRYs^^S)))RYs+++c3Z888$D111 	?Q!(+++bi!44455S"&7IJJJCFFaK!4555Jqt}n==>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s    B!EEEc                     G d dt           j                  }t          j        d                              |          }t           j        |d d<   | j        D ]k}|t           j        u rdnd} |||          }|j        |k    sJ ||k    sJ  ||                    |          |          }|j        |k    sJ ||k    sJ ld S )Nc                       e Zd ZdS )7TestNanFunctions_MinMax.test_initial.<locals>.MyNDArrayNr   r   r&   r$   r   r      r   r&   r   	      d   r   initial)	r;   r   aranger   r   rs   rM   r   r   )r=   r   r   arrv   r   ret1ret2s           r$   test_initialz$TestNanFunctions_MinMax.test_initial   s    	 	 	 	 	
 	 	 	 Yq\\  ''2A2 		# 		#A")^^ccG1R)))D:&&&&7????1RWWY''999D:&&&&7?????		# 		#r&   c                     G d dt           j                  }t          j        d                              dd                              |          }t           j        |dd d f<   t          j        |t           j                  }d|d d df<   | j        D ]m}|t           j	        u rdnd	} |||d
          }|j
        |k    sJ ||k    sJ  ||                    |          |d
          }|j
        |k    sJ ||k    sJ nd S )Nc                       e Zd ZdS )5TestNanFunctions_MinMax.test_where.<locals>.MyNDArrayNr   r   r&   r$   r   r      r   r&   r   r   r{   r   r   F      r   wherer   )r;   r   r   reshaper   r   	ones_likebool_rs   rK   r   r   )	r=   r   r   r   r  rv   	referencer   r   s	            r$   
test_wherez"TestNanFunctions_MinMax.test_where   sF   	 	 	 	 	
 	 	 	 Yq\\!!!Q''..u5561aaa4Rrx000aaad 		% 		%A")^^I1Rua000D:&&&&9$$$$1RWWY''ua@@@D:&&&&9$$$$$		% 		%r&   N)r!   rI   rJ   r;   rK   rM   rs   minmaxr   rw   r   r   r   r   ri   rj   rk   	typecodesr   r   fullr   r   r   r   r   r   r  r   r&   r$   rn   rn   W   s       	29%HH& & &. . .* * *$ $ $* * * [V\\\22[Wbl:&>??[W' $<   
, 
,	  @? 32
,- - -! ! !)% )% )%V
? 
? 
? [Wbl:&>??# # @?#$ [Wbl:&>??% % @?% % %r&   rn   c            
       D   e Zd Zej        ej        gZd Zd Ze	j
                            dg d          e	j
                            dej        d                   e	j
                            d ej        ej                   ej        dej                  gd	d
g          d                                     Zd Zd Zd Ze	j
                            dej        d                   d             Ze	j
                            dej        d                   d             ZdS )TestNanFunctions_ArgminArgmaxc                     t                                           }| j        D ]"} ||           t          |t                      #d S r:   rp   rt   s      r$   rw   z+TestNanFunctions_ArgminArgmax.test_mutation  rx   r&   c                 :   t          | j        t          j        t          j        g          D ]\  }}t
          D ]}t                      5 }|                    t          d            ||          }||         }t          t          j
        |                      t           |||                                                      t          t          j        ||d |                                                               d d d            n# 1 swxY w Y   d S )Nzinvalid value encountered in)r   rs   r;   greaterlessrq   r   filterr   r   r   r   equal)r=   rv   fcmprowsupindvals          r$   r   z0TestNanFunctions_ArgminArgmax.test_result_values  s\   4=2:rw*?@@ 
	@ 
	@GAt 	@ 	@&(( @CJJ~/MNNN!C&&Cc(C -...S# 2 2 4 44555c$3$i 8 8 < < > >>???@ @ @ @ @ @ @ @ @ @ @ @ @ @ @	@
	@ 
	@s   B:DDDr   r|   r   r   r   r   r   r   r7   c                    ||j         dk    rt          j        d           |                    |          }| j        D ]B}t          j        t          d          5   |||           d d d            n# 1 swxY w Y   Cd S r   )r   ri   r   r   rs   raises
ValueError)r=   r   r   r   r3   s        r$   r   z*TestNanFunctions_ArgminArgmax.test_allnans  s     
aKEFFFU##M 	' 	'Dz1LMMM ' 'U&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' '	' 	's   A55A9	<A9	c                     t          j        d          }| j        D ]S}dD ]}t          t          |||           dD ]1} |||          }t          |t          j        d                     2Td S )Nr   r{   r   Nr   r}   r   )r;   r   rs   r	   r  r   )r=   r   rv   r   r   s        r$   
test_emptyz(TestNanFunctions_ArgminArgmax.test_empty.  s    hv 	/ 	/A! = =j!St<<<<< / /a$'''S"(1++..../	/ 	/r&   c                 R    | j         D ]}t           |d          dk               d S r   r   r   s     r$   r   z)TestNanFunctions_ArgminArgmax.test_scalar7  r   r&   c                     G d dt           j                  }t          j        d                              |          }| j        D ]} ||d          }t          t          ||                     t          |j        dk                ||d          }t          t          ||                     t          |j        dk                ||          }t          |j        dk               d S )	Nc                       e Zd ZdS )>TestNanFunctions_ArgminArgmax.test_subclass.<locals>.MyNDArrayNr   r   r&   r$   r   r$  <  r   r&   r   r{   r   r   r   r}   r   )r;   r   r   r   rs   r   r   r   )r=   r   r   rv   r   s        r$   r   z+TestNanFunctions_ArgminArgmax.test_subclass;  s   	 	 	 	 	
 	 	 	
 vayy~~i(( 	% 	%A!Dq///CJsI..///CI%&&&!Dq///CJsI..///CI%&&&!D''CCIO$$$$	% 	%r&   c                     t          j        d                              |          }t           j        |d d<   | j        D ];}|t           j        u rdnd} ||d          }|j        |j        k    sJ ||k    sJ <d S )Nr   r   r   T)r   )r;   r   r   r   rs   rO   r   r=   r   r   rv   r  rets         r$   r   z+TestNanFunctions_ArgminArgmax.test_keepdimsL  s    Yq\\  ''2A2 	$ 	$A",..AI!B&&&C8rw&&&&)#####		$ 	$r&   c                 $   t          j        d                              |          }t           j        |d d<   | j        D ]O}t          j        dt           j                  }|t           j        u rdnd} |||          }||u sJ ||k    sJ Pd S )Nr   r   r   r   r   r   )r;   r   r   r   rs   r   intprO   )r=   r   r   rv   r   r  r'  s          r$   r   z&TestNanFunctions_ArgminArgmax.test_outW  s    Yq\\  ''2A2 	$ 	$A(2RW---C",..AI!BC...C#::::)#####	$ 	$r&   N)r!   rI   rJ   r;   rO   rQ   rs   rw   r   ri   rj   rk   r
  r   r   r  r   r   r   r   r   r   r   r&   r$   r  r    s       bl+H& & &@ @ @ [V\\\22[Wbl:&>??[W' $<   ' '	  @? 32'/ / /! ! !% % %" [Wbl:&>??$ $ @?$ [Wbl:&>??	$ 	$ @?	$ 	$ 	$r&   r  r   )   '   ]   W   .   )r   1dF)writer   
AllIntegerr   Or   r7   c                      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 eD             Zej                             de!                                e           ej"        d          d                         Z#ej                             dej$        ej%        fej&        ej'        fgddg          d	             Z(ej                             dej        ej        fej        ej        fgd
dg          d             Z)dS )TestNanFunctions_NumberTypesc                     g | ]	}|j         
S r   r    )r"   is     r$   r%   z'TestNanFunctions_NumberTypes.<listcomp>  s    000!1:000r&   znanfunc,funcr7   ignore)overc                     |                     |          } ||          } ||          }t          ||           |dk    r"t          |          t          |          u sJ d S |j        |j        k    sJ d S )Nr3  r   r   r   r   r=   r   r   nanfuncr3   r   r   s          r$   test_nanfuncz)TestNanFunctions_NumberTypes.test_nanfunc  s     jjd3iigcllC%%%C<<99S		))))))9	))))))r&   ra   r_   c                 |   |                     |          }|j        j        dk    r2t          t          ||d           t          t          ||d           d S  ||d          } ||d          }t          ||           |dk    r"t          |          t          |          u sJ d S |j        |j        k    sJ d S )Nr   r}   qr3  )r   r   kindr	   	TypeErrorr   r   r<  s          r$   test_nanfunc_qz+TestNanFunctions_NumberTypes.test_nanfunc_q  s     jj9>S  )T3!4444)WcQ777777 $sa...C'####CS)))||CyyDII------yCI------r&   rc   re   c                     |                     |          } ||d          } ||d          }t          ||           |dk    r"t          |          t          |          u sJ d S |j        |j        k    sJ d S )N      ?ddofr3  r;  r<  s          r$   test_nanfunc_ddofz.TestNanFunctions_NumberTypes.test_nanfunc_ddof  s     jjd3S!!!gc$$$C%%%C<<99S		))))))9	))))))r&   N)*r!   rI   rJ   r;   rK   r  rM   r	  rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rY   rZ   r[   r\   r]   r^   rc   rd   re   rf   rs   nanfunc_idsri   rj   rk   rl   errstater>  ra   rb   r_   r`   rD  rI  r   r&   r$   r5  r5  m  s        		26
	26
bi
bi
	26

BG
bi
rz

BG
bi
	26
	26H 10x000K[^X^^-=-=;OOR[h	* 	*   PO	* [
."+	&)92=(IJO,   
. . 
." [
)RV	ry"&12x    
	* 	* 
	* 	* 	*r&   r5  c                   D    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	 Zd
S )SharedNanFunctionsTestsMixinc                     t                                           }| j        D ]"} ||           t          |t                      #d S r:   rp   rt   s      r$   rw   z*SharedNanFunctionsTestsMixin.test_mutation  rx   r&   c                     t          j        d          }t          | j        | j                  D ]C\  }}dD ];} |||d          } |||d          }t          |j        |j        k               <Dd S rz   r   r   s          r$   r   z*SharedNanFunctionsTestsMixin.test_keepdims  r   r&   c                    t          j        d          }t          | j        | j                  D ]T\  }}t          j        d          } ||d          } ||d|          }t          ||           t          ||           Ud S r   r   r   s          r$   r   z%SharedNanFunctionsTestsMixin.test_out  r   r&   c           	         t          j        d          }d}t          | j        | j                  D ]:\  }}|D ]0}t                      5 }|t           j        t           j        hv r#|dv r|                    t           j	                    ||t          j
        |          d          j
        j        } ||t          j
        |          d          j
        j        }t          ||u             ||t          j
        |          d           j
        j        } ||t          j
        |          d           j
        j        }t          ||u            d d d            n# 1 swxY w Y   2<d S Nr{   r   FDGr}   )r   r   r;   r   r   rs   r   r   re   rc   r  ComplexWarningr   r   r   	r=   r   r   r   r   r   r  r   r   s	            r$   test_dtype_from_dtypez2SharedNanFunctionsTestsMixin.test_dtype_from_dtype  s   fQii$-77 	( 	(FB ( (&(( 
(Cbi333U



2#4555"S!<<<BGC"S!<<<BGCC3J'''"S$???EJC"S$???EJCC3J'''
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
((	( 	(s   
DEE"%E"c                 F   t          j        d          }d}t          | j        | j                  D ]\  }}|D ]}t                      5 }|t           j        t           j        hv r#|dv r|                    t           j	                    |||d          j
        j        } |||d          j
        j        }t          ||u             |||d           j
        j        } |||d           j
        j        }t          ||u            d d d            n# 1 swxY w Y   d S rR  rT  rV  s	            r$   test_dtype_from_charz1SharedNanFunctionsTestsMixin.test_dtype_from_char  sw   fQii$-77 	( 	(FB ( (&(( 
(Cbi333U



2#4555"S2228=C"S2228=CC3J'''"S555;@C"S555;@CC3J'''
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
((	( 	(s   C DDDc           	         d}t          | j        | j                  D ]\  }}|D ]}t          j        d|          } ||d          j        j        } ||d          j        j        }t          ||u d|d|            ||d           j        j        } ||d           j        j        }t          ||u            d S )Nr   r{   r   r}   r   zres z, tgt r   r   s           r$   r   z2SharedNanFunctionsTestsMixin.test_dtype_from_input  s    $-77 		$ 		$FB $ $fQa(((b1ooo+0b1ooo+0s

SS$ABBBb4(((.3b4(((.3s
####$		$ 		$r&   c                     t          | j        | j                  D ]:\  }fdt          D             } |t          d          }t          ||           ;d S )Nc                 &    g | ]} |          S r   r   r   s     r$   r%   zCSharedNanFunctionsTestsMixin.test_result_values.<locals>.<listcomp>  r   r&   r}   r   r   r   s       @r$   r   z/SharedNanFunctionsTestsMixin.test_result_values  r   r&   c                 R    | j         D ]}t           |d          dk               d S r   r   r   s     r$   r   z(SharedNanFunctionsTestsMixin.test_scalar  r   r&   c                     G d dt           j                  }t          j        d          }|                    |          }| j        D ]} ||d          j        } ||d          }t          t          ||                     t          |j        |k                ||d          j        } ||d          }t          t          ||                     t          |j        |k                ||          j        } ||          }t          t          ||                     t          |j        |k               d S )Nc                       e Zd ZdS )=SharedNanFunctionsTestsMixin.test_subclass.<locals>.MyNDArrayNr   r   r&   r$   r   r`  
  r   r&   r   r{   r   r   r}   )r;   r   r   r   rs   r   r   r   )r=   r   r   r   rv   expected_shaper   s          r$   r   z*SharedNanFunctionsTestsMixin.test_subclass	  s_   	 	 	 	 	
 	 	 	
 q		zz)$$ 	1 	1AQu1---3N!Dq///CJsI..///CI/000Qu1---3N!Dq///CJsI..///CI/000QuXX^N!D''CJsI..///CI/0000	1 	1r&   N)r!   rI   rJ   rw   r   r   rW  rY  r   r   r   r   r   r&   r$   rM  rM    s        & & &. . .* * *( ( ("( ( ("$ $ $* * *! ! !1 1 1 1 1r&   rM  c            
       H   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                            d ej        ej                   ej        dej                  gddg	          d
                                     Zd Ze
j                            dej        d                   d             Ze
j                            dej        d                   d             ZdS )TestNanFunctions_SumProdr   r|   r   r   r   r   r   r   r7   c                    ||j         dk    rt          j        d           |                    |          }t	          | j        ddg          D ]>\  }} |||          }t          j        ||k              sJ |j        |j        k    sJ ?d S )Nr   r   r}   r   	r   ri   r   r   r   rs   r;   r   r   r=   r   r   r   r3   identityr   s          r$   r   z%TestNanFunctions_SumProd.test_allnans%  s     
aKEFFFU##!$-!Q88 	, 	,ND($u4(((C6#/*****9+++++	, 	,r&   c                 L   t          t          j        t          j        gddg          D ]z\  }}t          j        d          }|gdz  } ||d          }t          ||           g } ||d          }t          ||           |} ||d           }t          ||           {d S )Nr   r}   r  r{   r   )r   r;   rS   rU   r   r   r=   rv   	tgt_valuer   r   r   s         r$   r   z#TestNanFunctions_SumProd.test_empty5  s    BJ 7!Q@@ 
	# 
	#LAy(6""C+a-C!Ca...Cc"""C!Ca...Cc"""C!Cd###Cc""""
	# 
	#r&   c                     t          j        d                              |          }t           j        |d d<   | j        D ]6}|t           j        u rdnd} ||d          }|j        |k    sJ ||k    sJ 7d S )Nr   r      i   r   r   )r;   r   r   r   rs   rS   r   r&  s         r$   r   z%TestNanFunctions_SumProd.test_initialB  s    Yq\\  ''2A2 	$ 	$A29nn$I!B"""C9%%%%)#####		$ 	$r&   c                 r   t          j        d                              dd                              |          }t           j        |dd d f<   t          j        |t           j                  }d|d d df<   | j        D ]7}|t           j        u rdnd} |||d	          }|j	        |k    sJ ||k    sJ 8d S )
Nr   r{   r   r   F   i  r   r  )
r;   r   r  r   r   r  r  rs   rS   r   )r=   r   r   r  rv   r  r'  s          r$   r  z#TestNanFunctions_SumProd.test_whereM  s    Yq\\!!!Q''..u5561aaa4Rrx000aaad 	$ 	$A29nn$I!BeQ///C9%%%%)#####		$ 	$r&   N)r!   rI   rJ   r;   rS   rU   rs   rT   rV   r   ri   rj   rk   r
  r   r   r  r   r   r   r  r   r&   r$   rc  rc     sX       	2:&H H[V\\\22[Wbl:&>??[W' $<   , ,	  @? 32,# # # [Wbl:&>??$ $ @?$ [Wbl:&>??
$ 
$ @?
$ 
$ 
$r&   rc  c            
          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                            d ej        ej                   ej        dej                  gddg	          d
                                     Zd Zd Zd Zd ZdS )TestNanFunctions_CumSumProdr   r|   r   r   r   r   r   r   r7   c                    ||j         dk    rt          j        d           |                    |          }t	          | j        ddg          D ]<\  }} ||          }t          j        ||k              sJ |j        |j        k    sJ =d S )Nr   r   r}   re  rf  s          r$   r   z(TestNanFunctions_CumSumProd.test_allnans`  s     
aKEFFFU##!$-!Q88 	, 	,ND($u++C6#/*****9+++++	, 	,r&   c                 p   t          | j        ddg          D ]\  }}t          j        d          }|t          j        d          z  } ||d          }t          ||           |} ||d          }t          ||           t          j        d          } ||d           }t          ||           d S )Nr   r}   r  r   )r   rs   r;   r   onesr   ri  s         r$   r   z&TestNanFunctions_CumSumProd.test_emptyp  s    1v66 
	# 
	#LAy(6""CBGFOO+C!Ca...Cc"""C!Ca...Cc"""(A--C!Cd###Cc""""
	# 
	#r&   c                 Z   t          | j        | j                  D ]W\  }}t          j        d          }dD ];} |||d           } |||d           }t          |j        |j        k               <X| j        D ]}t          j        d          }t          j        	                    d          }t          j
        | |j        |j         dk     <    ||d           }t          |j        d           t          j        d	          D ]$} |||          }t          |j        d           %d S )
Nr{   r|   r   r{   r         r   rF  r   )i  r   )r   rs   r   r;   r   r   r   rs  randomRandomStater   randr   r   r   )	r=   rv   gr   r   r   r   r   rss	            r$   r   z)TestNanFunctions_CumSumProd.test_keepdims}  sL   t}55 	. 	.DAq&))C$ . .a$D111a$D111CH,----.
  		7 		7A&&A&&q))B)+Agbgqw#%&!AD///CG,,,	! 7 7aoooSY66667		7 		7r&   c                 (   dD ]}t          j        t          |          }t          j        t          |          }t          ||           t          j        t          |          }t          j        t          |          }t          ||           d S )N)r   r}   Nr   )	r;   rZ   
_ndat_onesrY   rq   r   rX   _ndat_zerosrW   )r=   r   r   r   s       r$   r   z.TestNanFunctions_CumSumProd.test_result_values  s    ( 	* 	*D*Zd333C-D111CS))))KT222C,u4000CS))))	* 	*r&   c                    t          j        d          }t          | j        | j                  D ]Y\  }}t          j        d          }dD ]=} |||          } ||||          }t          ||           t          ||           >Zd S )Nr{   )r~  r  r   r}   r   r   )r;   r   r   rs   r   r   )r=   r   r   r   r   r   r   r   s           r$   r   z$TestNanFunctions_CumSumProd.test_out  s    fQii$-77 	. 	.FBVAYYF& . .b4(((b4V444#C000#C----	.	. 	.r&   N)r!   rI   rJ   r;   rW   rY   rs   rX   rZ   r   ri   rj   rk   r
  r   r   r  r   r   r   r   r   r   r&   r$   rp  rp  [  s       bm,H	2:&H[V\\\22[Wbl:&>??[W' $<   , ,	  @? 32,# # #7 7 7&* * *. . . . .r&   rp  c            
          e Zd Zej        ej        ej        gZej        ej	        ej
        gZd Zd Zd Zd Zej                            dg d          ej                            dej        d                   ej                            d	 ej        ej                   ej        d
ej                  gddg          d                                     Zd Zej                            dej        d                   d             ZdS )TestNanFunctions_MeanVarStdc           	          | j         D ]F}t          j        t          j        t          j        fD ] }t          t          |t          d|           !Gd S )Nr}   )r   r   )rs   r;   r  int_object_r	   rC  rq   )r=   rv   r   s      r$   test_dtype_errorz,TestNanFunctions_MeanVarStd.test_dtype_error  sa     	H 	HA(BGRZ8 H HiEGGGGGH	H 	Hr&   c           	          | j         D ]l}t          j        t          j        t          j        fD ]F}t          j        t          j        d         |          }t          t          |t          d|           Gmd S )Nr   r   r}   r   )
rs   r;   r  r  r  r/   rq   r   r	   rC  )r=   rv   r   r   s       r$   test_out_dtype_errorz0TestNanFunctions_MeanVarStd.test_out_dtype_error  s{     	D 	DA(BGRZ8 D Dhu{1~U;;;iEsCCCCCD	D 	Dr&   c                    t           j        t           j        g}t           j        t           j        g}t          ||          D ]A\  }dD ]9fdt          D             } |t          d          }t          ||           :Bd S )Nr   r}   c                 *    g | ]} |           S )rG  r   )r"   r   rH  r   s     r$   r%   z9TestNanFunctions_MeanVarStd.test_ddof.<locals>.<listcomp>  s(    777Arr!$'''777r&   r}   r   rH  )	r;   rc   re   rd   rf   r   r   rq   r   )r=   rs   r   r   r   r   rH  r   s         @@r$   	test_ddofz%TestNanFunctions_MeanVarStd.test_ddof  s    Iry)FBF#(H-- 	. 	.FB . .77777777bQT222#C----.	. 	.r&   c                   	 t           j        t           j        g}t           j        t           j        g}d t
          D             }t          ||          D ]\  }}t          d          D ]	t                      5 }|	                    t                     |                    t           j                   	fd|D             } |t          d	          }t          t          j        |          |           t!          |          r&t#          t%          |j                  dk               n%t#          t%          |j                  dk               d d d            n# 1 swxY w Y   d S )Nc                 ,    g | ]}t          |          S r   )r   r"   r   s     r$   r%   zATestNanFunctions_MeanVarStd.test_ddof_too_big.<locals>.<listcomp>  s    '''AQ'''r&   r   c                     g | ]}|k    	S r   r   )r"   r   rH  s     r$   r%   zATestNanFunctions_MeanVarStd.test_ddof_too_big.<locals>.<listcomp>  s    444419444r&   r}   r  r   )r;   rc   re   rd   rf   r   r   ranger   r   r   r  rU  rq   r   r   r   r   r   log)
r=   rs   r   dsizer   r   r  r   r   rH  s
            @r$   test_ddof_too_bigz-TestNanFunctions_MeanVarStd.test_ddof_too_big  s   Iry)FBF#'''''(H-- 	3 	3FBa 
3 
3&(( 	3CJJ~...JJr01114444e444C"U666C #4443xx 3CG 12222CG 1222	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3 	3
3	3 	3s   8CEE"Er   r|   r   r   r   r   r   r   r7   c                    ||j         dk    rt          j        d           |                    |          }d}| j        D ]}t          j        t          |          5   |||          }d d d            n# 1 swxY w Y   t          j        |          	                                sJ |t          j
        u r|j        |j        k    sJ |j        t          j        |          j        k    sJ d S )Nr   r   z:(Degrees of freedom <= 0 for slice.)|(Mean of empty slice)r   r   )r   ri   r   r   rs   r   r   r;   r   r   r[   r   absr   s          r$   r   z(TestNanFunctions_MeanVarStd.test_allnans  s<    
aKEFFFU##LM 
	8 
	8DnE::: - -d5t,,,- - - - - - - - - - - - - - -8C==$$&&&&& rz!!yEK/////yBF5MM$777777
	8 
	8r   c                    t          j        d          }| j        D ]g}dD ]}t          j        d          5 }t          j        d           t          t          j         |||                                                               t          t          |          dk               t          t          |d         j        t                               d d d            n# 1 swxY w Y   d	D ]}t          j        d          5 }t          j        d           t           |||          t          j        g                      t          t          |          dk               d d d            n# 1 swxY w Y   id S 
Nr  r  Tr   r   r   r}   r   r  )r;   r   rs   r   r   r   r   r   r   r   r   r   r   r   )r=   r   rv   r   r   s        r$   r   z&TestNanFunctions_MeanVarStd.test_empty  s   hv 	) 	)A! G G,D999 GQ)(333BHQQs%6%6%677;;==>>>CFFaK(((Jqt}nEEFFF	G G G G G G G G G G G G G G G
  ) ),D999 )Q)(333 3T!2!2!2BHRLLAAACFFaK((() ) ) ) ) ) ) ) ) ) ) ) ) ) ))	) 	)s%   B C$$C(+C(	A"E77E;>E;c                    t          j        d                              dd                              |          }t           j        |dd d f<   t          j        |t           j                  }d|d d df<   t          | j        | j	                  D ]t\  }} |||         dd                    }|t           j
        u r|n|j        j        } |||          }|j        |k    sJ t           j                            ||           ud S )Nr   r{   r   r   Fr   )r  )r;   r   r  r   r   r  r  r   rs   r   r[   realr   r<   assert_allclose)	r=   r   r   r  rv   f_stdr  dtype_referencer'  s	            r$   r  z&TestNanFunctions_MeanVarStd.test_where  s   Yq\\!!!Q''..u5561aaa4Rrx000aaadDM4=99 	7 	7HAubim,,I'(BJeeBGMO!Be$$$C9////J&&sI6666	7 	7r&   N)r!   rI   rJ   r;   r[   rc   re   rs   r\   rd   rf   r   r  r  r  r  ri   rj   rk   r
  r   r   r  r   r   r  r   r&   r$   r  r    sn       
BIry1H(HH H H
D D D. . .3 3 3" [V\\\22[Wbl:&>??[W' $<   8 8	  @? 328$) ) ) [Wbl:&>??7 7 @?7 7 7r&   r  )YMWDhmsmsusnspsfsasc                     g | ]}d | d	S )zm8[]r   )r"   units     r$   r%   r%     s     666$d666r&   c                   `   e Zd Zd Zd Zej                            dg d          ej                            d          d                         Z	d Z
d	 Zd
 Zej                            dg d          ej                            de          d                         Zd Zd Zd Zd ZdS )TestNanFunctions_Medianc                     t                                           }t          j        |           t	          |t                      d S r:   )rq   rr   r;   r]   r   r=   ru   s     r$   rw   z%TestNanFunctions_Median.test_mutation  s5    zz||
TT5!!!!!r&   c                    t          j        d          }dD ]O}t          j        ||d d          }t          j        ||d d          }t	          |j        |j        k               Pt          j        d          }t           j                            d          t          j        |j	                  d d d f         z  }|
                    t           j                  }t           j        |t          |          <   t                      5 }|                    t                      t          j        |d d          }t#          |j	        d	           t          j        |d
d          }t#          |j	        d           t          j        |dd          }t#          |j	        d           t          j        |dd          }t#          |j	        d           t          j        |dd          }t#          |j	        d	           t          j        |dd          }t#          |j	        d           d d d            d S # 1 swxY w Y   d S )Nr{   r|   Fr   r   overwrite_inputru  r      Tr~   r}   r}   r}   r}   r  r}   r}   rv  rw  r  r}   r   rv  r}   r  r{   r}   rv  rw  r   r}   r   r{   r   r}   r{   r}   r}   rv  r}   )r;   r   r^   r]   r   r   rs  rx  r   r   r   r*  r   tupler   r  r   r   r=   r   r   r   r   r   r   r  s           r$   r   z%TestNanFunctions_Median.test_keepdims  s=   fQii  	* 	*D)CdeLLLC,s4OOOCCH())))GM""IX&&!'):):111d7)CCHHRWf%((   	2CJJ~&&&,qtd;;;CL111,qv===CM222,qv===CL111,qtd;;;CM222,q|dCCCCL111,qy4@@@CL111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   D#H77H;>H;r   Nr}   r  r  )r  argnames	argvalues#ignore:All-NaN slice:RuntimeWarningc                 \   t          j        d          t           j                            d          t          j        j                  d d d f         z  }|                    t           j                  }t           j        t          |          <   |dj	        z  }nCt          |j	                  t          fdt          j	                  D                       }t          j        |          }t          j        |d|          }||u sJ t          |j        |           d S )Nru  r  r  c              3   >   K   | ]}|v rd nj         |         V  dS r}   Nr   r"   r7  	axis_normr   s     r$   	<genexpr>z<TestNanFunctions_Median.test_keepdims_out.<locals>.<genexpr>F  N       L L89Q)^^L L L L L Lr&   Tr   r   r   )r;   rs  rx  r   r   r   r*  r   r  r   r   r  r/   r]   r   )r=   r   r   	shape_outr   resultr  r   s         @@r$   test_keepdims_outz)TestNanFunctions_Median.test_keepdims_out1  s'    GM""IX&&!'):):111d7)CCHHRWf%((<qvII,T16::I L L L L L=B16]]L L L L LIhy!!adTsCCC}}}}V\9-----r&   c                    t           j                            dd          }t          j        |ddgt           j        d          }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|          }t          ||           t          ||           d S )	Nr{   r   r   r}   r   r   r   r  )	r;   rx  rz  insertr   r   r^   r]   r   r=   r   nan_matr   r   r   s         r$   r   z TestNanFunctions_Median.test_outM  s   innQ"")C!Qa888!i!$$$l7777C(((C%%%"i$'''l76:::C(((C%%%l7V<<<C(((C%%%%%r&   c                    dD ]}t           j                            d|          }t           j                            d|j        |j        dz            }t           j        |                                |<   d|d d df<   g }|D ]S}t          j        t          j        |           |          }|	                    t          j
        |d                     Tt          t          j        |d	
          |           d S )N)r      3   r  i  r   r   r   )sizer   T)r  r  r   )r;   rx  randnrandintr  r   ravelcompressr   r0   r^   r
   r]   )r=   r  r   r   r   xnonans          r$   test_small_largez(TestNanFunctions_Median.test_small_large_  s    ' 	> 	>A	1%%A	!!!QV!&A+!>>A6AGGIIaLAaaacFC C CRXa[[L!44

29UDAAABBBBr|AB777====	> 	>r&   c                 ~    d t           D             }t          j        t          d          }t	          ||           d S )Nc                 6    g | ]}t          j        |          S r   )r;   r^   r  s     r$   r%   z>TestNanFunctions_Median.test_result_values.<locals>.<listcomp>p  s     ///A29Q<<///r&   r}   r   )r   r;   r]   rq   r   r=   r   r   s      r$   r   z*TestNanFunctions_Median.test_result_valueso  s?    /////C,u1---CS)))))r&   r|   r   c                    t          j        dt           j                                      |          }t	                      5 }|                    t                     t          j        ||          }|j        |j        k    sJ t          j	        |          
                                sJ |&t          t          |j                  dk               n%t          t          |j                  dk               t          j        t           j                                      |          d         }t          j        |          }|j        |j        k    sJ t          j	        |          sJ |&t          t          |j                  dk               n%t          t          |j                  dk               d d d            d S # 1 swxY w Y   d S )Nr   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  outputscalaroutput_scalars           r$   r   z$TestNanFunctions_Median.test_allnanst  s    gfbf%%,,U33   	+CJJ~&&&\#D111F<39,,,,8F##'')))))|CG)****CG)*** Xbf%%,,U33B7FL00M &&,66668M*****|CG)****CG)***+	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s   E8GG
G
c           
         t          j        d          }dD ]}t          j        d          5 }t          j        d           t          t          j        t          j        ||                                                               t          t          |          dk               t          t          |d         j        t                               d d d            n# 1 swxY w Y   d	D ]}t          j        d          5 }t          j        d           t          t          j        ||          t          j        g                      t          t          |          dk               d d d            n# 1 swxY w Y   d S r  )r;   r   r   r   r   r   r   r]   r   r   r   r   r   r   r=   r   r   r   s       r$   r   z"TestNanFunctions_Median.test_empty  s   hv 	C 	CD(555 C%h///c!=!=!=>>BBDDEEEA!$$$
1Q4=.AABBB	C C C C C C C C C C C C C C C
  	% 	%D(555 %%h///R\#D99928B<<HHHA!$$$% % % % % % % % % % % % % % %	% 	%s%   B)C##C'	*C'	A+E??F	F	c                 P    t          t          j        d          dk               d S r   )r   r;   r]   rG   s    r$   r   z#TestNanFunctions_Median.test_scalar  s%    R  B&'''''r&   c                    t          j        d          }t          t           j        t           j        |d           t          t           j        t           j        |d           t          t           j        t           j        |d           t          t           j        t           j        |d           t          t
          t           j        |d           d S )Nru  r   r   r  r   r   r   r}   r}   )r;   rs  r	   	AxisErrorr]   r  r=   r   s     r$   test_extended_axis_invalidz2TestNanFunctions_Median.test_extended_axis_invalid  s    GM""blBL!"====blBL!'BBBBblBL!!<<<<blBL!&AAAAj",??????r&   c           
      	   t                      5 }|                    t                     t          j        t          j         fD ]b}t          j        |t          j        gt          j        t          j        gg          }t          t          j        |d          |t          j        g           t          t          j        |d          |t          j        g           t          t          j        |          |           t          j        t          j        t          j        |gt          j        t          j        |gg          }t          t          j        |          |           t          t          j        |d          t          j        t          j        |g           t          t          j        |d          |           t          j        ||g||gg          }t          t          j        |d          |           t          j        |d| dgdt          j        t          j        dgdt          j        t          j        |ggt          j	        	          }|dk    rLt          t          j        |d          d
d| dg           t          t          j        |          d           nKt          t          j        |d          dd| dg           t          t          j        |          d           t          t          j        |d          dd|g           t          dd          D ]t}t          dd          D ]_}t          j        t          j        g|z  |g|z  z   gdz            }t          t          j        |          |           t          t          j        |d          |           t          t          j        |d          t          j        g|z  |g|z  z              t          j        t          j        g|z  | g|z  z   gdz            }t          t          j        |          |            t          t          j        |d          |            t          t          j        |d          t          j        g|z  | g|z  z              avd	 d d d            d S # 1 swxY w Y   d S )Nr   r   r}   rv  iir   r   r   r   g      @      @g      @g      $g      "g      r  g      
   r   )r   r  r   r;   infr   r   r   r]   float32r  )r=   r  r  ar7  js         r$   test_float_specialz*TestNanFunctions_Median.test_float_special  s      +	BCJJ~&&&( )B )BHsRVnrvrv.>?@@R\!!444sRVnEEER\!!444sRVnEEER\!__c222 Hrvrvs3 fbfc24 5 5R\!__c222R\!!444rvrvs6KLLLR\!!444c::: HsCj3*566R\!!444c:::HsAtR0"BFBFA6 "&"&#68 %'J0 0 0 77 aa!8!8!82rC4:LMMM a#6666 aa!8!8!84cT3:OPPP a$777R\!"555T37GHHHq" B BA"1b\\ B BHx!|	&B%Ca%GHH$R\!__c:::$R\!!%<%<%<cBBB$R\!!%<%<%<')vhlseai%?A A A Hx!|#
&C%Dq%HII$R\!__sd;;;$R\!!%<%<%<sdCCC$R\!!%<%<%<')vhltfqj%@B B B BBB;)B+	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	B +	Bs   RR55R9<R9N)r!   rI   rJ   rw   r   ri   rj   rk   filterwarningsr  r   r  r   _TYPE_CODESr   r   r   r  r  r   r&   r$   r  r    sX       " " "2 2 26 [
 
 
  	 	 [ EFF. . GF	 	."& & &$> > > * * *
 [V\\\22[Wk22+ + 32 32+2% % %( ( (@ @ @,B ,B ,B ,B ,Br&   r  c            
       \   e Zd Zd Zd Zej                            ddddgg          ej                            dg d          ej                            d	          d
                                     Z	d Z
d Zd Zej                            dg d          ej                            dej        d                   ej                            d ej        ej                   ej        dej                  gddg          d                                     Zd Zd Zd Zd ZdS )TestNanFunctions_Percentilec                     t                                           }t          j        |d           t	          |t                      d S )N   )rq   rr   r;   r_   r   r  s     r$   rw   z)TestNanFunctions_Percentile.test_mutation  s8    zz||
r"""T5!!!!!r&   c                    t          j        d          }dD ]Q}t          j        |d|d d          }t          j        |d|d d          }t	          |j        |j        k               Rt          j        d          }t           j                            d          t          j        |j	                  d d d f         z  }|
                    t           j                  }t           j        |t          |          <   t                      5 }|                    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           d d d            d S # 1 swxY w Y   d S )Nr{   r|   F   Fr  ru  r  Z   Tr~   r  r  r  r  r  r  r  r  r  r  )r;   r   r`   r_   r   r   rs  rx  r   r   r   r*  r   r  r   r  r   r   r  s           r$   r   z)TestNanFunctions_Percentile.test_keepdims  sb   fQii  	* 	*D-Rd057 7 7C"3438: : :CCH())))GM""IX&&!'):):111d7)CCHHRWf%((   	2CJJ~&&&"1btdCCCCL111"1bvEEECM222"1bvEEECL111"1btdCCCCM222"1b|dKKKCL111"1by4HHHCL111	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2 	2s   	D)H??IIrA  rv  r}   r   r  r  r  c                    t          j        d          t           j                            d          t          j        j                  d d d f         z  }|                    t           j                  }t           j        t          |          <   |dj	        z  }nCt          |j	                  t          fdt          j	                  D                       }t          j        |          |z   }t          j        |          }t          j        ||d|          }||u sJ t          |j        |           d S )Nru  r  r  c              3   >   K   | ]}|v rd nj         |         V  dS r  r  r  s     r$   r  z@TestNanFunctions_Percentile.test_keepdims_out.<locals>.<genexpr>  r  r&   Tr  )r;   rs  rx  r   r   r   r*  r   r  r   r   r  r/   r_   r   )	r=   rA  r   r   r  r   r  r  r   s	          @@r$   r  z-TestNanFunctions_Percentile.test_keepdims_out  s<    GM""IX&&!'):):111d7)CCHHRWf%((<qvII,T16::I L L L L L=B16]]L L L L LIHQKK)+	hy!!!!QTDcJJJ}}}}V\9-----r&   c                    t           j                            dd          }t          j        |ddgt           j        d          }t          j        d          }t          j        |dd          }t          j        |dd|          }t          ||           t          ||           t          j        d          }t          j        |dd           }t          j        |dd |          }t          ||           t          ||           t          j        |dd	|          }t          ||           t          ||           d S )
Nr{   r   r   r}   r   *   r   r   r  )	r;   rx  rz  r  r   r   r`   r_   r   r  s         r$   r   z$TestNanFunctions_Percentile.test_out  s,   innQ"")C!Qa888!mC!,,,w???C(((C%%%"mC$///w6BBBC(((C%%%wVDDDC(((C%%%%%r&   c                 \   t          j        g dd          }t          t          t           j        |d           t          j        g dd          }t          t          t           j        |d           t          j        g dd          }t          t          t           j        |d           d S N)y      ?      @y @      ?y?ffffff@Gr   rF  r  F)r;   r   r	   rC  r_   r=   arr_cs     r$   test_complexz(TestNanFunctions_Percentile.test_complex-  s    777sCCCi!15#>>>777sCCCi!15#>>>777sCCCi!15#>>>>>r&   c                    d t           D             }t          j        t          dd          }t	          ||           t          j        d t           D                       }t          j        t          dd          }t	          ||           d S )Nc                 8    g | ]}t          j        |d           S )rl  r;   r`   r  s     r$   r%   zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>6  s$    333r}Q##333r&   rl  r}   r   c                 8    g | ]}t          j        |d           S )rl  b   r  r  s     r$   r%   zBTestNanFunctions_Percentile.test_result_values.<locals>.<listcomp>:  s$    FFF1BM!X66FFFr&   r  )r   r;   r_   rq   r   	transposer  s      r$   r   z.TestNanFunctions_Percentile.test_result_values5  s    33U333ubq111C%%%lFFFFFGGuhQ777C%%%%%r&   r|   r   Floatr   r   r   r   r7   c                 z   ||j         dk    rt          j        d           |                    |          }t          j        t
          d          5  t          j        |d|          }d d d            n# 1 swxY w Y   t          j        |          	                                sJ |j
        |j
        k    sJ d S )Nr   r   r   r   <   r   )r   ri   r   r   r   r   r;   r_   r   r   r   r=   r   r   r   r   s        r$   r   z(TestNanFunctions_Percentile.test_allnans>  s     
aKEFFFU##\.0KLLL 	9 	9"5"4888C	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9 	9x}}  """""yEK''''''   A66A:=A:c                    t          j        d          }dD ]}t          j        d          5 }t          j        d           t          t          j        t          j        |d|                                                               t          t          |          dk               t          t          |d	         j        t                               d d d            n# 1 swxY w Y   d
D ]}t          j        d          5 }t          j        d           t          t          j        |d|          t          j        g                      t          t          |          d	k               d d d            n# 1 swxY w Y   d S )Nr  r  Tr   r   (   r   r}   r   r  )r;   r   r   r   r   r   r   r_   r   r   r   r   r   r   r  s       r$   r   z&TestNanFunctions_Percentile.test_emptyN  s   hv 	C 	CD(555 C%h///!1#r!E!E!EFFJJLLMMMA!$$$
1Q4=.AABBB	C C C C C C C C C C C C C C C
  	% 	%D(555 %%h///R-c2DAAA28B<<PPPA!$$$% % % % % % % % % % % % % % %	% 	%s%   B*C$$C(	+C(		A,FF	F	c                    t          t          j        dd          d           t          j        d          }t          j        |dd          }t          |d           t	          t          j        |                     d S )Nr   r      2   r   r   g      @)r   r;   r_   r   r   isscalar)r=   r  rs      r$   r   z'TestNanFunctions_Percentile.test_scalar\  so    R%b#..333IaLLQ+++QAr&   c                    t          j        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 )	Nru  r   r  rA  r   r  r   r  r  )r;   rs  r	   r  r_   r  r  s     r$   r  z6TestNanFunctions_Percentile.test_extended_axis_invalidc  s    GM""blB$4a12FFFFblB$4a17KKKKblB$4a11EEEEblB$4a16JJJJj""2AHHHHHHr&   c           	         ddg}t          j        d          }t           j        |z  }t          j        d          }d|d d dddd d f<   |d d d d dd fxx         dz  cc<   d	D ]}d
D ]}t                      5 }|                    t
          d           t          j        ||||          }t          j        ||||          }	t          |	j	        |j	                   t          j        ||||          }t          j        ||||          }	t          |	|           d d d            n# 1 swxY w Y   Όt          j        d          }
t          t          j        |
|d          j	        d           d S )Nr"  r   )r   r{   )r{   r   r   r   r   r   r{   r|   )FTr   r~   )r{   r   r   r!  )r}   r   r   )r   r{   r!  )
r;   rs  r   r   r  r   r`   r_   r   r   )r=   percr   r  	large_matr   keepdimr  r  nan_valmegamats              r$   test_multiple_percentilesz5TestNanFunctions_Percentile.test_multiple_percentilesk  s   Cygfoo&3,GI&&	!"	!!!QqUAAA+!!!QQQ(q   	/ 	/D( / /&(( /CJJ~/JKKK-TwOOOC .w48?A A AG 	:::-	4d18: : :C .y$T8?A A AG #.../ / / / / / / / / / / / / / // ',''R%gt&AAAGSSSSSs   :B&D,,D03D0N)r!   rI   rJ   rw   r   ri   rj   rk   r  r  r   r  r   r;   r
  r   r   r  r   r   r   r  r-  r   r&   r$   r  r    s       " " "2 2 2: [S1q!f+..[
 
 
  	 	 [ EFF. . GF	 	 /..&& & &$? ? ?& & & [V\\\22[Wbl7&;<<[W' $<   ( (	  =< 32(% % %     I I IT T T T Tr&   r  c            
       f   e Zd Zd Zd Zd Zd Zej        	                    dg d          ej        	                    de
j        d                   ej        	                    d	 e
j        e
j                   e
j        d
e
j                  gddg          d                                     ZdS )TestNanFunctions_Quantilec                    t          j        d                              ddd                              t                    }t           j        |d         d<   t          t          j        |d          t          j        |d	                     t          t          j        |dd
          t          j        |d	d
                     t          t          j        |dd
          t          j        |d	d
                     t          t          j        |dgd
          t          j        |d	gd
                     t          t          j        |g dd
          t          j        |g dd
                     d S )N   r   r{   r   r   r}   rF  r@  r"  r&  )      ?rF        ?)   r"  K   )	r;   r   r  r   floatr   r   ra   r_   )r=   r   s     r$   test_regressionz)TestNanFunctions_Quantile.test_regression  ss   Yr]]""1a++2259961aR^B#...0@r0J0J0JKKKR^B#A666%bBQ777	9 	9 	9R^B#A666%bBQ777	9 	9 	9R^B3%a888%bRDq999	; 	; 	;R^B*;*;*;!DDD%bLLLqAAA	C 	C 	C 	C 	Cr&   c                    t          j        d          dz  }t          t          j        |d          d           t          t          j        |d          d           t          t          j        |d          d           d S )Nr   rF  r   r   r}   g      @g      ?)r;   r   r   ra   )r=   r  s     r$   
test_basicz$TestNanFunctions_Quantile.test_basic  sn    IaLL3R^Aq))2...R^Aq))3///R^As++T22222r&   c                 \   t          j        g dd          }t          t          t           j        |d           t          j        g dd          }t          t          t           j        |d           t          j        g dd          }t          t          t           j        |d           d S r  )r;   r   r	   rC  ra   r  s     r$   r  z&TestNanFunctions_Quantile.test_complex  s    777sCCCi<<<777sCCCi<<<777sCCCi<<<<<r&   c                    t          j        g d          }|                                }t          j        t          j        d          |d           t          ||           |                                }|                                }t          j        t          j        d          |d           t          ||           d S )N)r   r3  r2  rF  r   g      Y@midpoint)method)r;   r   rr   ra   r   r
   tolist)r=   p0ps      r$   test_no_p_overwritez-TestNanFunctions_Quantile.test_no_p_overwrite  s    X///00GGII
ry*====1b!!!YY[[HHJJ
ry*====1b!!!!!r&   r   r|   r   r  r   r   r   r   r7   c                 z   ||j         dk    rt          j        d           |                    |          }t          j        t
          d          5  t          j        |d|          }d d d            n# 1 swxY w Y   t          j        |          	                                sJ |j
        |j
        k    sJ d S )Nr   r   r   r   r}   r   )r   ri   r   r   r   r   r;   ra   r   r   r   r  s        r$   r   z&TestNanFunctions_Quantile.test_allnans  s     
aKEFFFU##\.0KLLL 	6 	6.555C	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6x}}  """""yEK''''''r  N)r!   rI   rJ   r7  r9  r  rA  ri   rj   rk   r;   r
  r   r   r  r   r   r&   r$   r/  r/    s       C C C3 3 3= = =
" 
" 
" [V\\\22[Wbl7&;<<[W' $<   ( (	  =< 32( ( (r&   r/  zarr, expectedr  )FTFT)r}   r   rv  r   r   Tc                     d t          j        | j        t           j                  fD ]D}t	          | |          }t          ||           t          |          t           j        ur|du sJ Ed S )Nr   r)  T)r;   r/   r   r  r   r   r   r   )r   expectedr   actuals       r$   test__nan_maskrF    sz    " bhsy999: " "3C(((VX&&& >>++T>>>>" "r&   c                     t           j        t           j        t           j        fD ]7} t          j        ddg|           }t          |d          \  }}|J ||u sJ 8t           j        t           j        fD ]} t          j        ddg|           }t          |d          \  }}|dk                                    sJ ||usJ t          ||           t          j        ddt           j
        g|           }t          |d          \  }}t          |t          j        g d                     ||usJ t          |t          j        g d                     t          j        |d	                   sJ dS )
z] Test that _replace_nan returns the original array if there are no
    NaNs, not a copy.
    r   r}   r   Nr   F)FFT)r   r}   r   r  )r;   r  int32int64r   r   r  float64r   r   r   r   )r   r   r  maskarr_nan
result_nanmask_nans          r$   test__replace_nanrO    s    (BHbh/  h1vU+++#C++|||}}}}}*bj) % %h1vU+++#C++""$$$$$S    VS!!!(Aq"&>777+GQ77
HXrx(<(<(<==>>>((((Z)))!4!4555x$$$$$$% %r&   )2r   ri   r*   numpyr;   numpy.core.numericr   numpy.lib.nanfunctionsr   r   numpy.testingr   r   r   r	   r
   r   r   r   rq   r   r  r  r   rn   r  _TEST_ARRAYSr-   _vsetflagsrj   rk   r
  keysr5  rM  rc  rp  r  _TIME_UNITSr   r  r  r  r/  r  rI  	complex64rF  rO  r   r&   r$   <module>rZ     sW          3 3 3 3 3 3 : : : : : : : :                	62666266B7BFFFFC626266267C26266626BD 	E 	E 
222	3	3	;;;	<	<	67#	$	$	***	+	+	- RXAAAEEE<<<>>>@ A A
 bhBBBFFF===???A B B,
 ,
 ,
 ,
 ,
 ,
 ,
 ,
^m% m% m% m% m% m% m% m%`Z$ Z$ Z$ Z$ Z$ Z$ Z$ Z$~ "(1++
"((((
)
)  



  BKKeK Lj!99C?   3 3 5 5<;L;L;N;NOOB* B* B* B* B* B* B* PO	 
B*Jf1 f1 f1 f1 f1 f1 f1 f1R8$ 8$ 8$ 8$ 8$; 8$ 8$ 8$vF. F. F. F. F."> F. F. F.R^7 ^7 ^7 ^7 ^7"> ^7 ^7 ^7B
 d2<
+,, 66+666 6FB FB FB FB FB FB FB FBRlT lT lT lT lT lT lT lT^9( 9( 9( 9( 9( 9( 9( 9(v RXrvsBFBF+,,RX((())+ RXlll"(+++	 RX((())	 RX}!(*6 6 6RXt}t}   +   " "!  "% % % % %r&   