
    ܙd0             	       @&   d Z ddlZddlmZ ddlmZ 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 ddlmZmZmZmZmZmZ ddlmZmZmZmZ dd	lm Z m!Z!m"Z"m#Z# dd
l$m%Z% ddlm&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ d Z0 e0            Z1e&d             Z2e&d             Z3 eej4        ej5                   edej5                  d                         Z6ed             Z7d Z8 eej4        ej5        ej9        ej:                   eej4        ej5        ej;        ej:                   edej5        ej9        ej:                   edej5        ej;        ej:                  d                                                 Z< eej4        ej5        ej:                   edej5        ej:                  d                         Z= eej4        ej5        ej9                   eej4        ej5        ej;                   edej5        ej9                   edej5        ej;                  d                                                 Z>d Z? eej@                   eej5        d          d                         ZA eejB                   eej5        d          d                         ZC eejD                   eej5        d          d                         ZE eejF                   eej5        d          d                          ZG eejH                   eej5        d!          d"                         ZI eejJ                   eej5        d#          d$                         ZKed%             ZLed&             ZMed'             ZN eejO                   eej5        d(          d)                         ZP eejQ                   eej5        d*          d+                         ZRed,             ZSed-             ZTed.             ZU eejV                   eej5        d/          dd0                        ZWed1             ZXed2             ZYed3             ZZd4 Z[ eej\                   eej5        d5          dd6                        Z] eej^                   eej5        d7          d8                         Z_edd<            Z` eeja                   eej5        d=          dd>                        Zb eejc                   eej5        d?          d@                         Zd eeje                  ddA            ZfdB Zg eejh                  dC             Zi eejj                  dD             Zk eejl                  dE             Zl eejm                  dF             Zm eejn                  dG             ZodH Zp eejq                  ddI            Zq eejr                  ddJ            ZredK             ZsedL             ZtedM             ZudN Zv e evesd;O                    Zw e evetd;O                    Zx e evesdPO                    Zy e evetdPO                    ZzedQ             Z{ eej|                  ddR            Z| eej}                  dS             Z~ eej                  dT             Z eej                  dU             Z eej                  dV             Z eej                  dW             Z eej                  dX             Z eej                  dY             Z eej                  dZ             Z eej                  d[             Zed\             Zd] Zd^ Zd_ Z ee          d`             Z ee          da             Zdb Z ee          dc             Z eej5        dd           eej                  de                         Zedf             ZddgZ e ees                    Z e ee                    Z e eedPh                    Zdi Z e ee                    Z e ee                    Z e ee                    Zedj             Zedk             Z eej                  dl             Zedm             Zedn             Zedo             Zedp             Zedq             Zedr             Zds Z eej                  dt             Z eej                  du             Z eej                  dv             Z eej                  dw             Z eej                  dx             Zedy             Zedz             Zed{             Z eej                  d|             Z eej                  d}             Zed~             Z eej                  dd            Zed             Zedd            Z eej                  dd            Z eej                  dd            Z eej                  dd            Zedd            Z eej                  dd            Z eej                  dd            Z eej                  dd            Zd Z eeЦ          d             Zd Z eej                  dd            Zd Z eeզ          d             Zd Z eeצ          d             Z eej                  dd            Zed             Zed             Z eej                  d	d            Z eej                  d             ZdZed             Zed             Zed             Z eej                  d             Zed             Zed             Zd Z ee          d             Zed             Z ed           Zd Zd Zed             Z ed           Zed             Zd Zed             Zed             Z eej                  d
d            Z eej                  dd            Z eej                  d             Z eej                  d             Zed             Zed             Zed             Zed             Z ed             Z ed           Zd Z ee          d             Z eej                  dd            Zd Ze&d             Zed             Z	 eej
                   eej                  dd                        Z eej                  d             Z eej                  dd            Z eej        ej5                   edej5                  d                         Zd Zed             Zed             Zd Z eej                  dÄ             Z eej                  dĄ             Z eej                  dń             Z eej                  dƄ             Z eej                  dǄ             Z eej                   ddȄ            Z! edɄ           Z" edʄ           Z# eej$                  d˄             Z% eej&                  dd̈́            Z' eej(                  d΄             Z) eej*                  dτ             Z+dЄ Z, eej-                  ddф            Z.d҄ Z/esZ0 edӄ           Z1 e e/e0                    Z2 e e/e1                    Z3 eej4                  ddՄ            Z4 eej5                  ddք            Z6e7Z8 eej9                  dd؄            Z:dِZ; edڐe;          Z<dېZ= edܐe=          Z>dݐZ? edސe?          Z@d߄ ZA eA             d ZB eBej>        e>e=            eBej@        e@e?           d ZCd ZDd ZE G d de          ZF eeE          d             ZG eejH                  d             ZI eejJ                  d             ZK eejL                  dd            ZM eejN                  ejO        fd            ZP eejQ                  d             ZR eejS                  dd            ZT eejU                  d             ZV eejW                  dd            ZXed             ZYed             ZZed             Z[ed             Z\d Z]  eej^                   e]eY                       eej_                   e]eZ                       eej`                   e]e[                       eeja                   e]e\                      ejb        g d          Zc ejb        g d          Zded             Zeed             Zfed             Zg eejh                  d             Zied             Zjd Zk eek          d             Zl eejm                  d             Zned             Zod Zp eep          d              ZqdS (  z5
Implementation of math operations on Array objects.
    N)
namedtuple)IntEnum)typescgutils)overloadoverload_methodregister_jitable)as_dtypetype_can_asarraytype_is_scalarnumpy_versionis_nonelikecheck_is_integer)lower_builtinimpl_ret_borrowedimpl_ret_new_refimpl_ret_untracked)
make_array	load_item
store_item_empty_nd_impl)ensure_blas)	intrinsic)RequireLiteralValueTypingErrorNumbaValueErrorNumbaNotImplementedErrorNumbaTypeErrorNumbaDeprecationWarning)tuple_setitemc                  H    	 t                       n# t          $ r Y dS w xY wdS NFT)r   ImportError     2lib/python3.11/site-packages/numba/np/arraymath.py_check_blasr'   !   s9       uu4s    
c                     t          |          dz
  t          j        t          j                   |          }fd}||fS )a  
    This routine converts shape list where the axis dimension has already
    been popped to a tuple for indexing of the same size.  The original shape
    tuple is also required because it contains a length field at compile time
    whereas the shape list does not.
       c           	      j   |                                }t          j        |          }|\  }}d }t                    D ]p}	|                     t
          j        |	          }
|                     ||t          j        t
          j                  ||
g          }|                    |||	          }q|S )Nc                     | |         S Nr$   )ais     r&   array_indexerzB_create_tuple_result_shape.<locals>.codegen.<locals>.array_indexerF   s    Q4Kr%   )	get_value_typer   get_null_valuerangeget_constantr   intpcompile_internalinsert_value)cgctxbuilder	signatureargslltuptytupin_shape_r/   r.   dataidxdatand
shape_listtuptys               r&   codegenz+_create_tuple_result_shape.<locals>.codegen>   s    &&u--$W-- 1	 	 	 r 	5 	5A((Q77G))'=*/*Z*L*L+3W*=? ?D &&sD!44CC
r%   )lenr   UniTupler4   )tyctxrB   shape_tuplefunction_sigrD   rA   rC   s    `   @@r&   _create_tuple_result_shaperJ   -   sm     
[		A	BN5:r**E5[11L      *   r%   c                 r  	
 t          |t          j                  st          d          |j        	t          |          
	
k    rd		}
|z
  dz
  }g }|t          j        g|z  z  }|t          j        gz  }|t          j        g|z  z  }t          j        |           |||          }	
fd}||fS )aH  
    Generates a tuple that can be used to index a specific slice from an
    array for sum with axis.  shape_tuple is the size of the dimensions of
    the input array.  'value' is the value to put in the indexing tuple
    in the axis dimension and 'axis' is that dimension.  For this to work,
    axis has to be a const.
    z axis argument must be a constantr   r)   c                    |                                }t          j        |          }|\  }}}d }|                     ||t	          j                    g           }	t          d          D ]}
|                    ||	|
          }|                    ||          }t          dz             D ]}
|                    ||	|
          }|S )Nc                  "    t          d d           S r,   )slicer$   r%   r&   create_full_slicez<_gen_index_tuple.<locals>.codegen.<locals>.create_full_slice   s    t$$$r%   r   r)   )r0   r   r1   r5   r   slice2_typer2   r6   )r7   r8   r9   r:   r;   r<   r>   	value_argrO   
slice_datar.   
axis_valuerA   rC   s              r&   rD   z!_gen_index_tuple.<locals>.codegen}   s    &&u--$W-- !Iq	% 	% 	% ++G5F,1,=,?,?,.0 0
 q*%% 	; 	;A&&sJ::CC ""3	:>> zA~r** 	; 	;A&&sJ::CC
r%   )	
isinstancer   Literalr   literal_valuerE   rP   r4   Tuple)rG   rH   valueaxisbeforeafter
types_listrI   rD   rS   rA   rC   s            @@@r&   _gen_index_tupler]   V   s     dEM** F!"DEEE#J	[		B R
 FK!OEJ5$%..J5:,J5$%--J K
##E5eT22L      >   r%   z	array.sumc           	          |                     d          fd}|                     ||||t          |j                             }t          | ||j         |          S )Nr   c                 h    }t          j        |           D ]}||                                z  }|S r,   npnditeritem)arrcvzeros      r&   array_sum_implz!array_sum.<locals>.array_sum_impl   7    3 	 	AMAAr%   re   localsreturn_typer5   dictr   contextr8   sigr:   rh   resrg   s         @r&   	array_sumrt      {     ??1D     
"
"7NC*.*A*A*A # C CCWgsDDDr%   c                     | S r,   r$   )rd   rf   s     r&   _array_sum_axis_noprw      s    Jr%   c                       fd}|S )Nc                 
   | j         }s|dk     s|dk    rt          d          ||k    rt          d          t          | j                  }||         }|                    |           t          || j                  }t          j        |t                              }t          |          D ]}r"t          | j        |          }|| |         z  }&|dk    r"t          | j        |d          }	|| |	         z  }N|dk    r"t          | j        |d          }
|| |
         z  }v|dk    r"t          | j        |d          }|| |         z  }|dk    r!t          | j        |d          }|| |         z  } |d          S )a(  
        function that performs sums over one specific axis

        The third parameter to gen_index_tuple that generates the indexing
        tuples has to be a const so we can't just pass "axis" through since
        that isn't const.  We can check for specific values and have
        different instances that do take consts.  Supporting axis summation
        only up to the fourth dimension for now.

        typing/arraydecl.py:sum_expand defines the return type for sum with
        axis. It is one dimension less than the input array.
        r      zHNumba does not support sum with axis parameter outside the range 0 to 3.zaxis is out of bounds for arrayr)      )ndim
ValueErrorlistshapepoprJ   ra   fulltyper2   r]   )rd   rY   r|   ashapeaxis_lenashape_without_axisresult
axis_indexindex_tuple_genericindex_tuple1index_tuple2index_tuple3index_tuple4const_axis_valis_axis_constoprg   s                r&   innerz gen_sum_axis_impl.<locals>.inner   s    x 	Haxx4!88  "G H H H
 4<<>??? ci$<

48KK,dDJJ??  // 	0 	0J 0&6sy*7E'G 'G##122
 199#3CIz1#M#MLc,//FFQYY#3CIz1#M#MLc,//FFQYY#3CIz1#M#MLc,//FFQYY#3CIz1#M#MLc,//Fr&!}}r%   r$   )r   r   r   rg   r   s   ```` r&   gen_sum_axis_implr      s6    < < < < < < < <z Lr%   c                    |j         } t          |d|          d          }t          |dd           t          j        }nt          }|j        \  }}}	d}
d}t          |t          j                  r|j	        }|dk     r
|j
        |z   }|dk     s||j
        k    rt          d          | j                            |          }|                     ||          }|d         ||d         f}|                    |||	g          }d}
t!          |
|||          }t#          |          fd	}|                     ||||          }t'          | ||j         |          S )
Ndtyper   r|   Fz'axis' entry is out of boundsr{   r:   Tc                      | |          S r,   r$   )rd   rY   r   compileds      r&   array_sum_impl_axisz1array_sum_axis_dtype.<locals>.array_sum_impl_axis      xT"""r%   )rn   getattrra   takerw   r:   rT   r   rU   rV   r|   r}   typing_contextresolve_value_typer3   replacer   r	   r5   r   )rq   r8   rr   r:   rettyrg   r   ty_arrayty_axisty_dtyper   r   axis_valgen_implr   rs   r   s                   @r&   array_sum_axis_dtyper      s   
 OE)75'5))!,,D ufd##+W $'H!XwMN'5=))  .A%]^;NA(-!?!?<===(;;NKK''@@Aw$q')kk'8<k== DIIH))H# # # # # 
"
"7,?d
K
KCGWcosCCCr%   c           	          |                     d          fd}|                     ||||t          |j                             }t          | ||j         |          S )Nr   c                 h    }t          j        |           D ]}||                                z  }|S r,   r`   )rd   r   re   rf   rg   s       r&   rh   z'array_sum_dtype.<locals>.array_sum_impl(  ri   r%   rj   rk   rm   rp   s         @r&   array_sum_dtyper   #  ru   r%   c                    |j         } t          |d|          d          }t          |dd           t          j        }nt          }|j        \  }}d}	d}
t          |t          j                  r|j	        }
|
dk     r
|j
        |
z   }
|
dk     s|
|j
        k    rd|
 d}t          |          | j                            |
          }|                     ||
          }|d         |f}|                    ||g          }d}	t!          |	|
||          }t#          |          fd	}|                     ||||          }t'          | ||j         |          S )
Nr   r   r|   Fz'axis' entry (z) is out of boundsr   Tc                      | |          S r,   r$   )rd   rY   r   s     r&   r   z+array_sum_axis.<locals>.array_sum_impl_axisX  r   r%   )rn   r   ra   r   rw   r:   rT   r   rU   rV   r|   r   r   r   r3   r   r   r	   r5   r   )rq   r8   rr   r:   r   rg   r   r   r   r   r   msgr   r   r   rs   r   s                   @r&   array_sum_axisr   3  s   
 OE)75'5))!,,D ufd##+W (XwMN'5=))  .A%]^;NA(-!?!?E>EEEC!#&&&(;;NKK''@@Aw kk'2k33 DIIH))H# # # # # 
"
"7,?d
K
KCGWcosCCCr%   c                     | j         t          j        k    r(t          j        |                              |           }n|                      |          }|S r,   )r   ra   timedelta64int64view)r   rX   acc_inits      r&   get_accumulatorr   _  sD    zR^##8E??''..::e$$Or%   prodc                     t          | t          j                  r+t          | j                  }t          |d          fd}|S d S )Nr)   c                 h    }t          j        |           D ]}||                                z  }|S r,   r`   r-   re   rf   r   s      r&   array_prod_implz#array_prod.<locals>.array_prod_implo  s7    AYq\\  QVVXXHr%   )rT   r   Arrayr
   r   r   )r-   r   r   r   s      @r&   
array_prodr   g  sb     !U[!! !!"5!,,	 	 	 	 	  r%   cumsumc                 `   t          | t          j                  r| j        t          j        v }| j        t          j        k    }|r| j        j        t          j        j        k     s|rt          t          j                  nt          | j                  t          d          fd}|S d S )Nr   c                     t          j        | j                  }}t          | j                  D ]\  }}||z  }|||<   |S r,   ra   emptysize	enumerateflatr-   outre   idxrf   r   r   s        r&   array_cumsum_implz'array_cumsum.<locals>.array_cumsum_impl  Q    (165))CA#AF++  QQCJr%   
rT   r   r   r   signed_domainbool_bitwidthr4   r
   r   )r-   
is_integeris_boolr   r   r   s       @@r&   array_cumsumr   x  s     !U[!! !W 33
'U[( 	&17+ej.AAA BUZ((EEQW%%E"5!,,	 	 	 	 	 	 ! '! !r%   cumprodc                 `   t          | t          j                  r| j        t          j        v }| j        t          j        k    }|r| j        j        t          j        j        k     s|rt          t          j                  nt          | j                  t          d          fd}|S d S )Nr)   c                     t          j        | j                  }}t          | j                  D ]\  }}||z  }|||<   |S r,   r   r   s        r&   array_cumprod_implz)array_cumprod.<locals>.array_cumprod_impl  r   r%   r   )r-   r   r   r   r   r   s       @@r&   array_cumprodr     s     !U[!! "W 33
'U[( 	&17+ej.AAA BUZ((EEQW%%E"5!,,	 	 	 	 	 	 "!'" "r%   meanc                 &   t          | t          j                  ru| j        t          j        t          t          j        g          z  v }|rt          t          j                  }nt          | j                  }t          |d          fd}|S d S )Nr   c                 x    }t          j        |           D ]}||                                z  }|| j        z  S r,   )ra   rb   rc   r   r   s      r&   array_mean_implz#array_mean.<locals>.array_mean_impl  s@     AYq\\  QVVXXqv:r%   )
rT   r   r   r   integer_domain	frozensetr   r
   float64r   )r-   	is_numberr   r   r   s       @r&   
array_meanr     s     !U[!! Gu3i6N6NNN	 	&U]++EEQW%%E"5!,,	 	 	 	 	 # r%   varc                 D    t          | t          j                  rd }|S d S )Nc                     |                                  }d}t          j        |           D ]E}|                                |z
  }|t          j        |t          j        |          z            z  }F|| j        z  S Nr   )r   ra   rb   rc   realconjr   )r-   mssdrf   vals        r&   array_var_implz!array_var.<locals>.array_var_impl  sm    A CYq\\ 3 3vvxx!|rwsRWS\\1222<r%   rT   r   r   )r-   r   s     r&   	array_varr     s9     !U[!! 		  		  		   r%   stdc                 D    t          | t          j                  rd }|S d S )Nc                 0    |                                  dz  S N      ?)r   r-   s    r&   array_std_implz!array_std.<locals>.array_std_impl  s    5577c>!r%   r   )r-   r   s     r&   	array_stdr     s9     !U[!! 	" 	" 	" 	 r%   c                     | |k     S r,   r$   r-   min_vals     r&   min_comparatorr         w;r%   c                     | |k    S r,   r$   r   s     r&   max_comparatorr     r   r%   c                     dS NFr$   r   s    r&   return_falser     s    5r%   minc                    t          | t          j                  sd S t          | j        t          j        t          j        f          rt          j        t          nzt          | j        t          j	                  rt          d }t          |          nAt          | j        t          j                  rt          j        t          nt          t          fd}|S )Nc                 n    | j         |j         k     rdS | j         |j         k    r| j        |j        k     rdS dS NTFr   imagr   s     r&   	comp_funcznpy_min.<locals>.comp_func  >    v$$t7<''6GL((45r%   c                 .   | j         dk    rt          d          t          j        |           }t	          |                              d          } |          r|S |D ]3}|                                } |          r|c S  ||          r|}4|S )Nr   zDzero-size array to reduction operation minimum which has no identityr   r}   ra   rb   nextr   rc   )r-   it	min_valuer   rf   
comparatorpre_return_funcs        r&   impl_minznpy_min.<locals>.impl_min      6Q;; = > > > Yq\\HHMM!$$	?9%% 	 	 	D		Aq!! z!Y'' 	r%   )rT   r   r   r   
NPDatetimeNPTimedeltara   isnatr   Complexr   r	   Floatisnan)r-   r   r  r  r  s      @@r&   npy_minr         a%% !'E,e.?@AA $(#

	AGU]	+	+ $&	 	 	 &i00

	AGU[	)	) $(#

&#
     $ Or%   maxc                    t          | t          j                  sd S t          | j        t          j        t          j        f          rt          j        t          nzt          | j        t          j	                  rt          d }t          |          nAt          | j        t          j                  rt          j        t          nt          t          fd}|S )Nc                 n    | j         |j         k    rdS | j         |j         k    r| j        |j        k    rdS dS r   r   )r-   max_vals     r&   r   znpy_max.<locals>.comp_func)  r   r%   c                 .   | j         dk    rt          d          t          j        |           }t	          |                              d          } |          r|S |D ]3}|                                } |          r|c S  ||          r|}4|S )Nr   zDzero-size array to reduction operation maximum which has no identityr  )r-   r  	max_valuer   rf   r  r  s        r&   impl_maxznpy_max.<locals>.impl_max9  r	  r%   )rT   r   r   r   r
  r  ra   r  r   r  r   r	   r  r  )r-   r   r  r  r  s      @@r&   npy_maxr    r  r%   c                 Z   | j         dk    rt          d          t          j        |           }t	          |                              d          }d}t          j        |          r|S d}|D ]=}|                                }t          j        |          r|c S ||k     r|}|}|dz  }>|S Nr   *attempt to get argmin of an empty sequencer)   r   r}   ra   rb   r  r   r  rc   )arryr  r  min_idxr   r   rf   s          r&   array_argmin_impl_datetimer   N      yA~~EFFF	4BRa  IG	x	 
C  IIKK8A;; 	JJJy==IGqNr%   c                     | j         dk    rt          d          | j        D ]}|}d} t          j        |          r|S d}| j        D ])}t          j        |          r|c S ||k     r|}|}|dz  }*|S r  r   r}   r   ra   r  r  rf   r  r  r   s        r&   array_argmin_impl_floatr%  d      yA~~EFFFY  		x	 
CY  8A;; 	JJJy==IGqNr%   c                     | j         dk    rt          d          | j        D ]}|}d} nt          d          d}| j        D ]}||k     r|}|}|dz  }|S )Nr   r  unreachabler)   )r   r}   r   RuntimeErrorr$  s        r&   array_argmin_impl_genericr*  z  s    yA~~EFFFY * *	=)))
CY  y==IGqNr%   argminc                    t          | j        t          j        t          j        f          rt
          n.t          | j        t          j                  rt          nt          t          |          rdfd	}nt          | |          }|S )Nc                      |           S r,   r$   rd   rY   flatten_impls     r&   array_argmin_implz'array_argmin.<locals>.array_argmin_impl      <$$$r%   r,   )rT   r   r   r
  r  r   r  r%  r*  r   %build_argmax_or_argmin_with_axis_impl)rd   rY   r0  r/  s      @r&   array_argminr3         #)e.0ABCC 11	CIu{	+	+ 1.04 
	% 	% 	% 	% 	% 	% 	% B|
 
 r%   c                 Z   | j         dk    rt          d          t          j        |           }t	          |                              d          }d}t          j        |          r|S d}|D ]=}|                                }t          j        |          r|c S ||k    r|}|}|dz  }>|S Nr   z*attempt to get argmax of an empty sequencer)   r  )r  r  r  max_idxr   r   rf   s          r&   array_argmax_impl_datetimer8    r!  r%   c                     | j         dk    rt          d          | j        D ]}|}d} t          j        |          r|S d}| j        D ])}t          j        |          r|c S ||k    r|}|}|dz  }*|S r6  r#  r  rf   r  r7  r   s        r&   array_argmax_impl_floatr;    r&  r%   c                     | j         dk    rt          d          | j        D ]}|}d} d}| j        D ]}||k    r|}|}|dz  }|S r6  )r   r}   r   r:  s        r&   array_argmax_impl_genericr=    ss    yA~~EFFFY  	
CY  y==IGqNr%   c                     t          |d           t          j        t          t	          | j                            dfd	}|S )z|
    Given a function that implements the logic for handling a flattened
    array, return the implementation function.
    rY   Nc                    |dk     r
| j         |z   }|dk     s|| j         k    rt          d          | j         dk    r 	|           S }t          || j         dz
            D ]}t          |||dz             }t          || j         dz
  |          }|                     |          }|j        d         }|                                }|j        | j        k    sJ |j        |z  dk    sJ t          j	        |j        |z  
          }t          |j                  D ]!} 	|||z  |dz   |z                     ||<   "|
                    |j        d d                   S )Nr   zaxis is out of boundsr)   )r|   r}   r2   r    	transposer   ravelr   ra   r   reshape)rd   rY   tmpr.   transpose_indextransposed_arrr   raveledr   r/  r   tuple_buffers            r&   implz3build_argmax_or_argmin_with_axis_impl.<locals>.impl  s   !888d?D!88tsx''4555 8q==<$$$ tSX\** 	/ 	/AQA..CC'SX\4@@77  $ &&((|sx''''"Q&!++++h~*a/77sx 	> 	>A!\'!a%Q!*;"<==CFF {{>/4555r%   r,   )r   r   r4   tupler2   r|   )rd   rY   r/  rI  r   rH  s     ` @@r&   r2  r2    sb    
 T6"""JEsx))L6 6 6 6 6 6 6 6> Kr%   argmaxc                    t          | j        t          j        t          j        f          rt
          n.t          | j        t          j                  rt          nt          t          |          rdfd	}nt          | |          }|S )Nc                      |           S r,   r$   r.  s     r&   array_argmax_implz'array_argmax.<locals>.array_argmax_impl  r1  r%   r,   )rT   r   r   r
  r  r8  r  r;  r=  r   r2  )rd   rY   rN  r/  s      @r&   array_argmaxrO    r4  r%   allc                     d }|S )Nc                 b    t          j        |           D ]}|                                s dS dS r"   r`   r-   rf   s     r&   flat_allznp_all.<locals>.flat_all#  s:    1 	 	A6688 uutr%   r$   )r-   rT  s     r&   np_allrU     s       Or%   h㈵>:0yE>Fc                 H   t          j        |           }t          j        |          }|s|s|r|sdS |r|r|sdS nft          j        |           st          j        |          r| |k    S t          j        | |z
            ||t          j        |dz            z  z   k    rdS dS )NF      ?Tra   r  isinfabs)a_vb_vrtolatol	equal_nan	a_v_isnan	b_v_isnans          r&   _allclose_scalarsrd  ,  s    II  I (u  Y  	5	 8C== 	BHSMM 	#:6#)tdRVC#I->->&>>>>54r%   allclosec                 @   t          |           st          d          t          |          st          d          t          |t          j                  st          d          t          |t          j                  st          d          t          |t          j                  st          d          t          | t          j                  }t          |t          j                  }|r
|r	 	 dd	}|S |r
|s	 	 dd
}|S |s
|r	 	 dd}	|	S |s
|s
	 	 dd}
|
S d S d S )Nz)The first argument "a" must be array-likez*The second argument "b" must be array-likez2The third argument "rtol" must be a floating pointz3The fourth argument "atol" must be a floating pointz0The fifth argument "equal_nan" must be a booleanrV  rW  Fc                 *    t          | ||||          S )Nr_  r`  ra  )rd  r-   br_  r`  ra  s        r&   np_allclose_impl_scalar_scalarz3np_allclose.<locals>.np_allclose_impl_scalar_scalar`  s$    $Q4/8: : : :r%   c                     t          j        |          }t          j        |          D ]+}t          | |                                |||          s dS ,dS Nrh  FTra   asarrayrb   rd  rc   )r-   rj  r_  r`  ra  bvs         r&   np_allclose_impl_scalar_arrayz2np_allclose.<locals>.np_allclose_impl_scalar_arrayf  sc    
1Aill ! !(BGGIIDt3<> > > ! 55! 4r%   c                     t          j        |           } t          j        |           D ]+}t          |                                ||||          s dS ,dS rm  rn  )r-   rj  r_  r`  ra  avs         r&   np_allclose_impl_array_scalarz2np_allclose.<locals>.np_allclose_impl_array_scalarp  sc    
1Aill ! !(ADt3<> > > ! 55! 4r%   c                 4   t          j        |           } t          j        |          }t          j        | |          \  }}t          j        ||f          D ]@\  }}t	          |                                |                                |||          s dS AdS rm  )ra   ro  broadcast_arraysrb   rd  rc   )	r-   rj  r_  r`  ra  a_ab_brs  rp  s	            r&   np_allclose_impl_array_arrayz1np_allclose.<locals>.np_allclose_impl_array_arrayz  s    
1A
1A*1a00HC)S#J// ! !B(BGGIID.2iI I I ! 55! 4r%   rV  rW  F)r   	TypeErrorrT   r   r  r   BooleanNumber)r-   rj  r_  r`  ra  is_a_scalaris_b_scalarrk  rq  rt  ry  s              r&   np_allcloser  F  s    A ECDDDA FDEEEdEK(( * ) * * 	* dEK(( , + , , 	, i// # " # # 	# Q--KQ--K (,{ (,BG5:	: 	: 	: 	: .-	 ",[ ",AF49	 	 	 	 -, ,[ ,AF49	 	 	 	 -, , ,@E38	 	 	 	 ,+, , , ,r%   anyc                     d }|S )Nc                 b    t          j        |           D ]}|                                r dS dS r   r`   rS  s     r&   flat_anyznp_any.<locals>.flat_any  s:    1 	 	Avvxx ttur%   r$   )r-   r  s     r&   np_anyr    s       Or%   c                     |t          |t          j                  rdd}n%|t          |t          j                  rdd}ndd}|S )Nc                 R    t          j        |           } t          j        |           S r,   )ra   ro  r   rd   rY   weightss      r&   np_average_implz#np_average.<locals>.np_average_impl  s    *S//C73<<r%   c                 r   t          j        |           } t          j        |          }| j        |j        k    r+|t          d          |j        dk    rt          d          t          j        |          }|dk    rt          d          t          j        t          j        | |                    |z  }|S )NzCNumba does not support average when shapes of a and weights differ.r)   z81D weights expected when shapes of a and weights differ.        z)Weights sum to zero, can't be normalized.)ra   ro  r   r{  r|   sumZeroDivisionErrormultiply)rd   rY   r  sclavgs        r&   r  z#np_average.<locals>.np_average_impl  s    joo*W--9--|'45 5 5 |q(('45 5 5 fWoo#::+CE E E fR[g6677#=
r%   c                      t          d          )Nz)Numba does not support average with axis.)r{  r  s      r&   r  z#np_average.<locals>.np_average_impl  s     KLLLr%   NN)rT   r   NoneType)rd   rY   r  r  s       r&   
np_averager    s     *Wen==	  	  	  	  	  <:dEN;;<    ,M M M M r%   c                     t          | t          j        t          j        f          rt          j        S t          d             }|S )z$
    A generic isnan() function
    c                     dS r   r$   xs    r&   _trivial_isnanz!get_isnan.<locals>._trivial_isnan  s    5r%   )rT   r   r  r  ra   r  r	   )r   r  s     r&   	get_isnanr    sF     %%+u}566 x		 	 
		r%   c                 *    t          |           rd S d S )Nc                 <    t          j        |           j        dk    S r   ra   ro  r   r  s    r&   <lambda>znp_iscomplex.<locals>.<lambda>      A+q0 r%   r   r  s    r&   np_iscomplexr          10004r%   c                 *    t          |           rd S d S )Nc                 <    t          j        |           j        dk    S r   r  r  s    r&   r  znp_isreal.<locals>.<lambda>  r  r%   r  r  s    r&   	np_isrealr    r  r%   c                 
   t          |           }t          | t          j                  rt          | j                  }t          j        |t
          j                  t          | t          j                  rfd}nfd}|S )Nc                     | dS S r   r$   r  iscmplxs    r&   rI  ziscomplexobj.<locals>.impl  s    yuNr%   c                     S r,   r$   r  s    r&   rI  ziscomplexobj.<locals>.impl  s    Nr%   )determine_dtyperT   r   Optionalr   ra   
issubdtypecomplexfloating)r  dtrI  r  s      @r&   iscomplexobjr    s     
		B!U^$$ %QV$$mB 233G!U^$$ 	 	 	 	 	 	
	 	 	 	 	Kr%   c                     d }|S )Nc                 ,    t          j        |            S r,   )ra   r  r  s    r&   rI  zisrealobj.<locals>.impl  s    ?1%%%%r%   r$   r  rI  s     r&   	isrealobjr    s    
& & &Kr%   c                 0    t          |           fd}|S )Nc                     S r,   r$   )numrs   s    r&   rI  znp_isscalar.<locals>.impl  s    
r%   )r   )r  rI  rs   s     @r&   np_isscalarr    s.    


C    Kr%   c                 @    t          |          rdfd	}ndfd	}|S )Nc                     t          j        t          j        |            t          j        |                               S r,   ra   logical_andr[  signbitr  r   fns     r&   rI  zis_np_inf_impl.<locals>.impl  s/    >"(1++rr"*Q--/@/@AAAr%   c                     t          j        t          j        |            t          j        |                     |          S r,   r  r  s     r&   rI  zis_np_inf_impl.<locals>.impl  s1    >"(1++rr"*Q--/@/@#FFFr%   r,   r   )r  r   r  rI  s     ` r&   is_np_inf_implr    sk     3 G	B 	B 	B 	B 	B 	B 	B	G 	G 	G 	G 	G 	G Kr%   c                 D    t          d           }t          | ||          S )Nc                     | S r,   r$   r  s    r&   r  zisneginf.<locals>.<lambda>  s    A r%   r	   r  r  s      r&   isneginfr    s#    	++	&	&B!S"%%%r%   c                 D    t          d           }t          | ||          S )Nc                     |  S r,   r$   r  s    r&   r  zisposinf.<locals>.<lambda>  s    QB r%   r  r  s      r&   isposinfr    s#    	,,	'	'B!S"%%%r%   c                     | |k     S r,   r$   r-   rj  s     r&   	less_thanr        q5Lr%   c                     | |k    S r,   r$   r  s     r&   greater_thanr    r  r%   c                 :    | j         dk    rt          d          d S )Nr   z3zero-size array to reduction operation not possible)r   r}   r   s    r&   check_arrayr  "  s#    v{{NOOO {r%   c                 "     |r fd}n fd}|S )Nc                    t          j        |           }t          |           t          j        |          }t	          |                              d          }|D ]}|                                }t          j        |j                  rt          j        |j                  s|}K |j        |j                  r|}d|j        |j        k    r |j	        |j	                  r|}|S r   )
ra   ro  r  rb   r  r   rc   r  r   r   r-   rd   r  
return_valr   rf   comparison_ops         r&   rI  z!nan_min_max_factory.<locals>.impl*  s    *Q--C3Bbq))J 	+ 	+IIKK8JO,, +RXaf5E5E +!"JJ$}QVZ_== +%&

:?22(=AA +)*Jr%   c                 0   t          j        |           }t          |           t          j        |          }t	          |                              d          }|D ]8}|                                }t          j        |          s ||          s|}9|S r   )ra   ro  r  rb   r  r   rc   r  r  s         r&   rI  z!nan_min_max_factory.<locals>.impl;  s    *Q--C3Bbq))J ' 'IIKKx{{ '(=Q77 '%&
r%   r$   )r  is_complex_dtyperI  s   `  r&   nan_min_max_factoryr  (  sI     	 	 	 	 	 	"
	 
	 
	 
	 
	 Kr%   )r  Tc                 h   t          j        |           rt          j        |          r|S t          j        |           r"t          j        |          r| dk    |dk    k    S t          j        |           st          j        |          rdS t          | |z
            ||t          |          z  z   k    S )Nr   FrZ  )r  yr_  r`  ra  s        r&   _isclose_itemr  X  s    	x{{ 2rx{{ 2	! 2! 2A1q5!!	! 2 2u1q5zzTD3q66M111r%   c                    t          |           rt          |          st          d          t          | t          j                  rt          |t          j                  rd	d}nvt          | t          j                  rt          |t          j                  rd	d}n=t          | t          j                  rt          |t          j                  rd	d}nd	d}|S )
Nz+Inputs for `np.isclose` must be array-like.rV  rW  Fc                 2   |                      d          }|}t          j        t          |          t          j                  }t          t          |                    D ]}t          ||         ||||          ||<   |                     | j                  S Nr@  rC  ra   zerosrE   r   r2   r  r   	r-   rj  r_  r`  ra  r  r  r   r.   s	            r&   isclose_implzisclose.<locals>.isclose_implj  s    		"AA(3q6628,,C3s88__ G G&qtQdIFFA;;qw'''r%   c                 2   | }|                     d          }t          j        t          |          t          j                  }t          t          |                    D ]}t          |||         |||          ||<   |                     |j                  S r  r  r  s	            r&   r  zisclose.<locals>.isclose_impls  s    A		"A(3q6628,,C3s88__ G G&q!A$dIFFA;;qw'''r%   c                    t          j        | j        |j                  }t          j        | |          }t          j        ||          }t          j        t          |          t           j                  }t          t          j        ||f                    D ]B\  }	\  }
}t          |

                                |
                                |||          ||	<   Ct          j        ||          S Nr   )ra   broadcast_shapesr   broadcast_tor  rE   r   r   rb   r  rc   )r-   rj  r_  r`  ra  r   a_b_r   r.   rs  rp  s               r&   r  zisclose.<locals>.isclose_impl|  s    '99EE**BE**B(3r77"(333C(B8)<)<== 2 28B&rwwyy"''))T4'02 2A?3...r%   c                 (    t          | ||||          S r,   )r  ri  s        r&   r  zisclose.<locals>.isclose_impl  s     AtT9===r%   rz  )r   r   rT   r   r   r}  )r-   rj  r_  r`  ra  r  s         r&   iscloser  d  s   Q I$4Q$7$7 IGHHH!U[!!  >jEL&A&A  >	( 	( 	( 	( 	( 
Au|	$	$ >Au{)C)C >	( 	( 	( 	( 	( 
Au{	#	# >
1ek(B(B >		/ 		/ 		/ 		/ 		/	> 	> 	> 	> r%   c                 z    t          |           }t          j        |t          j                  rt          S t
          S r,   )r  ra   r  r  complex_nanminreal_nanminr-   r  s     r&   	np_nanminr    2    			B	}R+,, r%   c                 z    t          |           }t          j        |t          j                  rt          S t
          S r,   )r  ra   r  r  complex_nanmaxreal_nanmaxr  s     r&   	np_nanmaxr    r  r%   c                 r    t          | t          j                  sd S t          | j                  fd}|S )Nc                     d}d}t          j        |           D ]=}|                                } |          s||                                z  }|dz  }>t          j        ||          S Nr  r   r)   )ra   rb   rc   divide)r-   re   countr   rf   r  s        r&   nanmean_implz np_nanmean.<locals>.nanmean_impl  sn    IaLL 	 	D		A588 QVVXX
yE"""r%   rT   r   r   r  r   )r-   r  r  s     @r&   
np_nanmeanr     sL    a%% agE	# 	# 	# 	# 	# r%   c                 r    t          | t          j                  sd S t          | j                  fd}|S )Nc                 Z   t          j        |           }d}d}t          j        |           D ]i}|                                } |          sH|                                |z
  }|t          j        |t          j        |          z            z  }|dz  }jt          j        ||          S r  )ra   nanmeanrb   rc   r   r   r  )r-   r   r   r  r   rf   r   r  s          r&   nanvar_implznp_nanvar.<locals>.nanvar_impl  s    JqMM IaLL 	 	D		A588 vvxx!|rwsRWS\\1222
ye$$$r%   r  )r-   r  r  s     @r&   	np_nanvarr    sL    a%% agE% % % % %  r%   c                 D    t          | t          j                  sd S d }|S )Nc                 0    t          j        |           dz  S r   )ra   nanvarr   s    r&   nanstd_implznp_nanstd.<locals>.nanstd_impl  s    y||s""r%   r   )r-   r	  s     r&   	np_nanstdr
    s2    a%% # # # r%   c                     t          | t          j                  sd S t          | j        t          j                  rt          j        }n| j        } |d          t          | j                  fd}|S )Nr   c                     }t          j        |           D ]&}|                                } |          s||z  }'|S r,   r`   )r-   re   r   rf   r  rg   s       r&   nansum_implznp_nansum.<locals>.nansum_impl  sK    IaLL 	 	D		A588 Qr%   rT   r   r   r   Integerr4   r  )r-   r   r  r  rg   s      @@r&   	np_nansumr    s    a%% !'5=)) 
588DagE      r%   c                     t          | t          j                  sd S t          | j        t          j                  rt          j        }n| j        } |d          t          | j                  fd}|S )Nr)   c                     }t          j        |           D ]&}|                                } |          s||z  }'|S r,   r`   )r-   re   r   rf   r  ones       r&   nanprod_implz np_nanprod.<locals>.nanprod_impl  sK    IaLL 	 	D		A588 Qr%   r  )r-   r   r  r  r  s      @@r&   
np_nanprodr    s    a%% !'5=)) 

%((CagE      r%   c                     t          | t          j                  sd S t          | j        t          j        t          j        f          rd S | j        t                     d          fd}|S )Nc                 *    t          j        |           S r,   )ra   r   r   s    r&   r  znp_nancumprod.<locals>.<lambda>  s    A r%   r)   c                     t          j        | j                  }}t          | j                  D ]\  }} |           r||z  }|||<   |S r,   r   )r-   r   re   r   rf   is_nanr  r   s        r&   nancumprod_implz&np_nancumprod.<locals>.nancumprod_impl  sc    (165))CA#AF++  QF1II: FACJr%   rT   r   r   r   r|  r  r  )r-   r  r  r  r   s     @@@r&   np_nancumprodr    s    a%% !'EM5=9:: &&&5!!eAhh	 	 	 	 	 	 	 r%   c                     t          | t          j                  sd S t          | j        t          j        t          j        f          rd S | j        t                     d          fd}|S )Nc                 *    t          j        |           S r,   )ra   r   r   s    r&   r  znp_nancumsum.<locals>.<lambda>$  s    1 r%   r   c                     t          j        | j                  }}t          | j                  D ]\  }} |           r||z  }|||<   |S r,   r   )r-   r   re   r   rf   r  r   rg   s        r&   nancumsum_implz$np_nancumsum.<locals>.nancumsum_impl*  sc    (165))CA#AF++  QF1II: FACJr%   r  )r-   r   r  r   rg   s     @@@r&   np_nancumsumr!    s    a%% !'EM5=9:: %%%5!!uQxx	 	 	 	 	 	 	 r%   c                 h    t          |           }t          |          dk    rt          d          |S )Nr   z&zero-size array reduction not possible)_asarrayrE   r}   r-   rd   s     r&   prepare_ptp_inputr%  6  s0    
1++C
3xx1}}ABBB
r%   c                 R     t          |t          j                  r fd}n fd}|S )Nc                      |j         | j                   r|S |j         | j         k    r |j        | j                  r|S | S r,   r   current_valr   r   s     r&   rI  z+_compute_current_val_impl_gen.<locals>.implF  sU    r#(K,-- 
(k...38[%566 /
r%   c                 $     ||           r|n| S r,   r$   r(  s     r&   rI  z+_compute_current_val_impl_gen.<locals>.implN  s    "S+..?33K?r%   )rT   r   r  )r   r)  r   rI  s   `   r&   _compute_current_val_impl_genr+  ?  sY    +u}-- @	 	 	 	 	 		@ 	@ 	@ 	@ 	@Kr%   c                     d S r,   r$   r)  r   s     r&   _compute_a_maxr.  S      Dr%   c                     d S r,   r$   r-  s     r&   _compute_a_minr1  W  r/  r%   c                 8    t          t          j        | |          S r,   )r+  operatorgtr-  s     r&   _compute_a_max_implr5  [      (k3GGGr%   c                 8    t          t          j        | |          S r,   )r+  r3  ltr-  s     r&   _compute_a_min_implr9  `  r6  r%   c                     d S r,   r$   )r   s    r&   _early_returnr;  e  r/  r%   c                     dt          | t          j                  rfd}n%t          | t          j                  rfd}nfd}|S )Nr   c                     t          j        | j                  rHt          j        | j                  rdt           j        t           j        dz  z   fS dt           j        dz   fS dfS )NT              ?y                F)ra   r  r   r   nanr   UNUSEDs    r&   rI  z _early_return_impl.<locals>.implm  s^    x!! %8CH%% -"&2+!555",,f}$r%   c                 P    t          j        |           rdt           j        fS dfS r   )ra   r  r?  r@  s    r&   rI  z _early_return_impl.<locals>.implv  s)    x}} %RV|#f}$r%   c                     dfS r   r$   r@  s    r&   rI  z _early_return_impl.<locals>.impl|  s    &= r%   )rT   r   r  r  )r   rI  rA  s     @r&   _early_return_implrD  i  s    F#u}%% !	% 	% 	% 	% 	% 	% 
C	%	% !	% 	% 	% 	% 	% 	%	! 	! 	! 	! 	!Kr%   ptpc                     t          | d          r.t          | j        t          j                  rt          d          d }|S )Nr   +Boolean dtype is unsupported (as per NumPy)c                    t          |           }|j        }|d         }|d         }t          |j                  D ]B}||         }t	          |          \  }}|r|c S t          ||          }t          ||          }C||z
  S r   )r%  r   r2   r   r;  r.  r1  )	r-   rd   a_flata_mina_maxr.   r   take_branchretvals	            r&   np_ptp_implznp_ptp.<locals>.np_ptp_impl  s    ""q	q	sx 	/ 	/A)C"/"4"4K "5#..E"5#..EEu}r%   )hasattrrT   r   r   r|  r   )r-   rN  s     r&   np_ptprP    sT     q' Magu}-- 	MKLLL  " r%   c                 f    t          j        |           rdS t          j        |          rdS | |k     S r"   )ra   r  r  s     r&   nan_aware_less_thanrR    s5    	x{{ u8A;; 	4q5Lr%   c                      d fd	}|S )Nc                     ||z   dz	  } 	| |         | |                   r0| |         | |         c| |<   | |<   r||         ||         c||<   ||<    	| |         | |                   r0| |         | |         c| |<   | |<   r||         ||         c||<   ||<    	| |         | |                   r0| |         | |         c| |<   | |<   r||         ||         c||<   ||<   | |         }| |         | |         c| |<   | |<   r||         ||         c||<   ||<   |}|dz
  }	 ||k     r/ 	| |         |          r|dz  }||k     r 	| |         |          ||k    r/ 	|| |                   r|dz  }||k    r 	|| |                   ||k    rn;| |         | |         c| |<   | |<   r||         ||         c||<   ||<   |dz  }|dz  }| |         | |         c| |<   | |<   r||         ||         c||<   ||<   |S Nr)   r$   )
AlowhighImidpivotr.   jargpartition	pivotimpls
           r&   
_partitionz&_partition_factory.<locals>._partition  s   Tza 9QsVQsV$$ 	0sVQsVNAcFAcF 0!"33##9QtWaf%% 	2fagOAdGQsV 2"#C&!D'$39QsVQsV$$ 	0sVQsVNAcFAcF 0!"33###C&!D'$3 	.fagOAdGQsV1H	d((yy1u55(Q d((yy1u55(s((yy!55(Q s((yy!55(Avv1qtJAaD!A$ (qT1Q4
!adFAFA	 $1!ag 	*dGQqTMAaD!D'r%   r,   r$   )r^  r]  r_  s   `` r&   _partition_factoryr`    s0    , , , , , , ,Z r%   )r]  c                      d fd	}|S )Nc                      | |||          }||k    r3||k     r|dz   } | |||          }n|dz
  } | |||          }||k    3| |         S )zJ
        Select the k'th smallest element in array[low:high + 1].
        r)   r$   )r  krW  rX  r   r.   partitionimpls         r&   _selectz _select_factory.<locals>._select  s     M$T3//1ff1uu!e!M$T3771u!M$T377 1ff Awr%   r,   r$   )rd  re  s   ` r&   _select_factoryrf    s(          Nr%   c                     	 ||k    sJ t          | ||          }||k     r|dz   }nD||dz   k    r|dz
  }n5||k    rt          | |dz   |dz   |           nt          | |||dz
             nj| |         | |dz            fS )z
    Select the k'th and k+1'th smallest elements in array[low:high + 1].

    This is significantly faster than doing two independent selections
    for k and k+1.
    Tr)   )r_  re  )r  rc  rW  rX  r.   s        r&   _select_tworh    s    czzzztS$''q55a%CCQYYq5DD!VVD!a%Q---D!S!a%((( 7DQKr%   c                     d}|dz
  }|dz	  }|dz  dk    r t          | |dz
  ||          \  }}||z   dz  S t          | |||          S )zt
    The main logic of the median() call.  *temp_arry* must be disposable,
    as this function will mutate it.
    r   r)   r{   )rh  re  )	temp_arrynrW  rX  halfr-   rj  s          r&   _median_innerrm    se     Cq5D6D1uzz9dQhT::1A{y$T222r%   c                 D    t          | t          j                  sd S d }|S )Nc                 d    |                                  }|j        d         }t          ||          S r   )flattenr   rm  )r-   rj  rk  s      r&   median_implznp_median.<locals>.median_impl)  s-     IIKK	OAY***r%   r   )r-   rq  s     r&   	np_medianrr  $  s2    a%% + + + r%   c                    t          |           }|dk    r6t          j        t          |          | d         t          j                  }nt          j        t          |          t          j                  }t          t          |                    D ]}||         }|dk    r^t          j        |           }t          j        t          j        |                      r!t          j        |           rt          j	        }nW|dk    rt          j
        |           }t          j        t          j        |                      rt          j        | t          j        k              }t          j        | t          j         k              }|||z   z
  }	|	dk    rt          j	        }|dk    r|dk    rt          j	        }|dk    rt          j	        }|	dk    r|dk    r|dk    rt          j	        }nnd|dz
  t          j        |d          z  z   }
t          j        |
          }|
|z
  }t!          | t#          |dz
            d|dz
            \  }}|d|z
  z  ||z  z   }|||<   |S )Nr)   r   r  d   r{         Y@)rc  rW  rX  )rE   ra   r   r   r   r2   r  rP  isfiniter?  r   r  inftrue_dividemathfloorrh  int)r-   qrk  r   r.   
percentiler   num_pos_infnum_neg_inf
num_finiterankfr   loweruppers                  r&   _collect_percentiles_innerr  3  s&    	AAAvvgc!ffad"*555hs1vvRZ000s1vv %	 %	A1J S  fQiiF2;q>>*** %C((( % f qfQiiF2;q>>*** -"$&bf"5"5K"$&rvg"6"6K!"kK&?!@J!Q f"a''AFF f"Q f!Q&??*a//&(f AER^J%F%FFFJt$$1H*1AE

QPPPuq1uo	1CFFJr%   c                     |r| |          } t          |           dk    rdS nt          j        |          rdS t          |           dk    r| d         }t          j        |          S dS )Nr   Fr)   T)rE   ra   r  rv  )r-   nan_maskskip_nanr   s       r&   _can_collect_percentilesr  h  st     xiLq66Q;;5  6( 	5
1vv{{d{3tr%   c                    d}| j         dk    rY| j        dk     rNt          | j                  D ]8}| |         dk     s&| |         |k    st          j        | |                   rd} n9nXt          j        t          j        |                     s0t          j        | dk               st          j        | |k              rd}|S )NTr)   
   r  F)r|   r   r2   ra   r  r  )r|  q_upper_boundvalidr.   s       r&   check_validr  y  s    E 	v{{qv{{qv 	 	AtczzQqTM11RXad^^1 2 6"(1++ 	"&S// 	RVA<M5N5N 	ELr%   c                 F    t          | d          st          d          d S )Nru  r  z)Percentiles must be in the range [0, 100]r  r}   r|  s    r&   percentile_is_validr    s3    q... FDEEEF Fr%   c                 F    t          | d          st          d          d S )NrY  r  z%Quantiles must be in the range [0, 1]r  r  s    r&   quantile_is_validr    s3    q,,, B@AAAB Br%   c                    t          j        |t           j                                                  } ||           ||z  }t          j        | t           j                                                  }t          j        |          }t          |||          r||          }t          ||          }n,t          j        t          |          t           j	                  }|S r  )
ra   ro  r   rp  r  r  r  r   rE   r?  )r-   r|  check_qfactorr  rj  r  r   s           r&   _collect_percentilesr    s    

1BJ'''//11AGAJJJ	F
A
1BJ///7799Ix	""H	8X>> &xi(	(A66gc!ffbf%%Jr%   c                 @   t          |           }t          j        |t          j                  rt	          d          fd}fd}t          |t          j        t          j        f          r|S t          |t          j	                  r|j
        dk    r|S |S )z
    The underlying algorithm to find percentiles and quantiles
    is the same, hence we converge onto the same code paths
    in this inner function implementation
    zNot supported for complex dtypec                 6    t          | |          d         S r   r  r-   r|  r  r  r  s     r&   np_percentile_q_scalar_implz?_percentile_quantile_inner.<locals>.np_percentile_q_scalar_impl  s    #Aq'68DDQGGr%   c                 *    t          | |          S r,   r  r  s     r&   np_percentile_implz6_percentile_quantile_inner.<locals>.np_percentile_impl  s    #Aq'68DDDr%   r   )r  ra   r  r  r   rT   r   r}  r|  r   r|   )r-   r|  r  r  r  r  r  r  s     ```   r&   _percentile_quantile_innerr    s     
		B	}R+,, =;<<<H H H H H H HE E E E E E E !elEM233 "**	Au{	#	# "!**!!r%   c                 4    t          | |ddt                    S )NFrY  r  r  r  r  r  r-   r|  s     r&   np_percentiler    s%    %	1uS2E   r%   c                 4    t          | |ddt                    S )NTrY  r  r  r  s     r&   np_nanpercentiler    s%    %	1tC1D   r%   c                 4    t          | |ddt                    S )NFru  r  r  r  r  s     r&   np_quantiler    s%    %	1uU4E   r%   c                 4    t          | |ddt                    S )NTru  r  r  r  s     r&   np_nanquantiler    s%    %	1tE3D   r%   c                 r    t          | t          j                  sd S t          | j                  fd}|S )Nc                 
   t          j        | j        | j                  }d}t          j        |           D ]+}|                                } |          s
|||<   |dz  },|dk    rt           j        S t          ||          S Nr   r)   )ra   r   r   r   rb   rc   r?  rm  )r-   rj  rk  r   rf   r  s        r&   nanmedian_implz$np_nanmedian.<locals>.nanmedian_impl  s    HQVQW--	IaLL 	 	D		A588  	!Q 666MY***r%   r  )r-   r  r  s     @r&   np_nanmedianr    sL    a%% agE+ + + + +  r%   c                    t          j        |           }t          j        | j        d d                   }|D ]N}| |                                         }d}t          |          dz
  }|D ]}t          ||||           |}|||<   O|S )Nr@  r   r)   )ra   
empty_likendindexr   copyrE   _select_w_nan)	r-   	kth_arrayr   r   sr  rW  rX  kths	            r&   np_partition_impl_innerr    s    
 -

C
*QWSbS\
"
"C 	 	tyy{{4yy1} 	 	C$S$///CCAJr%   c           	      n   t          j        | t           j                  }t          j        | j        d d                   }|D ]p}| |                                         }t          j        t          |                    }d}t          |          dz
  }|D ]}	t          ||	|||           |	}|||<   q|S )Nr  r@  r   r)   )	ra   r  r4   r  r   r  arangerE   _arg_select_w_nan)
r-   r  r   r   r  r  idx_arryrW  rX  r  s
             r&   np_argpartition_impl_innerr    s    
 -
)
)
)C
*QWSbS\
"
"C 
 
tyy{{9SYY''4yy1} 	 	CdCdH===CCAJr%   c                    t          |                              t          j                  }|j        dk    rt          d          t          j        t          j        |          | j        d         k              rt          d          t          j	        |          }t          j
        |          D ]$\  }}|dk     r|| j        d         z   ||<   |||<   %t          j        |          S )a  
    Returns a sorted, unique array of kth values which serve
    as indexers for partitioning the input array, a.

    If the absolute value of any of the provided values
    is greater than a.shape[-1] an exception is raised since
    we are partitioning along the last axis (per Numpy default
    behaviour).

    Values less than 0 are transformed to equivalent positive
    index values.
    r)   zkth must be scalar or 1-Dr@  zkth out of boundsr   )r#  astypera   r   r|   r}   r  r\  r   r  ndenumerateunique)r-   r  r  r   indexr   s         r&   
valid_kthsr  "  s     $$RX..I~4555 
vbfY172;.// .,---
-	
"
"CnY//  
s77qwr{*CJJCJJ9S>>r%   c                    t          | t          j        t          j        t          j        f          st          d          t          | t          j                  r| j        dk    rt          d          t          |d|          }t          |t          j        t          j	        f          st          d          d }|S )N(The first argument must be an array-liker   3The first argument must be at least 1-D (found 0-D)r   Partition index must be integerc                     t          |           }|j        dk    r|                                S t          ||          }t	          ||          S r   )r#  r   r  r  r  r-   r  a_tmpr  s       r&   np_partition_implz'np_partition.<locals>.np_partition_implS  sE    :??::<<"5#..I*5)<<<r%   
rT   r   r   SequencerW   r{  r|   r   r|  r  )r-   r  kthdtr  s       r&   np_partitionr  E  s     a%+u~u{CDD DBCCC!U[!! OafkkMNNNC#&&EeemU];<< ;9:::= = = r%   c                    t          | t          j        t          j        t          j        f          st          d          t          | t          j                  r| j        dk    rt          d          t          |d|          }t          |t          j        t          j	        f          st          d          d }|S )Nr  r   r  r   r  c                     t          |           }|j        dk    r'|                                                    d          S t	          ||          }t          ||          S )Nr   r4   )r#  r   r  r  r  r  r  s       r&   np_argpartition_implz-np_argpartition.<locals>.np_argpartition_impll  sS    :??::<<&&v..."5#..I-eY???r%   r  )r-   r  r  r  s       r&   np_argpartitionr  ^  s     a%+u~u{CDD DBCCC!U[!! OafkkMNNNC#&&EeemU];<< ;9:::@ @ @  r%   c                 .   t          d|           t          d|          f}t          j        |t          j                  }t	          |d                   D ]>}t          t          d||z   dz             |d                   }d||d |f<   d|||d f<   ?|S )Nr   r  r)   )r  ra   r   r   r2   r   )NMrc  r   r   r.   m_maxs          r&   	_tri_implr  z  s    1IIs1ayy E
(5

+
+
+C58__  C1q519%%uQx00AvvIAuvvIJr%   c                 .    t          |d           dd}|S )Nrc  r   c                 ,    || }t          | ||          S r,   )r  )r  r  rc  s      r&   tri_implznp_tri.<locals>.tri_impl  s    9AAq!!!r%   r   )r   )r  r  rc  r  s       r&   np_trir    s/     Q" " " "
 Or%   c                     | j         dk    sJ t          |           }t          j        ||f| j                  }t          |          D ]}| ||<   |S )zq
    Takes a 1d array and tiles it to form a square matrix
    - i.e. a facsimile of np.tile(m, (len(m), 1))
    r)   r  )r|   rE   ra   r   r   r2   )r   len_mr   r.   s       r&   _make_squarer    s]     6Q;;;;FFE
(E5>
1
1
1C5\\  AJr%   c                     t          j        | j        d         | j        d         |                              t           j                  }t          j        || t          j        | | j                            S Nr@  r  rc  r  ra   trir   r  uintwhere
zeros_liker   r   rc  masks      r&   np_tril_impl_2dr    sY    6!'"+22299"'BBD8D!R]1AG<<<===r%   c                 t    t          |d           dd}dd}| j        dk    r|S | j        dk    rt          S |S )Nrc  r   c                 @    t          |           }t          ||          S r,   )r  r  r   rc  m_2ds      r&   np_tril_impl_1dz my_tril.<locals>.np_tril_impl_1d      AtQ'''r%   c                    t          j        | j        d         | j        d         |                              t           j                  }t          j        | j        d d                   }t          j        |           }t          j        || j                  }|D ]!}t          j	        || |         |          ||<   "|S r  
ra   r  r   r  r  r  r  r  r   r  r   rc  r  r   zzero_optsels          r&   np_tril_impl_multiz#my_tril.<locals>.np_tril_impl_multi  s    vagbkQWR[A666==bgFFj"&&M!=QW555 	6 	6CXdAcFH55AcFFr%   r)   r{   r   )r   r|   r  )r   rc  r  r  s       r&   my_trilr    sf     Q( ( ( (    	v{{	
1!!r%   c                     t          | d           t          |d           t          |          st          |d           dd}|S )Nrk  rc  r   r   c                 T    t          j        t          j        | ||                    S )Nrc  ra   nonzeror  rk  rc  r   s      r&   np_tril_indices_implz-np_tril_indices.<locals>.np_tril_indices_impl  s#    z"&A+++,,,r%   r   Nr   r   )rk  rc  r   r  s       r&   np_tril_indicesr    s\     QQq>> !C   - - - -r%   c                 b    t          |d           | j        dk    rt          d          dd}|S )Nrc  r{   input array must be 2-dr   c                 \    t          j        | j        d         || j        d                   S Nr   r)   )rc  r   )ra   tril_indicesr   rd   rc  s     r&   np_tril_indices_from_implz7np_tril_indices_from.<locals>.np_tril_indices_from_impl  %    sy|qCIaLAAAAr%   r  r   r|   r   )rd   rc  r  s      r&   np_tril_indices_fromr    L     Q
x1}}3444B B B B$$r%   c                     t          j        | j        d         | j        d         |dz
                                t           j                  }t          j        |t          j        | | j                  |           S Nr  r@  r)   r  r  r  r  s      r&   np_triu_impl_2dr    s]    6!'"+A666==bgFFD8D"-9991===r%   c                 t    t          |d           dd}dd}| j        dk    r|S | j        dk    rt          S |S )Nrc  r   c                 @    t          |           }t          ||          S r,   )r  r  r  s      r&   np_triu_impl_1dz my_triu.<locals>.np_triu_impl_1d  r  r%   c                    t          j        | j        d         | j        d         |dz
                                t           j                  }t          j        | j        d d                   }t          j        |           }t          j        || j                  }|D ]!}t          j	        ||| |                   ||<   "|S r  r  r  s          r&   np_triu_impl_multiz#my_triu.<locals>.np_triu_impl_multi  s    vagbkQWR[AE:::AA"'JJj"&&M!=QW555 	6 	6CXdHaf55AcFFr%   r)   r{   r  )r   r|   r  )r   rc  r  r  s       r&   my_triur    sf     Q( ( ( (    	v{{	
1!!r%   c                     t          | d           t          |d           t          |          st          |d           dd}|S )Nrk  rc  r   r   c           	      `    t          j        dt          j        | ||dz
            z
            S )Nr)   r   r  r  s      r&   np_triu_indices_implz-np_triu_indices.<locals>.np_triu_indices_impl  s,    z!bfQQU3333444r%   r  r  )rk  rc  r   r  s       r&   np_triu_indicesr    s\     QQq>> !C   5 5 5 5r%   c                 b    t          |d           | j        dk    rt          d          dd}|S )Nrc  r{   r	  r   c                 \    t          j        | j        d         || j        d                   S r  )ra   triu_indicesr   r  s     r&   np_triu_indices_from_implz7np_triu_indices_from.<locals>.np_triu_indices_from_impl  r  r%   r  r  )rd   rc  r#  s      r&   np_triu_indices_fromr$    r  r%   c                     d S r,   r$   rd   s    r&   _prepare_arrayr'    r/  r%   c                 .    | d t           j        fv rd S d S )Nc                 *    t          j        d          S )Nr$   ra   arrayr&  s    r&   r  z%_prepare_array_impl.<locals>.<lambda>&  s    28B<< r%   c                 D    t          |                                           S r,   )r#  rB  r&  s    r&   r  z%_prepare_array_impl.<locals>.<lambda>(  s    8C==..00 r%   r   noner&  s    r&   _prepare_array_implr/  #  s&    
tUZ   '''000r%   c                 t   | }	 t          |t          j        t          j        f          rt	          |          S t          |dd           }| |            dk    rt          j        S t          |dd           }|t          d          t          |t          j	                  r|j
        }nt	          |          S )NT__len__r   r   ztype has no dtype attr)rT   r   r}  r|  r
   r   ra   r   r{  r  r   )inobjobjlr  s       r&   _dtype_of_compoundr5  +  s    
C cEL%-899 	!C== CD))=QQSSAXX:S'4((:4555c5>** 	 )CCB<< r%   c                    t          | t          j                  r.t          | j        t          j                  rt          d          t          |           }d }t          |          st          |          }d }t          |          st          |          }|&t          j	        ||          sd}t          |          |&t          j	        ||          sd}t          |          dd}|S )NrG  z3dtype of to_begin must be compatible with input aryz1dtype of to_end must be compatible with input aryc                 r   t          |          }t          |           }t          |          }|j        }t          |          dk    rt          j        t          |          t          |          z   t          |          z   dz
  |          }t          |          }t          |          t          |          z   dz
  }	||d |<   t          j        |          |||	<   |||	d <   nPt          j        t          |          t          |          z   |          }t          |          }||d |<   |||d <   |S )Nr   r)   r  )r'  r   rE   ra   r   diff)
aryto_endto_beginstartrZ  end	out_dtyper   	start_idxmid_idxs
             r&   np_ediff1d_implz#np_ediff1d.<locals>.np_ediff1d_implV  s%   x((S!!V$$I	 s88a<<(CJJS1CHH<q@!*, , ,CE

I%jj3s88+a/G#C

O%'WS\\C	'!"CMM(CJJS1)DDDCE

I#C

O!C	

O
r%   r  )
rT   r   r   r   r|  r   r5  r   ra   can_cast)r9  r:  r;  ary_dtto_begin_dt	to_end_dtr   rA  s           r&   
np_ediff1drF  <  s    #u{## Pci// 	P !NOOO
  $$FK!! 3(22I /&v..	r{;'G'GCS!!!R[F%C%CAS!!!   6 r%   c                     d S r,   r$   r&  s    r&   _select_elementrH  t  r/  r%   c                 D    t          | dd           dk    }|rd }|S d }|S )Nr|   r   c                 V    t          j        d| j                  }| |d d <   |d         S )Nr)   r  r   )ra   r+  r   )rd   r  s     r&   rI  z"_select_element_impl.<locals>.impl|  s.    SY///AAaaaDQ4Kr%   c                     | S r,   r$   r&  s    r&   rI  z"_select_element_impl.<locals>.impl  s    Jr%   r   )rd   zerodrI  s      r&   _select_element_implrO  x  sJ    C&&!+E 		 	 	 	 	 	r%   c                     d S r,   r$   )dxr  s     r&   _get_drR    r/  r%   c                 2    t          |           rd }nd }|S )Nc                 *    t          j        |          S r,   ra   ro  r  rQ  s     r&   rI  zget_d_impl.<locals>.impl  s    :b>>!r%   c                 N    t          j        t          j        |                     S r,   )ra   r8  ro  rV  s     r&   rI  zget_d_impl.<locals>.impl  s    72:a==)))r%   r  )r  rQ  rI  s      r&   
get_d_implrX    s8    1~~ *	" 	" 	" 	"	* 	* 	*Kr%   rY  c                     t          | t          j        t          j        f          rt	          d          t          | t          j                  r| j        dk    rt	          d          dd}|S )Nzy cannot be a scalarr   zy cannot be 0DrY  c                    t          j        |           }t          ||          }|dt          dd           f         |dt          d d          f         z   dz  }t          j        ||z  d          }t          |          }|S )N.r)   r@         @)ra   ro  rR  rN   r  rH  )r  r  rQ  yarrdy_averet	processeds           r&   rI  znp_trapz.<locals>.impl  sw    z!}}1bMMc5D>>)*T#uT22F-GG3NfQY###C((	r%   NrY  )rT   r   r}  r|  r   r   r|   )r  r  rQ  rI  s       r&   np_trapzrb    sv     !elEM233 ,0111	Au{	#	# ,!*+++
    Kr%   c                    |j         \  }}|t          |           k    sJ ||k    sJ |rMt          |          D ];}|dk    r
d|dd|f<   t          j        | |dd|dz
  f                   |dd|f<   <dS t          |dz
  dd          D ]>}||dz
  k    r
d|dd|f<   t          j        | |dd|dz   f                   |dd|f<   ?dS )a*  
    Generate an N-column Vandermonde matrix from a supplied 1-dimensional
    array, x. Store results in an output matrix, out, which is assumed to
    be of the required dtype.

    Values are accumulated using np.multiply to match the floating point
    precision behaviour of numpy.vander.
    r   r)   Nr@  )r   rE   r2   ra   r  )r  r  
increasingr   r   rk  r.   s          r&   
_np_vanderre    s    9DAqA;;;;6666 <q 	< 	<AAvvAAAqD		K3qqq1q5z?;;AAAqD				< 	< q1ub"%% 	< 	<AAEzzAAAqD		K3qqq1q5z?;;AAAqD				< 	<r%   c                 d    | j         dk    rt          d          |dk     rt          d          d S )Nr)   z.x must be a one-dimensional array or sequence.r   z#Negative dimensions are not allowed)r|   r}   )r  r  s     r&   _check_vander_paramsrg    s;    vzzIJJJ1uu>??? ur%   c                 r   |d t           j        fvr)t          |t           j                  st	          d          dfd	}dd}t          | t           j                  r0t          | j                  }t          j	        |t                    |S t          | t           j        t           j        f          r|S d S )Nz,Second argument N must be None or an integerFc                     |t          |           }t          | |           t          j        t          |           t	          |          f          }t          | |||           |S r  )rE   rg  ra   r   r{  re  )r  r  rd  r   r   s       r&   np_vander_implz!np_vander.<locals>.np_vander_impl  sc    9AAQ""" hAA'u5551aS)))
r%   c                    |t          |           }t          j        |           }t          ||           t          j        t          |           t          |          f|j                  }t          ||||           |S r  )rE   ra   r+  rg  r   r{  r   re  )r  r  rd  x_arrr   s        r&   np_vander_seq_implz%np_vander.<locals>.np_vander_seq_impl  sq    9AAUA&&& hAA'u{;;;5!Z---
r%   r   )r   r.  rT   r  r   r   r
   r   ra   promote_typesr{  rW   r  )r  r  rd  rj  rm  x_dtr   s         @r&   	np_vanderrp    s    uz"""!U]++ 	NLMMM
 
 
 
 
 
    !U[!! "   s++	AU^4	5	5 "!!" "r%   c                     t          |t          j        t          j        f          st	          d          d }t          | t          j        t          j        f          rd S |S )Nzshift must be an integerc                     t          j        |           }t          j        |j        |j                  }|j        }t          |j                  D ]}||z   |j        z  }||         |j        |<    |S r  )ra   ro  r   r   r   r   r2   r   )r-   shiftrd   r   arr_flatr.   r   s          r&   np_roll_implznp_roll.<locals>.np_roll_impl  sm    jmmhsy	222 8sx 	( 	(Au9(C$QKCHSMM
r%   c                 *    t          j        |           S r,   rU  )r-   rs  s     r&   r  znp_roll.<locals>.<lambda>
	  s    
1 r%   )rT   r   r  r|  r   r}  )r-   rs  ru  s      r&   np_rollrw    sg    eemU];<< 64555
 
 
 !elEM233 ---r%      c                    d}|}| ||dz
           k    r|S | |d         k     rdS |dk    r0d}||k     r#| ||         k    r|dz  }||k     r| ||         k    |dz
  S ||dz
  k    r|dz
  }|dk     rd}| ||         k     rC| ||dz
           k     r/|dz
  }|t           k    r| ||t           z
           k    r
|t           z
  }n^|dz
  S | ||dz            k     r|S | ||dz            k     r|dz   S |dz   }||t           z
  dz
  k     r| ||t           z            k     r
|t           z   }||k     r%|||z
  dz	  z   }| ||         k    r|dz   }n|}||k     %|dz
  S )Nr   r)   r@     rz   r{   )LIKELY_IN_CACHE_SIZE)keyrd   lengthguessiminimaxr.   imids           r&   binary_search_with_guessr  	  s    DD S!_	s1vr {{&jjSCF]]FA &jjSCF]]1uvz
qyy SZUQY19D +++3u';;<<<33 19 UQYL S^##qy  qyV&::Q>??s5+?#?@@@ #77D ++t)*#d)!8DDD ++ !8Or%   c                 	   t          j        |           }t          j        |          }t          j        |          }t          |          dk    rt          d          t          |          t          |          k    rt          d          |j        dk    r"t          j        |j        |d         |          S t          j        |j        |          }|j        }t          |          }	|d         }
||	dz
           }|	dk    r]|d         }|d         }t          |          D ];}|j	        |         }||k     r|
|j	        |<    ||k    r||j	        |<   1||j	        |<   <n&d}|	|k    rt          j        |	dz
  |          }nt          j        d|          }|j        ryt          |	dz
            D ]f}d||dz            ||         z
  z  }||dz            j
        ||         j
        z
  |z  }||dz            j        ||         j        z
  |z  }|d|z  z   ||<   gt          |          D ]]}|j	        |         }t          j        |          r|}d}|d|z  z   |j	        |<   9t          |||	|          }|d	k    r|
|j	        |<   \||	k    r||j	        |<   m||	dz
  k    r||         |j	        |<   ||         |k    r||         |j	        |<   |j        r	||         }nad||dz            ||         z
  z  }||dz            j
        ||         j
        z
  |z  }||dz            j        ||         j        z
  |z  }|d|z  z   }|j
        |||         z
  z  ||         j
        z   }t          j        |          rg|j
        |||dz            z
  z  ||dz            j
        z   }t          j        |          r,||         j
        ||dz            j
        k    r||         j
        }|j        |||         z
  z  ||         j        z   }t          j        |          rg|j        |||dz            z
  z  ||dz            j        z   }t          j        |          r,||         j        ||dz            j        k    r||         j        }|d|z  z   |j	        |<   _|S )
Nr   array of sample points is empty#fp and xp are not of the same size.r)   
fill_valuer   r  r>  r  r@  )ra   ro  rE   r}   r   r   r   r   r2   r   r   r   r  r  )r  xpfpr   dzrQ  dydreslenxlenxplvalrvalxp_valfp_valr.   x_valr\  slopesinv_dxr   r   slopes                         r&   np_interp_impl_complex_innerr  Z	  s    
AB	BB	BB
2ww!||:;;;
2ww#b''>???	w!||wrxBqE????8BHE***D7DGGEa5Deai=DzzAAt 	& 	&AGAJEv~~#	!#	!%	!	&  D==Xuqy777FFXau---F; 	-519%% - -bQi"Q%/01q5	A3v=1q5	A3v= 29,q		t 0	0 0	0AGAJEx #b4i/	!(E1==ABww#	!e#	!eai!!u	!A%!!u	!; -"1IEE"QU)be"34Fq1uINRUZ76ADq1uINRUZ76AD 29,E zURU]3bej@8D>> * :AE):;bQinLDx~~ *"Q%*1q5	*F*F!!uzzURU]3bej@8D>> * :AE):;bQinLDx~~ *"Q%*1q5	*F*F!!uz#b4i/	!Kr%   c                    t          j        | t           j                  }t          j        |t           j                  }t          j        |t           j                  }t          |          dk    rt	          d          t          |          t          |          k    rt	          d          |j        dk    r"t          j        |j        |d         |          S t          j        |j        |          }|j        }t          |          }	|d         }
||	dz
           }|	dk    r]|d         }|d         }t          |          D ];}|j
        |         }||k     r|
|j
        |<    ||k    r||j
        |<   1||j
        |<   <nd}|	|k    r,|dd          |d d         z
  |dd          |d d         z
  z  }nt          j        d|          }t          |          D ]z}|j
        |         }t          j        |          r||j
        |<   /t          |||	|          }|dk    r|
|j
        |<   R||	k    r||j
        |<   c||	dz
  k    r||         |j
        |<   }||         |k    r||         |j
        |<   |j        r	||         }n)||dz            ||         z
  ||dz            ||         z
  z  }||||         z
  z  ||         z   |j
        |<   t          j        |j
        |                   ri||||dz            z
  z  ||dz            z   |j
        |<   t          j        |j
        |                   r%||         ||dz            k    r||         |j
        |<   ||S )Nr  r   r  r  r)   r  r@  )ra   ro  r   rE   r}   r   r   r   r   r2   r   r  r  )r  r  r  r   r  rQ  r  r  r  r  r  r  r  r  r.   r  r\  r  r  s                      r&   np_interp_impl_innerr  	  sh    
ARZ	(	(	(B	Bbj	)	)	)B	Bbj	)	)	)B
2ww!||:;;;
2ww#b''>???	w!||wrxBqE????8BHE***D7DGGEa5Deai=DzzAAt 	& 	&AGAJEv~~#	!#	!%	!	&  D==fr#2#w&2abb6BssG+;<FFXau---Ft #	- #	-AGAJEx $	!(E1==ABww#	!e#	!eai!!u	!A%!!u	!; F"1IEEAYA.2a!e9r!u3DEE$16A>	! 8DIaL)) -#(EBq1uI,=#>AE#JDIaLx	!-- -"Q%2a!e92D2D')!u	!Kr%   c                   	 t          |d          r|j        dk    rt          d          t          |d          r|j        dk    rt          d          d}t          |          }t	          j        |t          j                  rt          |          t          |          }t	          j        |t          j                  t	          j        t          j                  rt          	nt          		fd}	fd}t          | t          j                  r+t          | t          j                  rt          |          |S |S )Nr|   r)   zxp must be 1Dzfp must be 1Dz:Cannot cast array data from complex dtype to float64 dtypec                       | ||          S r,   r$   r  r  r  r   r   s      r&   np_interp_implz!np_interp.<locals>.np_interp_impl<
  s    uQB&&&r%   c                 6     | ||          j         d         S r   r   r  s      r&   np_interp_scalar_implz(np_interp.<locals>.np_interp_scalar_impl?
  s!    uQB&&+A..r%   )rO  r|   r   r  ra   r  r  result_typer   r  r  rT   r   r}  r  )
r  r  r  complex_dtype_msgxp_dtfp_dtr  r  r   r   s
           @@r&   	np_interpr  !
  s^    r6 +rw{{/***r6 +rw{{/*** 	E  BE	}UB.// -+,,,BEN5"*--E	}UB.// %,$' ' ' ' ' '/ / / / / / !U\"" %a'' 	1/000$$r%   c                     | j         dk    sJ | j        \  }}t          j        |df| j                  }t          |          D ](}t          j        | |d d f                   |z  ||df<   )|S )Nr{   r)   r  r   )r|   r   ra   r   r   r2   r  )r-   r   rk  r   r.   s        r&   row_wise_averager  M
  sx    6Q;;;;7DAq
(Aq6
)
)
)C1XX ( (F1QT7OOa'AqD		Jr%   c                    ||rd}nd}| j         d         |z
  }t          |d          }| t          |           z  } t          j        | t          j        | j                            }|t          j        d|          z  }|S )Nr   r)   r  )r   r  r  ra   dotr   Trx  )Xbiasddoffactre   s        r&   np_cov_impl_innerr  Z
  s     | 	DDD 71:D tS>>D 	!		A 	q"'!#,,A4	 	  AHr%   c                      d S r,   r$   r$   r%   r&   _prepare_cov_input_innerr  s
  r/  r%   c                 4    |d t           j        fv rd }nd }|S )Nc                 Z    t          j        t          |                     }|s|j        }|S r,   )ra   
atleast_2dr#  r  )r   r  rowvarr   m_arrs        r&   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_innerz
  s+    M(1++..E  Lr%   c                    t          j        t          |                     }t          j        t          |                    }|s0|j        d         dk    r|j        }|j        d         dk    r|j        }|j        \  }}|j        \  }}	||	k    rt          d          t          j        ||z   |f|          }
||
d |d d f<   ||
| d d d f<   |
S )Nr   r)   z$m and y have incompatible dimensionsr  )ra   r  r#  r   r  r}   r   )r   r  r  r   r  y_arrm_rowsm_colsy_rowsy_colsr   s              r&   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_inner
  s    M(1++..EM(1++..E
  $;q>Q&&!GE;q>Q&&!GE"[NFF"[NFF !GHHH (FVOV4EBBBC#C
O$C!!!Jr%   r-  )r   r  r  r   r  s        r&   _prepare_cov_input_implr  w
  s?    T5:	 	 	 		 	 	4 $#r%   c                 d    | j         dk    r"| j        d         dk    rd}t          |          d S d S )Nr{   r   r)   z2D array containing a single row is unsupported due to ambiguity in type inference. To use numpy.cov in this case simply pass the row as a 1D array, i.e. m[0].)r|   r   r)  )r   r   s     r&   _handle_m_dim_changer  
  s=    v{{qwqzQ? 3	 {r%   c                     | S r,   r$   r  s    r&   r  r  
  s    q r%   c                    t           j        }t          | t          j                  rt          | j                  }nt          | t          j        t          j        f          rt          |           }nt          | t          j	        t          j
        f          rt                      | D ]6}t          |d          rfd|D              !                    |           7t                    dk    rt          j        d D              }n4t                    dk    r!t                                                    }|S )Nr  c                 :    g | ]}                     |          S r$   )add).0rf   coltypess     r&   
<listcomp>z#determine_dtype.<locals>.<listcomp>
  s#    ...Qa...r%   r)   c                 ,    g | ]}t          |          S r$   )r
   )r  tys     r&   r  z#determine_dtype.<locals>.<listcomp>
  s    .O.O.Ox||.O.O.Or%   )ra   r   rT   r   r   r
   r   r}  r|  rF   rW   setrO  r  rE   rn  r   )
array_likearray_like_dtr   r  s      @r&   r  r  
  s,   JM*ek** 5 !122	Ju} =	>	> 5 ,,	J =	>	> 
555 	" 	"CsG$$ "....#.....S!!!!x==1,.O.Oh.O.O.OPMM]]a$X\\^^44Mr%   c                    t          | t          j                  r/| j        dk    r"t	          d                    |                    d S t          | t          j                  rwt          | j        d         t          j                  rTt          | j        d         j        d         t          j                  r&t	          d                    |                    d S d S d S )Nr{   z{0} has more than 2 dimensionsr   )rT   r   r   r|   r{  formatr  r|  )r  names     r&   check_dimensionsr  
  s    *ek** O?Q<CCDIIJJJ 	J	/	/ OjnQ'88 	O*.+/2ENCC O @ G G M MNNNO O	O 	OO Or%   c                     t          j        |           st          d          | t          |           z
  dk    rt          d          d S )Nz)Cannot convert non-finite ddof to integerr   zddof must be integral value)ra   rv  r}   r{  )r  s    r&   _handle_ddofr  
  sQ    ;t FDEEEc$ii16777 r%   c                     | S r,   r$   r  s    r&   r  r  
  s    a r%   c                 R     ||             ||           t          | |||          S r,   )r  )r   r  r  r   r  _DDOF_HANDLER_M_DIM_HANDLERs          r&   _prepare_cov_inputr  
  s8     N1M$#Aq&%888r%   c                 <   |d t           j        fv }t          | t           j                  r| j        dk    r|S t          | t           j                  r_t          d | j         D                       r|S t          | j                   dk    r't          | j         d         t           j                  r|S t          | t           j        t           j	        f          r|S t          | t           j
                  r)t          | j        d         t           j
                  s|rdS dS )Nr)   c              3   b   K   | ]*}t          |t          j        t          j        f          V  +d S r,   )rT   r   r}  r|  r  r  s     r&   	<genexpr>z)scalar_result_expected.<locals>.<genexpr>
  sI       / / !elEM:;; / / / / / /r%   r   TF)r   r.  rT   r   r|   	BaseTuplerP  rE   r}  r|  r  r|  )mandatory_inputoptional_inputopt_is_nones      r&   scalar_result_expectedr  
  s     T5:$66K/5;// O4HA4M4M/5?33 # / /'-/ / / / / 	#O)**a//4Q7II 0""/EL%-#@AA /5>22 ?.q15>BB 		45r%   c                 ~    t          j        t          j        |           dk    t          j        |           |           S rU  )ra   r  fabssignr  s    r&   
_clip_corrr  
  s*    8BGAJJNBGAJJ222r%   c                 b    t          | j                  }t          | j                  }|d|z  z   S )Nr>  )r  r   r   )r  r   r   s      r&   _clip_complexr  
  s/    afDafD"t)r%   c                 N  	
 t          | d           t          |d           |d t          j        fv rt          	n_t	          |t          j        t          j        f          rt          	n1t	          |t          j                  rt          	nt          d          t          
t	          | t          j                  rt          
t          |           }t          |          }t          j        ||t          j                  d	
fd	}	 	 d	
fd	}t#          | |          r|S |S )	Nr   r  z)ddof must be a real numerical scalar typeTFc           	      F   t          | |||                                        }t          j        t          j        |j                  dk              r9t          j        |j        d         |j        d         ft          j                  S t          |||          S )Nr   r  )	r  r  ra   r  r+  r   r   r?  r  )	r   r  r  r  r  r  r  r  r   s	         r&   np_cov_implznp_cov.<locals>.np_cov_impl"  s    q!VUD--/ //5ve}} 	
 6"(17##q()) 	47AGAJ
3!&( ( ( ( %Qd333r%   c           	      ,   t          | |||	                              	          }t          j        t          j        |j                  dk              rt          j        }nt          |||          j        d         }t          j        |          S r   )	r  r  ra   r  r+  r   r?  r  r   )
r   r  r  r  r  r  variancer  r  r   s
          r&   np_cov_impl_single_variablez+np_cov.<locals>.np_cov_impl_single_variable,  s    q!VT5--/ //5ve}} 	
 6"(17##q()) 	@vHH(D$77<Q?Hx!!!r%   NTFN)r  r   r.  _handle_ddof_noprT   r  r|  r  r  r   _handle_m_dim_nopr   r  r  ra   r  r   r  )r   r  r  r  r  m_dty_dtr  r  r  r  r   s            @@@r&   np_covr    s[    QQ ej!!!(dU]EM:;; 	K,MMek** 	K(MMIJJJ
 'N!U[!! .- 1D1DN4rz22E4 4 4 4 4 4 4 4 BG)-
" 
" 
" 
" 
" 
" 
" 
" a## **r%   c                     t          |           }t          |          }t          j        ||t          j                  }|t          j        k    rt
          nt          dfd	}dd}t          | |          r|S |S )NTc                 *   t          j        | ||          }t          j        |          }t          j        |j                  }t          |j        d                   D ]*}||d d fxx         |z  cc<   |d d |fxx         |z  cc<   + |          S r   )ra   covdiagsqrtr   r2   r   )r  r  r  re   r]  stddevr.   clip_fns          r&   np_corrcoef_implz%np_corrcoef.<locals>.np_corrcoef_implJ  s    F1a  GAJJqwqz"" 	 	AadGGGvGGGaaadGGGvGGGGwqzzr%   c                 8    t          j        | ||          }||z  S r,   )ra   r  )r  r  r  re   s       r&    np_corrcoef_impl_single_variablez5np_corrcoef.<locals>.np_corrcoef_impl_single_variableU  s    F1a  1ur%   NT)r  ra   r  r   complex_r  r  r  )	r  r  r  ro  r  r   r  r  r  s	           @r&   np_corrcoefr  >  s     1D1DN4rz22E	 	 	 	 	 	    a##  //r%   c                     t          | t          j        t          j        f          }t	          |           r|sd }n
ddfd}|S )Nc                     t          j        |           }|j        dk    r t          j        dt          j                  S t          j        t          j        t          j        |                              S )Nr$   )r   r)   r  )	ra   ro  r   r  r   r4   rA  vstackr  r$  s     r&   rI  znp_argwhere.<locals>.implj  sS    *Q--CyBxej9999<	"*S// : :;;;r%   )r   r   )r)   r   c                     | /t          |           r t          j        t          j                  S t          j        t          j                  S r  )boolra   r  r   r4   )r-   falseishtrueishs    r&   rI  znp_argwhere.<locals>.impls  s@    }a}xuz::::x
;;;;r%   )rT   r   r}  r|  r   )r-   
use_scalarrI  r  r  s      @@r&   np_argwherer  c  sz    
 Aem<==J <: <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< Kr%   c                 2    t          |           rd }nd }|S )Nc                     t          j        |           }t          j        t          j        |                    d         S r   )ra   ro  r  rB  r$  s     r&   rI  znp_flatnonzero.<locals>.impl  s,    *Q--C:bhsmm,,Q//r%   c                     | t          |           rdg}nd t          d          D             }t          j        |t          j                  S )Nr   c                     g | ]}|S r$   r$   r  s     r&   r  z0np_flatnonzero.<locals>.impl.<locals>.<listcomp>  s    ,,,a,,,r%   r  )r  r2   ra   r+  r   r4   )r-   r@   s     r&   rI  znp_flatnonzero.<locals>.impl  sJ    }a}s,,588,,,8D
3333r%   r  )r-   rI  s     r&   np_flatnonzeror  |  s>      
4	0 	0 	0 	0	4 	4 	4 Kr%   c                    | j         dk    r;| j        d         }| j        d         }d|z   }|r||z  }n|t          ||          z  }nt          j        | j                  }t          j        t          j        |          dk              st          d          dt          j        |d d                   	                                z   }|
                                }||fS )Nr{   r   r)   z/All dimensions of input must be of equal lengthr@  )r|   r   r   ra   r+  rP  r8  r}   r   r  r   )r-   wrapr   rk  stepr=  r   s          r&   _fill_diagonal_paramsr    s    v{{GAJGAJ1u 	 a%CCc!Qii-CC!!vbgenn)** 	PNOOOBJuSbSz**//111jjll9r%   c                 h    t          | |          \  }}t          d||          D ]}|| j        |<   d S r   )r  r2   r   )r-   r   r  r=  r  r.   s         r&   _fill_diagonal_scalarr    sG    %a..IC1c4    q		 r%   c                     t          | |          \  }}d}t          |          }t          d||          D ]}||         | j        |<   |dz  }||z  }d S r  )r  rE   r2   r   )r-   r   r  r=  r  ctrv_lenr.   s           r&   _fill_diagonalr    sm    %a..IC
CHHE1c4    Hq	qEk r%   c                     t          j        | j                  }|j        }|j        }t          j        t          j        |                     s0t          j        ||k               st          j        ||k              rt          d          d S Nz'Unable to safely conform val to a.dtype)ra   iinfor   r   r  r  rv  r}   )r-   r   r  v_minv_maxs        r&   _check_val_intr    s    HQWEIEIE 
vr{3   DBF3;$7$7 D26#+;N;N DBCCCD Dr%   c                    t          j        | j                  }|j        }|j        }|t          j        |                   }t          j        ||k               st          j        ||k              rt          d          d S r  )ra   finfor   r   r  rv  r  r}   )r-   r   r  r  r  finite_valss         r&   _check_val_floatr     s    HQWEIEIE bk#&&'K	vkE!"" Dbf[5-@&A&A DBCCCD Dr%   c                     | S r,   r$   r  r  s     r&   r  r    s    1 r%   c                     d S r,   r$   r  s    r&   r#  r#    r/  r%   c                    t          | t          j                  rd S t          | t          j        t          j        f          rd S t          | t          j        t          j        f          rt          |           fdS d S )Nc                     | S r,   r$   r  s    r&   r  z_asarray_impl.<locals>.<lambda>  s     r%   c                 *    t          j        |           S r,   r*  r  s    r&   r  z_asarray_impl.<locals>.<lambda>  s    ! r%   c                 2    t          j        | g          S r  r*  r  r  s    r&   r  z_asarray_impl.<locals>.<lambda>  s    1#R000 r%   )rT   r   r   r  rW   r}  r|  r
   r(  s    @r&   _asarray_implr)    s    !U[!! 1{	A4	5	5 1$$$	Aem4	5	5 1a[[000001 1r%   c                    | j         dk    rt          | j        t          j                  rt
          n.t          | j        t          j                  rt          nt          dfd	}dfd	}t          |t          j        t          j        t          j	        f          r|S t          |t          j
        t          j        t          j        f          r|S d S d| j         z  }t          |          )Nr)   Fc                     t          |                                          } | |           t          | ||           d S r,   )r#  rp  r  r-   r   r  tmpvalcheckers       r&   scalar_implz%np_fill_diagonal.<locals>.scalar_impl  sD    c]]**,,FGAv!!S$/////r%   c                     t          |                                          } | |           t          | ||           d S r,   )r#  rp  r  r,  s       r&   non_scalar_implz)np_fill_diagonal.<locals>.non_scalar_impl  sD    c]]**,,FGAv1fd+++++r%   z4The first argument must be at least 2-D (found %s-D)F)r|   rT   r   r   r  r  r  r   
_check_nopr|  rW   r  r   r   )r-   r   r  r/  r1  r   r.  s         @r&   np_fill_diagonalr4    s     	vzz agu}-- 	!$GG-- 	!&GG G	0 	0 	0 	0 	0 	0
	, 	, 	, 	, 	, 	,
 cEKFGG 	#ek5>5;GHH 	#""	# 	# EqvM#r%   c                     d| j         fz  S )Nzllvm.rint.f%d)r   )tps    r&   _np_round_intrinsicr7    s    bk^++r%   c                 &     ||          }d }||fS )Nc                 @   |\  }|j         d         }|                     |          }|j        }t          j                            ||g          }t          j        ||t          |                    }	|	                    |	|f          }
t          | ||j        |
          S r   )r:   r0   modulellvmliteirFunctionTyper   get_or_insert_functionr7  callr   rn   )rq   r8   rr   r:   r   r6  lltyr:  fntyr  rs   s              r&   rD   z _np_round_float.<locals>.codegen  s    Xa[%%b)){''tf55+FD,?,C,CE Ell2v&&!'7COSIIIr%   r$   )	typingctxr   rr   rD   s       r&   _np_round_floatrC    s-    
#c((C	J 	J 	J <r%   c                 2   t          j        |           st          j        |           r| S |dk    rK|dk    rd|dz
  z  }d}nd|z  }d}| |z  |z  }t          j        |          r| S t          |          |z  |z  S d| z  }| |z  }t          |          |z  S )Nr      g      $@gMDrY  )ry  r[  r  rC  )r  ndigitspow1pow2r  s        r&   round_ndigitsrI    s    z!}} 
1  !||R<< GbL)DDD7?DDX:a== 	H""T)T11 !Hq!!D((r%   c                 p   t          |           st          d          t          |t          j                  s t          |          sd}t          |          t          | t          j        t          j        t          j        f          rwt          |          rbt          | t          j                  rd
d}|S t          | t          j                  rd
d}|S t          | t          j                  rd
d}|S d S d
d}|S t          | t          j                  rt          |          rd
d}|S d
d	}|S d S )Nz#The argument "a" must be array-likez5The argument "out" must be an array if it is providedr   c                 L    |dk    rt          |           S t          | |          S r   )rC  rI  r-   decimalsr   s      r&   rI  zimpl_np_round.<locals>.implB  s)    1}}.q111,Q999r%   c                 L    |dk    r| S t          t          | |                    S r   )r{  rI  rL  s      r&   rI  zimpl_np_round.<locals>.implI  s(    1}} "=H#=#=>>>r%   c                     |dk    r)t          | j                  }t          | j                  }n*t          | j        |          }t          | j        |          }t	          ||          S r   )rC  r   r   rI  complex)r-   rM  r   r   r   s        r&   rI  zimpl_np_round.<locals>.implP  s]    1}}.qv66.qv66,QVX>>,QVX>>"4...r%   c                 6    t          j        | |          |d<   |S r   )ra   roundrL  s      r&   rI  zimpl_np_round.<locals>.implZ  s    !X..A
r%   c                 V    t          j        |           }t          j        | ||          S r,   )ra   r  rR  rL  s      r&   rI  zimpl_np_round.<locals>.impl`  s%    mA&&x8S111r%   c                     | j         |j         k    rt          d          t          j        |           D ]\  }}t          j        ||          ||<   |S )Nzinvalid output shape)r   r}   ra   r  rR  )r-   rM  r   r  r   s        r&   rI  zimpl_np_round.<locals>.imple  sY    7ci''$%;<<<"$."3"3 9 9JE3!##x!8!8CJJ
r%   r  )	r   r   rT   r   r   r   r  r  r  )r-   rM  r   r   rI  s        r&   impl_np_roundrU  5  s    A A?@@@sEK(( K,<,< E#!ek5=%-@AA ,s 	!U[)) : : : :
 Au}-- ? ? ? ?
 Au}-- 	/ / / / 	 	    K	Au{	#	# s 	2 2 2 2 K    K r%   c                     t          | t          j                  rd }|S t          | t          j                  rd }|S t	          d          )Nc                 ^    | dk    rd} | t           j        z  } t          j        |           | z  S )Nr  g#B;)ra   pisinr  s    r&   rI  zimpl_np_sinc.<locals>.implq  s-    DyyJA6!99q= r%   c                     t          j        |           }t          j        |           D ]\  }}t          j        |          ||<   |S r,   )ra   r  r  sinc)r  r   r  r   s       r&   rI  zimpl_np_sinc.<locals>.implx  sF    -""C nQ// * *
sWS\\E

Jr%   z,Argument "x" must be a Number or array-like.)rT   r   r}  r   r   r  s     r&   impl_np_sincr\  n  sg    !U\"" M	! 	! 	!
 	Au{	#	# M	 	 	
 KLLLr%   c                 z   t          dt          j        z            t          | t          j                  rdfd	}|S t          | t          j                  rP| j        }t          |t          j                  r|j	        nt          |t          j
                  r|nd S dfd	}|S t          d|            )N   Fc                     |r"t          j        | j        | j                  z  S t          j        | j        | j                  S r,   )ra   arctan2r   r   )r  degdeg_mults     r&   rI  zov_np_angle.<locals>.impl  s<     2z!&!&11H<<z!&!&111r%   c                     t          j        |           }t          j        |           D ]\  }}t          j        ||          ||<   |S r  )ra   r  r  angle)r  ra  r   r  r   	ret_dtypes        r&   rI  zov_np_angle.<locals>.impl  sP    -333C nQ// 0 0
sXc3//E

Jr%   z6Argument "z" must be a complex or Array[complex]. Got r2  )floatra   rX  rT   r   r}  r   r   r  underlying_floatr  r   )r  ra  rI  r   rb  re  s       @@r&   ov_np_anglerh    s    S25[!!H !U\"" <	2 	2 	2 	2 	2 	2
 	Au{	#	# <eU]++ 	.IIu{++ 	IIF	 	 	 	 	 	
  ;78; ; < < 	<r%   zarray.nonzeroc                 &    |j         d         }|j        }|j        |j        } t	          |           |d                   }t          j        |j                  }t          j        |j                  }	|j	        }
|j
        }                     t          j        d          }                     t          j        d          }t          j        |          }t          j        ||j                  5 }t          j         |
||	||          }t%           ||          }                     |j        |          }                    |          5                                                              |          |          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                       |          f fdt1          |          D             } fd|D             }d |D             }t          j        |          }t          j        ||j                  5 }t          j         |
||	||          }t%           ||          }                     |j        |          }                    |          5  |s|f}                    |          }t1          |          D ]<}t          j         ||         dd|g          }t3           ||         |           =                                        ||          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                        |j        |          }t7           |j        |          S )Nr   r)   c                 X    g | ]&}t                                                    'S r$   )r   	_getvalue)r  r.   r8   rq   	out_shapeoutarytys     r&   r  z!array_nonzero.<locals>.<listcomp>  sC     # # # 7GXyAAKKMM # # #r%   c                 D    g | ]} t                    |          S r$   )r   )r  r   r8   rq   rm  s     r&   r  z!array_nonzero.<locals>.<listcomp>  s0    KKKs#z(##GWc::KKKr%   c                     g | ]	}|j         
S r$   )r@   )r  r   s     r&   r  z!array_nonzero.<locals>.<listcomp>  s    ---c---r%   r$   C)r:   rn   r   r  r   r   unpack_tupler   stridesr@   layoutr3   r   r4   alloca_once_value	loop_nestr   get_item_pointer2r   is_trueif_thenstorer  loadr2   r   
make_tupler   )rq   r8   rr   r:   arytyr   noutsr9  r   rr  r@   rs  rg   r  r  indicesptrr   nzoutsoutarys	out_datasr  curr.   r<   rl  rm  s   ``                        @@r&   array_nonzeror    s    HQKEOE{HKE
*U

GWd1g
6
6C #)44E"7CK88G8D\F 
A..D


uz1
-
-C%gt44E		7E49	5	5 H'$w(.9 9%55__Wek377__R   	H 	HMM'++gll5&9&93??GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HH H H H H H H H H H H H H H H e$$&I# # # # # # #5\\# # #DKKKKKKdKKKG--W---I %gt44E		7E49	5	5 8'$w(.9 9%55__Wek377__R   	8 	8 "',,u%%C5\\ H H/)A,09203cU< < 7GXwqz3GGGGMM'++c3//777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8$ 

Wcot
<
<CGWcosCCCso   9AF8>F!F8!F%	%F8(F%	)F88F<?F<AM!BL>2M>M	MM	MMMc                       fd}|S )Nc                     t          j        |                                        }t          j        |                                        }| r|n|S r,   )ra   ro  r  )	conditionr  r  x_y_r   s        r&   rI  z)_where_zero_size_array_impl.<locals>.impl  sH    Z]]!!%((Z]]!!%((&rrB&r%   r$   )r   rI  s   ` r&   _where_zero_size_array_implr    s#    ' ' ' ' ' Kr%   c                 d    t          j        |           D ]\  }}|r||         n||         ||<   |S r,   )ra   r  )condr  r  rs   r   re   s         r&   _where_generic_inner_implr    s@    .&& + +Q*1S66AcFCJr%   c                     | j         }|j         }|j         }|j         }t          | j                  D ]}||         r||         n||         ||<   |S r,   )r   r2   r   )	r  r  r  rs   cfxfyfrfr.   s	            r&   _where_fast_inner_implr    s\    	B	
B	
B	B49 * *A)1BqE1Jr%   c                 *     dhdhfv  fd}|S )Nrp  Fc                    t          j        |           t          j        |          t          j        |          }}}t          j        |j        |j        |j                  }t          j        ||          }t          j        ||          }t          j        ||          }	dk    r%t          j        |d d d                   j        }
nt          j        |          }
rt          |||	|
          S t          |||	|
          S )Nr  r@  r  )	ra   ro  r  r   r  r   r  r  r  )r  r  r  cond1x1y1r   cond_r  r  rs   r   rs  use_faster_impls              r&   rI  z!_where_generic_impl.<locals>.impl  s    
9--rz!}}bjmm2r#EK28DDu--_R''_R''S==(52;e4446CC(5...C 	A)%R===,UBC@@@r%   r$   )r   rs  rI  r  s   `` @r&   _where_generic_implr    sH    #.OA A A A A A A" Kr%   c                 L    t          |           sd}t          |          d }|S )N+The argument "condition" must be array-likec                 N    t          j        |                                           S r,   )ra   ro  r  )r  s    r&   where_cond_none_nonez)ov_np_where.<locals>.where_cond_none_none  s    z)$$,,...r%   )r   r   )r  r   r  s      r&   ov_np_wherer    s:    I&& ";S!!!/ / /r%   c                 0   t          |           sd}t          |          t          |          st          |          rt          d          t          ||fd          D ]8\  }}t          |          s$d}t          |                    |                    9t          | t          j                  }t          |t          j                  }t          |t          j                  }|rt          |          }	t          |          }
t          j
        |	|
          }d t          fd| ||fD                       }|rt          |          S | j        }|r+|r)|j        |j        cxk    r| j        k    rn n|j        }nd}t          ||          S d }|S )	Nr  z"Argument "x" or "y" cannot be Noner"  z0The argument "{}" must be array-like if providedc                     t          | t          j                  p$t          | t          j                  o
| j        dk    S r   )rT   r   r}  r   r|   )args    r&   check_0_dimz$ov_np_where_x_y.<locals>.check_0_dim;  s7    c5<00 @3,,>Q@r%   c                 &    g | ]} |          S r$   r$   )r  r-   r  s     r&   r  z#ov_np_where_x_y.<locals>.<listcomp>>  s!    HHHkk!nnHHHr%   rV  c                     t          j        t          j        |           t          j        |          t          j        |                    S r,   )ra   r  ro  )r  r  r  s      r&   rI  zov_np_where_x_y.<locals>.implJ  s0    8BJy112:a=="*Q--PPPr%   )r   r   r   zipr  rT   r   r   r  ra   rn  rP  r  rs  r  )r  r  r  r   r  r  cond_arrrl  r  ro  r  r   special_0_casers  rI  r  s                  @r&   ov_np_where_x_yr    s   I&& ";S!!! 1~~ CQ CABBB!Q,, 3 3	T$$ 	3DC D!1!1222	3 )U[11Hq%+&&Eq%+&&E q!!q!! t,,	@ 	@ 	@ HHHHy!Q6GHHHII 	6.u555! 	U 	x187777y'777777"5&111	Q 	Q 	Qr%   c                     d }|S )Nc                     | j         S r,   )r   r   s    r&   np_real_implznp_real.<locals>.np_real_implQ  	    vr%   r$   )r-   r  s     r&   np_realr  O         r%   c                     d }|S )Nc                     | j         S r,   )r   r   s    r&   np_imag_implznp_imag.<locals>.np_imag_implY  r  r%   r$   )r-   r  s     r&   np_imagr  W  r  r%   c                 D    t          | t          j                  sd S d }|S )Nc                 F    t          j        |           D ]}||k    r dS dS r   )ra   rb   )rd   r|  r  s      r&   np_contains_implz%np_contains.<locals>.np_contains_implg  s3    3 	 	ACxxtt ur%   r   )rd   r|  r  s      r&   np_containsr  b  s2    c5;''    r%   c                 t    t          |           st          d          t          |          rdd}|S dd}|S )Nz3The argument to np.count_nonzero must be array-likec                 Z    t          j        |           }t          j        |dk              S r   )ra   rB  r  rd   rY   arr2s      r&   rI  znp_count_nonzero.<locals>.implv  s#    8C==D6$!)$$$r%   c                 l    |                      t          j                  }t          j        ||          S )N)rY   )r  ra   r   r  r  s      r&   rI  znp_count_nonzero.<locals>.impl{  s*    ::bh''D6$T****r%   r,   )r   r   r   )rd   rY   rI  s      r&   np_count_nonzeror  p  sh    C   QOPPP4 		% 	% 	% 	% 	+ 	+ 	+ 	+ r%   c                     | S r,   r$   r  s    r&   r  r    s     r%   c                 *    t          j        |           S r,   rU  r  s    r&   r  r    s    
1 r%   c                    t          | t          j        t          j        f          st	          d          t          |t          j        t          j        t          j        f          r^t          |t          j                  rt          n5t          |j        t          j                  st	          d          t          fd}|S t          |t          j                  st	          d          d }|S )Nz)arr must be either an Array or a Sequencezobj should be of Integer dtypec                     t          j        t          j        |                     } | j        }t          j        |t           j                  } |          }d||<   | |         S )Nr  F)ra   rB  ro  r   onesr   )rd   r3  r  keephandlers       r&   np_delete_implz!np_delete.<locals>.np_delete_impl  sW    (2:c??++CA71BH---D'#,,CDIt9r%   c                     t          j        t          j        |                     } | j        }|}|| k     s||k    rt	          d          |dk     r||z  }t          j        | d |         | |dz   d          f          S )Nz"obj must be less than the len(arr)r   r)   )ra   rB  ro  r   
IndexErrorconcatenate)rd   r3  r  poss       r&   np_delete_scalar_implz(np_delete.<locals>.np_delete_scalar_impl  s    (2:c??++CACqbC1HH !EFFF aq>3tt9c#'((m"<===r%   )
rT   r   r   r  r   	SliceTypenp_delete_handler_isslicer   r  np_delete_handler_isarray)rd   r3  r  r  r  s       @r&   	np_deleter    s    
 cEK899 GEFFF#U^U_EFF $%cEO-- 	0/GGci77 D!"BCCC/G	 	 	 	 	  #u}-- 	@>???	> 	> 	> %$r%   r)   c                 \    t          | t          j                  r| j        dk    rd S dd}|S )Nr   r)   c                    |dk    r|                                  S |dk     rt          d          | j        d         }| j        d d         t          ||z
  d          fz   }t	          j        || j                  }|j        dk    r|S |                     d|f          }|                    d|j        d         f          }t	          j        || j                  }t          |j        d                   D ]}t          |dz
            D ]}	|||	dz   f         |||	f         z
  ||	<   t          d|          D ]1}
t          ||
z
  dz
            D ]}	||	dz            ||	         z
  ||	<   2|d ||z
           ||<   |S )Nr   z"diff(): order must be non-negativer@  r)   )
r  r}   r   r  ra   r   r   r   rC  r2   )r-   rk  r   rl  r   a2out2workmajorr.   niters              r&   	diff_implznp_diff_impl.<locals>.diff_impl  s   666688Oq55ABBBwr{GCRCLCq!$4$4#66	hy!'**8q==J YYDz""{{B	".//xag&&28A;'' 		* 		*E4!8__ : :UAE\*Rq\9Qq! 4 4te|a/00 4 4A"1q5kDG3DGG4 yqy/DKK
r%   rK  )rT   r   r   r|   )r-   rk  r  s      r&   np_diff_implr    sA    a%% 1   > r%   c                     t          |           rt          |          st          d          t          j        t          j        f}t          | |          rt          ||          rd }nd }|S )Nz3Both arguments to "array_equals" must be array-likec                     | |k    S r,   r$   r  s     r&   rI  znp_array_equal.<locals>.impl  s    6Mr%   c                     t          j        |           } t          j        |          }| j        |j        k    rt          j        | |k              S dS r   )ra   ro  r   rP  r  s     r&   rI  znp_array_equal.<locals>.impl  sB    
1A
1Aw!'!!va1f~~%5r%   )r   r   r   r|  r}  rT   )r-   rj  acceptedrI  s       r&   np_array_equalr    s     Q Q$4Q$7$7 QOPPPu|,H!X 
:a#:#: 
	 	 	 		 	 	 Kr%   c                 f    t          |           st          |          st          d          d }|S )Nz.intersect1d: first two args must be array-likec                 F   t          j        |           } t          j        |          }t          j        |           } t          j        |          }t          j        | |f          }|                                 |dd          |d d         k    }|d d         |         }|S )Nr)   r@  )ra   ro  r  r  sort)ar1ar2auxr  int1ds        r&   np_intersects1d_implz0jit_np_intersect1d.<locals>.np_intersects1d_impl  s    joojooinninnnc3Z((


122w#crc("CRCr%   r   r   )r  r  r  s      r&   jit_np_intersect1dr    sL    
 S!! L%5c%:%: LJKKK    r%   c                    t          |t          j                  r/|j        dk    r"t	          d                    |                     d S t          |t          j                  s"t	          d                    |                     d S )Nr)   z${0}(): input should have dimension 1z+{0}(): input should be an array or sequence)rT   r   r   r|   r{  r  r  )	func_nameseqs     r&   validate_1d_array_liker    s    #u{## ,8q==B#VI..0 0 0 = U^,, ,E	**, , 	,, ,r%   c                    t          d|            t          | j        t          j                  sd S t          |d           |d t          j        fvr=t          d|           t          j        t          d             t          d             n,t          j
        t          d             t          d             d	fd	}|S )
Nbincount	minlengthc                 d    t          |           t          |          k    rt          d          d S )Nz7bincount(): weights and list don't have the same length)rE   r}   r-   r  r  s      r&   validate_inputsz$np_bincount.<locals>.validate_inputs!  s8    1vvW%%  "3 4 4 4 &%r%   c                 2    | |xx         ||         z  cc<   d S r,   r$   r   r   r   r  s       r&   
count_itemznp_bincount.<locals>.count_item'  s     HHH$HHHHHr%   c                     d S r,   r$   r  s      r&   r  z$np_bincount.<locals>.validate_inputs.  s    Dr%   c                 &    | |xx         dz  cc<   d S rU  r$   r  s       r&   r  znp_bincount.<locals>.count_item2  s    HHHMHHHHHr%   r   c                     
| ||           |dk     rt          d          t          |           }|dk    r| d         nd}t          d|          D ]3}| |         dk     rt          d          t          || |                   }4t          |dz   |          }t	          j        |	          }t          |          D ]} ||| |         |           |S )Nr   z 'minlength' must not be negativer@  r)   z/bincount(): first argument must be non-negative)r}   rE   r2   r  ra   r  )r-   r  r  rk  rK  r.   
out_lengthr   r  r>  r  s           r&   bincount_implz"np_bincount.<locals>.bincount_impl6  s    7I...q==?@@@FFA!2q! 	% 	%Ataxx  "0 1 1 1qt$$EEI..
hz9--q 	. 	.AJsAqtW----
r%   r   )r  rT   r   r   r  r   r.  ra   r   r	   r4   )r-   r  r  r  r  r>  r  s       @@@r&   np_bincountr    s   :q)))agu}-- Y,,,tUZ(((z7333 J			4 	4 
		4
 
	% 	% 
		% 	% J			 	 
		 
	 	 
		       & r%   c                       fd}|S )Nc                 *   t          j        |          r7t          |dd          D ]#}t          j        | |dz
                     s|c S $dS ||k     r|}nd}||k     r|dz   n|}||k    r(||z   dz	  } | |         |          r|dz   }n|}||k    (|S )a  Perform inner loop of searchsorted (i.e. a binary search).

        This is loosely based on the NumPy implementation in [1]_.

        Parameters
        ----------
        a: 1-D array_like
            The input array.
        v: array_like
            The current value to insert into `a`.
        v_last: array_like
            The previous value inserted into `a`.
        lo: int
            The initial/previous "low" value of the binary search.
        hi: int
            The initial/previous "high" value of the binary search.
        n: int
            The length of `a`.


        .. [1] https://github.com/numpy/numpy/blob/809e8d26b03f549fd0b812a17b8a166bcd966889/numpy/core/src/npysort/binsearch.cpp#L173
        r   r@  r)   )ra   r  r2   )	r-   rf   v_lastlohirk  r.   rZ  funcs	           r&   searchsorted_innerz)_searchsorted.<locals>.searchsorted_innerM  s    . 8A;; 	 1a__  x!a%)) HHH1A::BBB66aqB2gg7q.CtAcFQ   1W  2gg 	r%   r$   )r  r  s   ` r&   _searchsortedr  L  s%    - - - - -\ r%   c                     | |k    S r,   r$   r"  s     r&   r  r    s
    AF r%   leftc                    t          |d|          }|dk    rt          n |dk    rt          nt          d|           t	          |t
          j                  rdfd	}n't	          |t
          j                  rdfd	}ndfd	}|S )	NrV   r  rightz Invalid value given for 'side': c           	      ^   t          |           }d}|}t          j        |j        t          j                  }|j        d         }t          j        ||f          D ]P\  }}	 
| |                                ||||          }|                                }|	                    |           Q|S r   )	rE   ra   r   r   r4   r   rb   rc   itemset)r-   rf   siderk  r   r  r   r  r   outview	loop_impls             r&   searchsorted_implz'searchsorted.<locals>.searchsorted_impl  s    AABB(17BG,,CVAYF!#As8!4!4 $ $gYq$))++vr2qAA####Jr%   c           	         t          |           }d}|}t          j        t          |          t          j                  }|d         }t	          t          |                    D ]%} 	| ||         ||||          }|||<   ||         }&|S r   )rE   ra   r   r4   r2   )
r-   rf   r  rk  r   r  r   r  r.   r  s
            r&   r  z'searchsorted.<locals>.searchsorted_impl  s    AABB(3q6627++CqTF3q66]]  Yq!A$B::A1Jr%   c                 B    t          |           } | ||d||          S r   )rE   )r-   rf   r  rk  r  s       r&   r  z'searchsorted.<locals>.searchsorted_impl  s(    AA9Q1aA...r%   r  )r   _searchsorted_left_searchsorted_rightr   rT   r   r   r  )r-   rf   r  side_valr  r  s        @r&   searchsortedr    s    t_d33H6&			W		'		KKKLLL!U[!!  /
	 
	 
	 
	 
	 
	 
	 
Au~	&	& /
	 
	 
	 
	 
	 
	 
		/ 	/ 	/ 	/ 	/ 	/ r%   c                     t           d             t           d             t           d             t          | t          j                  r
dfd	}|S t          | t          j                  r
dfd	}|S d S )Nc                     t          |           }d}d}|dk    rJ| d         }t          d|          D ]1}| |         }|o||k     }|o||k      }|s|st          d          |}2|S )NTr)   r   z3bins must be monotonically increasing or decreasing)rE   r2   r}   )binsrk  is_increasingis_decreasingprevr.   r  s          r&   are_bins_increasingz(np_digitize.<locals>.are_bins_increasing  s    IIq557D1a[[  1g - @dSj. - @dSj.$ 6] 6$ &5 6 6 6r%   c                    t          |          }d}|}|rtt          j        |           r7t          |dd          D ]#}t          j        ||dz
                     s|c S $dS ||k    r"||z   dz	  }||         | k     r|dz   }n|}||k    "n>t          j        |           r|S ||k    r"||z   dz	  }||         | k    r|dz   }n|}||k    "|S )Nr   r@  r)   rE   ra   r  r2   r  r  r  rk  r   r  r.   rZ  s           r&   digitize_scalarz$np_digitize.<locals>.digitize_scalar  s    II 	x{{  q!R ! !A8DQK00 ! !qr''Bw1n9q==qBB B r'' x{{ r''Bw1n9>>qBB B r'' 	r%   c                    t          |          }d}|}|rpt          j        |           r3t          d|          D ] }t          j        ||                   s|c S !|S ||k    r"||z   dz	  }||         | k     r|}n|dz   }||k    "n>t          j        |           rdS ||k    r"||z   dz	  }||         | k    r|}n|dz   }||k    "|S r  r  r  s           r&   digitize_scalar_decreasingz/np_digitize.<locals>.digitize_scalar_decreasing  s    II 	!x{{ q! ! !A8DG,, ! !r''Bw1n9q==BB qB r'' x{{ qr''Bw1n9>>BB qB r'' 	r%   Fc                 J    |          }t          j        | j        t           j                  }t          j        | |f          D ][\  }}|r  	|                                ||          }n 
|                                ||          }|                    |           \|S r,   )ra   r   r   r4   rb   rc   r
  )r  r  r  r  r   r   r  r  r  r   r"  s           r&   digitize_implz"np_digitize.<locals>.digitize_impl  s    //55M(17BG,,C!#As8!4!4 ' 'g  Q+ODIIKKuEEEE66tyy{{D%PPE&&&&Jr%   c                     |          }t          j        t          |           t           j                  }t	          t          |                     D ]1}|r | |         ||          ||<    | |         ||          ||<   2|S r,   )ra   r   rE   r4   r2   )	r  r  r  r  r   r.   r  r   r"  s	         r&   r$  z"np_digitize.<locals>.digitize_impl'  s    //55M(3q6627++C3q66]] K K  K,_QqT4??CFF77!dEJJCFFJr%   r2  )r	   rT   r   r   r  )r  r  r  r$  r  r   r"  s       @@@r&   np_digitizer&    s      & # # #J " " "H !U[!! 		 		 		 		 		 		 		 		 	Au~	&	& 	 	 	 	 	 	 	 	  r%   r  c                     t          |t          t          j        f          r+|d t          j        fv rt          d          dfd	}n	dd}ndd}|S )Nrw  r  c                     } }t          j        |           D ]&}|                                }||k    r|}||k     r|}'t          j        | |||f          S r,   )ra   rb   rc   	histogram)r-   r  r2   bin_minbin_maxr   rf   rw  s          r&   histogram_implz$np_histogram.<locals>.histogram_impl@  si    $IaLL $ $D		A{{"#{{"#|Atgw-?@@@r%   c                    |dk    rt          d          |\  }}||k    st          d          t          j        |t          j                  }||k    r|||z
  z  }t          j        |           D ]w}|                                }t          j        ||z
  |z            }	d|	cxk    r|k     r!n n|t          |	          xx         dz  cc<   ^||k    r||dz
  xx         dz  cc<   xt          j	        |||dz             }
||
fS )Nr   z0histogram(): `bins` should be a positive integerz;histogram(): max must be larger than min in range parameterr)   )
r}   ra   r  r4   rb   rc   ry  rz  r{  linspace)r-   r  r2   r*  r+  hist	bin_ratior   rf   rj  
bins_arrays              r&   r,  z$np_histogram.<locals>.histogram_implL  s6   199$ &8 9 9 9#( '))$ &> ? ? ? xbg..W$$ $'(9 :I "	! 0 0 IIKK JGy'@AA====D===== QLLLA-LLLL'\\ NNNa/NNN['4!8DD
Z''r%   c                    t          |          dz
  }t          |          D ]&}||         ||dz            k    st          d          '|d         }||         }t          j        |t          j                  }|dk    r}t          j        |           D ]h}|                                }	||	cxk    r|k    sn &d}
|dz
  }|
|k     r%|
|z   dz   dz	  }|	||         k     r|dz
  }n|}
|
|k     %||
xx         dz  cc<   i||fS )Nr)   z-histogram(): bins must increase monotonicallyr   )rE   _ranger}   ra   r  r4   rb   rc   )r-   r  r2   nbinsr.   r*  r+  r/  r   rf   r   r  rZ  s                r&   r,  z$np_histogram.<locals>.histogram_implf  sE   IIMEE]] 6 6Aw$q1u+--$ &5 6 6 6 . 1gG5kG8E27++DqyyIaLL " "D		A"a222272222 BBr''  "Bw{q0tCy==!$qBB!$B r'' HHHMHHHH:r%   r  N)rT   r{  r   r  r.  rf  )r-   r  r2   r,  rw  s       @r&   np_histogramr6  7  s    $em,-- L T5:&&&,,C	A 	A 	A 	A 	A 	A 	A( ( ( ( (4	 	 	 	B r%   )ibetar  machepepsnegepepsnegiexpminexpxminmaxexpxmaxirndngrdepsilontinyhuge	precision
resolutionMachAr)r9  r;  r<  r8  r  r?  r   r=  r:  nexpnmantrF  rG  rD  bitsr  )r   r  rK  r  c                  (   t           dk    rd S t           dk    d t          j        d          5 d} t          j        d| t          d           t
          j        d d d            n# 1 swxY w Y   t                    fd	            }d S )
N)r)      )r)   rE  T)recordz(`np.MachAr` is deprecated \(NumPy 1.22\)alwaysz.*numba.*arraymath)messagecategoryr:  c                                   t          fdt          D                       r@r>d         } t          j        | j        j        d         t          | j        | j                   fd}|S )Nc                 0    g | ]}t          |          S r$   rM  r  r  r  s     r&   r  z7_gen_np_machar.<locals>.MachAr_impl.<locals>.<listcomp>  s!    IIIwq!}}IIIr%   r   c                      t            S r,   )rH  )_mach_ar_datas   r&   rI  z1_gen_np_machar.<locals>.MachAr_impl.<locals>.impl  s    =))r%   )	rJ  _mach_ar_supportedwarningswarn_explicitrP  r:   r   filenamelineno)wmsgrI  rV  r  	np122plus	np_MachArws     @@r&   MachAr_implz#_gen_np_machar.<locals>.MachAr_impl  s    IKKIIII6HIIIJJ 	0 	0Q4D"4<#4Q#7#:#'=#';0 0 0
	* 	* 	* 	* 	*r%   )r   rX  catch_warningsfilterwarningsDeprecationWarningra   rH  r   )r   r`  r]  r^  r_  s     @@@r&   _gen_np_macharrd    s    (IA		 	-	-	- 9#);'<	> 	> 	> 	> I	               i        s   ,A++A/2A/c                 D     t                      fd            }d S )Nc                     t          | d|           }t          |          }	  |          n# t          $ r Y d S w xY wt          fdD                       fd}|S )Nr   c                 0    g | ]}t          |          S r$   rM  rT  s     r&   r  z6generate_xinfo.<locals>.xinfo_impl.<locals>.<listcomp>  s!    222gamm222r%   c                       S r,   r$   )r  	containerr@   s    r&   rI  z0generate_xinfo.<locals>.xinfo_impl.<locals>.impl  s    9d##r%   )r   r
   r}   rJ  )	r  nbtynp_dtyperI  r@   r  attrri  np_funcs	       @@r&   
xinfo_implz"generate_xinfo.<locals>.xinfo_impl  s    sGS))D>>	!!AA 	 	 	44	 2222T22233	$ 	$ 	$ 	$ 	$ 	$s   1 
??)r   )rm  ri  rl  rn  s   ``` r&   generate_xinforo    sE    g        r%   c                    t           d             }t          s|S t          j        t          j        z  }| |v o||v }|s|S t          |           }t          |          }t          j        ||          t           fd            }|S )Nc                 p    d}t          t          |                     D ]}|| |         ||         z  z   }|S r   r2   rE   )r-   rj  accr.   s       r&   
_innerprodz#_get_inner_prod.<locals>._innerprod  s?    s1vv 	$ 	$A!qt#CC
r%   c                 z    t          j        |                               |                                        S r,   )ra   r  r  )r-   rj  r  s     r&   	_dot_wrapz"_get_inner_prod.<locals>._dot_wrap  s)    6!((2,,555r%   )r	   
_HAVE_BLASr   real_domaincomplex_domainr
   ra   rn  )	dtadtbrt  fltyfloatsa_dtb_dtrv  r  s	           @r&   _get_inner_prodr    s         u33DD[(SD[F 
}}}}dD))		6 	6 	6 	6 
		6r%   c                 x    t          | t          j                  r| j        dk    st	          d|z            d S d S )Nr)   z!%s() only supported on 1D arrays )rT   r   r   r|   r   )r-   r  s     r&   
_assert_1dr    sG    !U[!! Ov{{AIMNNNO O{r%   c                     d S r,   r$   )ap1ap2mode	directions       r&   _np_correlate_corer    r/  r%   c                       e Zd ZdZdZdZdZdS )_corr_conv_Modez
    Enumerated modes for correlate/convolve as per:
    https://github.com/numpy/numpy/blob/ac6b1a902b99e340cf7eeeeb7392c91e38db9dd8/numpy/core/numeric.py#L862-L870    # noqa: E501
    r   r)   r{   N)__name__
__module____qualname____doc__VALIDSAMEFULLr$   r%   r&   r  r    s)          EDDDDr%   r  c                    	 t          | j                  }t          |j                  }t          j        ||          t	          | j        |j                  	t
          	fd}|S )Nc                    |j         k    s|j        k    st          d          t          |           }t          |          }|}|}|j         k    r||z
  dz   }d}d}	n-|j        k    r|dz
  }	|dz
  }||z   dz
  }nt          d          t	          j        |          }
||z
  }|dk    rd}d}n|dk    r|dz
  }d}nt          d          t          |          D ]-} | d |dz            ||dz    d                    |
|<   ||z   }.t          ||z
  dz             D ]!} | |||z            |          |
|<   ||z   }"t          |	dd          D ]'} | | d          |d |                   |
|<   ||z   }(|
S )NzInvalid moder)   r   r@  zInvalid direction)r  r  r}   rE   ra   r  r2   )r  r  r  r  n1n2r}  rk  n_leftn_rightr_  r   incr.   Moder  	innerprods                 r&   rI  z%_np_correlate_core_impl.<locals>.impl  s    
""ddi&7&7^,,,XXXX4:aZ!^FFGGTY!eGUFaZ!^FF^,,,hvr""J>>CCC"__1*CCC0111v 	 	A yXcAgXcAgJKK0@AACH)CCrBw{## 	 	A yQRZ#66CH)CCw2&& 	 	A yaRSS3rr733CH)CC
r%   )r
   r   ra   rn  r  r  )
r  r  r  r  r~  r  rI  r  r  r  s
          @@@r&   _np_correlate_core_implr    sx    CIDCID		$	%	%B	3955ID2 2 2 2 2 2 2h Kr%   c                 @   t          | d           t          |d           t          d             }t          d             }t          | j        t          j        v r|j        t          j        v r||n!||n|j        t          j        v r||n||fd}|S )Nznp.correlatec                 *    t          j        |           S r,   )ra   r   r  s    r&   op_conjz_np_correlate.<locals>.op_conjQ  s    wqzzr%   c                     | S r,   r$   r  s    r&   op_nopz_np_correlate.<locals>.op_nopU  s    r%   c                 D   t          |           }t          |          }|dk    rt          d          |dk    rt          d          ||k     r)t           |           |           j        d          S t           |            |          j        d          S Nr   z'a' cannot be emptyz'v' cannot be emptyr@  r)   )rE   r}   r  r  )r-   rf   lalvr  a_opb_ops       r&   rI  z_np_correlate.<locals>.implj  s    VVVV77233377233377%dd1ggttAww
BGGG%dd1ggttAww
AFFFr%   )r  r	   r  r   r   ry  )r-   rf   r  r  rI  r  r  r  s        @@@r&   _np_correlater  L  s    q.!!!q.!!!      Dw%&&&7e***DDDDDD7e***DDDDD
G 
G 
G 
G 
G 
G 
G Kr%   c                 `    t          | d           t          |d           t          fd}|S )Nznp.convolvec                     t          |           }t          |          }|dk    rt          d          |dk    rt          d          ||k     r t          || d d d         j        d          S t          | |d d d         j        d          S r  )rE   r}   r  r  )r-   rf   r  r  r  s       r&   rI  znp_convolve.<locals>.impl  s    VVVV77233377233377%a44R4$)Q???%a44R4$)Q???r%   )r  r  )r-   rf   rI  r  s      @r&   np_convolver  y  sM    q-   q-   D@ @ @ @ @ Kr%   c                 >   t          |           sd S d }t          | t          j                  r+t	          |          s| j        |j        k    rd	d}nGd	d}nAt          | t          j        t          j        f          rt	          |          rd	d}nd	d}n t          | t          j        t          j	        f          r)t	          |          r| n|}t          |          d	fd	}nt          | t          j        j                  rYt          | j        t          j        t          j	        f          st          d          t	          |          r| j        n|d	fd	}n9t          | t          j                  rt          j        | j                  d	fd	}|S )
Nc                     | S r,   r$   r-   r   s     r&   rI  znp_asarray.<locals>.impl  s    r%   c                 ,    |                      |          S r,   )r  r  s     r&   rI  znp_asarray.<locals>.impl  s    xx&r%   c                 *    t          j        |           S r,   r*  r  s     r&   rI  znp_asarray.<locals>.impl  s    x{{"r%   c                 ,    t          j        | |          S r,   r*  r  s     r&   rI  znp_asarray.<locals>.impl  s    x5)))r%   c                 .    t          j        |           S r,   r*  )r-   r   r  s     r&   rI  znp_asarray.<locals>.impl  s    8Ar??"r%   z?asarray support for List is limited to Boolean and Number typesc                     t          |           }t          j        |          }t          |           D ]
\  }}|||<   |S r  )rE   ra   r   r   )r-   r   r4  r_  r.   rf   target_dtypes         r&   rI  znp_asarray.<locals>.impl  sK    AA(1L111C!!  1AJr%   c                 ,                                     S r,   )r  )r-   r   rd   s     r&   rI  znp_asarray.<locals>.impl  s    88::r%   r,   )r   rT   r   r   r   r   r  rW   r}  r|  r
   
containersListTyper   StringLiteralra   ro  rV   )r-   r   rI  dt_convrd   r  r  s       @@@r&   
np_asarrayr    s   
 A tD!U[!! )u 	'EK!7!7    ' ' ' ' '	A4	5	5 " u 	*# # # # #* * * * *	Aem4	5	5 "5))4!!ug	# 	# 	# 	# 	# 	# 	#	Au'0	1	1 !'EL%-#@AA 	/./ / / #.e"4"4?qww%	 	 	 	 	 	 	 
Au*	+	+ j))	 	 	 	 	 	 Kr%   c                     t          |t          j                  rt          |          }t	          j        |t          j                  st          j        n|t          j        ffd	}|S )Nc                 .    t          j        |           S r,   rU  )r-   r   rQ  s     r&   rI  znp_asfarray.<locals>.impl  s    z!R   r%   )rT   r   Typer
   ra   r  inexactr   )r-   r   rI  rQ  s      @r&   np_asfarrayr    sp     %$$  =
++ ]j ! ! ! ! ! !Kr%   c                     d }|S )Nc                    t          j        |                                           t          j        |          j        dk    rt	          d          t          j        j        d                    r!j        j        k    rd}t	          |          t          j        j                  }fdt          |          D             }t          j        |          S )Nr   z"Cannot extract from an empty arrayz+condition shape inconsistent with arr shapec                 :    g | ]}|         
j         |         S r$   r  )r  r   r-   r  s     r&   r  z7np_extract.<locals>.np_extract_impl.<locals>.<listcomp>  s(    BBBsS	Bqvc{BBBr%   )	ra   ro  rp  r   r}   r  r   r2   r+  )r  rd   r   max_lenr   r-   r  s        @@r&   np_extract_implz#np_extract.<locals>.np_extract_impl  s    z)$$,,..JsOO6Q;;ABBB 6$qvww-   	"TY%7%7?CS//! afdi((BBBBBeGnnBBBx}}r%   r$   )r  rd   r  s      r&   
np_extractr    s      ( r%   c                    dd}t          | t          j        t          j        f          st	          d          t          |t          j        t          j        f          st	          d          t          |t
          t          j        t          j        f          st	          d          t          | d         t          j                  st	          d          t          |d         t          j                  st	          d          t          | d         t          j                  r4t          | d         j	        t          j                  st	          d          t          | d         t          j                  rUt          | d         t          j                  r&t          | d         d         t          j                  st	          d	          t          | d         t          j                  r+| d         j
        |d         j
        k    rt	          d
          t          | d         t          j                  r | d         j
        dk     rt	          d          |S )Nr   c                 T   t          |           t          |          k    rt          d          |t          j        |d         j        |d         j                  z  }t          t          |           dz
  dd          D ](}| |         }||         }t          j        |||          })|S )Nz7list of cases must be same length as list of conditionsr   r)   r@  )rE   r}   ra   r  r   r   r2   r  )condlist
choicelistdefaultr   r.   r  choices          r&   np_select_arr_implz%np_select.<locals>.np_select_arr_impl  s    x==C
OO++ - . . .
1 3Z]5HIIIs8}}q("b11 	. 	.AA;D]F(4--CC
r%   z"condlist must be a List or a Tuplez$choicelist must be a List or a Tuplez,default must be a scalar (number or boolean)z items of condlist must be arraysz"items of choicelist must be arraysz%condlist arrays must contain booleansz*condlist tuples must only contain booleanszHcondlist and choicelist elements must have the same number of dimensionsr)   z/condlist arrays must be of at least dimension 1r  )rT   r   ListrF   r   r{  r}  r|  r   r   r|   )r  r  r  r  s       r&   	np_selectr    s   
 
 
 
 hU^ <== CABBBj5:u~">?? ECDDDgU\5=ABB MKLLL hqk5;// A?@@@jmU[11 CABBB (1+u{++ J(1++U];; 	J !HIII(1+u~.. O8A;77 	Ox{1~u}==	O !MNNN8A;,, :QK
1 222 9 : : 	:(1+u{++ P0@10D0DNOOOr%   c                     t          |           rt          |          st          d          d| j        j        v sd|j        j        v r)| j        j        |j        j        k    rt          d          d }|S )Nz.The arguments to np.union1d must be array-likeunichrz/For Unicode arrays, arrays must have same dtypec                     t          j        t          j        |                     }t          j        t          j        |                    }t          j        t          j        ||f                    S r,   )ra   rB  ro  r  r  )arr1r  r-   rj  s       r&   
union_implznp_union1d.<locals>.union_impl,  sR    HRZ%%&&HRZ%%&&yA//000r%   )r   r   r   r  )r  r  r  s      r&   
np_union1dr  $  s    D!! L)9$)?)? LJKKK	TZ_	$	$DJO(C(Cz$*/))KLLL1 1 1
 r%   c                 "   d}t          | t          j        t          j        t          j        f          st          |          t          |          r| j        n.	 t          |          n# t          $ r t          d          w xY wdfd	}|S )Nz7The argument to np.asarray_chkfinite must be array-likez!dtype must be a valid Numpy dtypec                     t          j        |           } t          j        |           D ]%}t          j        |          st	          d          &| S )Nr  z#array must not contain infs or NaNs)ra   ro  rb   rv  r}   )r-   r   r.   r  s      r&   rI  z"np_asarray_chkfinite.<locals>.implC  s[    Jq###1 	H 	HA;q>> H !FGGGHr%   r,   )
rT   r   r   r  rW   r   r   r   r
   r   )r-   r   r   rI  r  s       @r&   np_asarray_chkfiniter  4  s     DCa%+u~u{CDD #5 CW	C%BB' 	C 	C 	CABBB	C      Ks   A, ,Bc                     t          j        d| z
  | d          }t          j        t          j        |d          d|| dz
  z  z   d|| dz
  z  z
            S )NrY  r{   r   r)   )ra   r  r  
less_equalr  rk  s     r&   np_bartlett_implr  U  sQ    
	"q&!QA8BM!Q''Q!a%[!a1q5k/JJJr%   c                     t          j        d| z
  | d          }ddt          j        t           j        |z  | dz
  z            z  z   dt          j        dt           j        z  |z  | dz
  z            z  z   S )NrY  r{   gzG?r   r)   g{Gz?r[  ra   r  cosrX  r  s     r&   np_blackman_implr  [  sn    
	"q&!QA3	QU 3444426#+/QU34445 6r%   c                     t          j        d| z
  | d          }ddt          j        t           j        |z  | dz
  z            z  z   S )Nr)   r{   gHzG?gq=
ףp?r  r  s     r&   np_hamming_implr  b  sB    
	!a%AA$	QU 344444r%   c                     t          j        d| z
  | d          }ddt          j        t           j        |z  | dz
  z            z  z   S )Nr)   r{   r   r  r  s     r&   np_hanning_implr  h  sB    
	!a%AArvbeai1q5122222r%   c                       fd}|S )Nc                 d    t          | t          j                  st          d          fd}|S )NM must be an integerc                     | dk     r t          j        dt           j                  S | dk    r t          j        dt           j                  S  |           S )Nr)   r$   r  )ra   r+  float_r  )r  r  s    r&   window_implz>window_generator.<locals>.window_overload.<locals>.window_impls  sP    1uux")4444Avvwq	2222477Nr%   )rT   r   r  r   )r  r  r  s     r&   window_overloadz)window_generator.<locals>.window_overloado  sG    !U]++ 	64555	 	 	 	 	 r%   r$   )r  r  s   ` r&   window_generatorr  n  s$         r%   )g4!\Tg}b3<gr넱g^<g"P
g'&&KF5=gbLag$ӛ/=gjzg<t̾=gVg4T&>g0Kg5dMv;p>g"c쑾g$>g'doҾgY(X?>gZY&+g|t(?gRBguZ?gI ^qga?g!Ng-Ί>?g-4pKgw?gWӿg*5N?)gT`g0fFVg!<gA`<gҫ`g8箸g}<g攐*<gbe~g2hϙ]'gE_V=gsk[=g&GCi=gfCg{~5g%t9QgO $=guo >g["d,->gmրVX>gna>g+A>gRx?gI墌k?g	b?c                     |d         }d}t          dt          |                    D ]}|}|}| |z  |z
  ||         z   }d||z
  z  S )Nr   r  r)   r   rr  )r  valsb0b1r.   b2s         r&   _chbevlr    s_    	aB	B1c$ii   # #Vb[47""r'?r%   c                    | dk     r|  } | dk    r2d| z  dz
  }t          j        |           t          |t                    z  S t          j        |           t          d| z  dz
  t                    z  t          j        |           z  S )Nr   g       @r   r[  g      @@)ra   expr  _i0A_i0Br  r"  s     r&   _i0r    sw    1uuBCxx1WOvayy71d++++6!99wtax#~t444rwqzzAAr%   c           	      >   t          j        | t           j                  }t          t          j        |                    }t	          t          |                    D ]>}t          |t          j        d| |         |z
  |z  dz  z
            z            |z  ||<   ?|S )Nr  r)   r[  )ra   r  r  r  r2   rE   r  )rk  alphabetar  tr.   s         r&   _i0nr    s    
ary)))ABIdOOA3q66]] J J4"'!!u'=&C"CDDDEEI!Hr%   c                     t          | t          j                  st          d          t          |t          j        t          j        f          st          d          d }|S )Nr  z beta must be an integer or floatc                     | dk     r t          j        dt           j                  S | dk    r t          j        dt           j                  S t          j        d|           }| dz
  dz  }t          |||          S )Nr)   r$   r  r   r[  )ra   r+  r  r  r  r  )r  r  rk  r  s       r&   np_kaiser_implz!np_kaiser.<locals>.np_kaiser_impl  sp    q558Bbi00006671BI....IaOOQ#Aud###r%   )rT   r   r  r   r  )r  r  r  s      r&   	np_kaiserr    sf    a'' 20111dU]EK899 ><===	$ 	$ 	$ r%   c                 h   d } ||           \  }}} ||          \  }}}	t          j        ||	          t          j        ||          z
  }
t          j        ||          t          j        ||	          z
  }t          j        ||          t          j        ||          z
  }|
|d<   ||d<   ||d<   d S )Nc                     | d         }| d         }| j         d         dk    r	| d         }n-t          j        | j                            d          |          }|||fS )N.r   .r)   r@  rz   .r{   r   )r   ra   r  r   r   )r  x0r  x2s       r&   _cross_preprocessingz._cross_operation.<locals>._cross_preprocessing  sY    vYvY72;!6BBQW\\!__b11B2rzr%   r  r  r  )ra   r  )r-   rj  r   r  a0a1r  r  r  r  cp0cp1cp2s                r&   _cross_operationr    s       &%a((JBB%%a((JBB
+b"

B 3 3
3C
+b"

B 3 3
3C
+b"

B 3 3
3CCKCKCKKKr%   c                     d S r,   r$   r  s     r&   _crossr    r/  r%   c                     t          j        t          | j                  t          |j                            | j        dk    r|j        dk    rfd}nfd}|S )Nr)   c                 T    t          j        d          }t          | ||           |S )Nrz   )ra   r   r  )r-   rj  cpr   s      r&   rI  z_cross_impl.<locals>.impl  s+    $&&BQ2&&&Ir%   c                     t          j        | d         |d                   j        }t          j        |dz             }t	          | ||           |S )Nr  r  )ra   r  r   r   r  )r-   rj  r   r  r   s       r&   rI  z_cross_impl.<locals>.impl   sK    F1V9ai006E%$,..BQ2&&&Ir%   )ra   rn  r
   r   r|   )r-   rj  rI  r   s      @r&   _cross_implr    s|    Xag..0A0ABBEv{{qv{{	 	 	 	 	 	
	 	 	 	 	
 Kr%   c                 f    t          |           rt          |          st          d          d }|S )NInputs must be array-like.c                 .   t          j        |           }t          j        |          }|j        d         dvs|j        d         dvrt          d          |j        d         dk    s|j        d         dk    rt	          ||          S t          d          )Nr@  )r{   rz   zDIncompatible dimensions for cross product
(dimension must be 2 or 3)rz   zDimensions for both inputs is 2.
Please replace your numpy.cross(a, b) call with a call to `cross2d(a, b)` from `numba.np.extensions`.)ra   ro  r   r}   r  r-   rj  r  r  s       r&   rI  znp_cross.<locals>.impl-  s    Z]]Z]]8B<v%%"V)C)C-  
 8B<1 1 1"b>>!H  r%   r  r-   rj  rI  s      r&   np_crossr  (  sG    A 8&6q&9&9 86777  " Kr%   c                     d } ||           \  }} ||          \  }}t          j        ||          t          j        ||          z
  }t          j        |          S )Nc                 *    | d         }| d         }||fS )Nr  r  r$   )r  r  r  s      r&   r  z0_cross2d_operation.<locals>._cross_preprocessingD  s    vYvY2vr%   )ra   r  ro  )r-   rj  r  r  r  r  r  r  s           r&   _cross2d_operationr  A  sm      
 "!!$$FB!!!$$FB	R		r{2r22	2B :b>>r%   c                     d S r,   r$   r  s     r&   cross2dr  U  r/  r%   c                 f    t          |           rt          |          st          d          d }|S )Nr  c                     t          j        |           }t          j        |          }|j        d         dk    s|j        d         dk    rt          d          t	          ||          S )Nr@  r{   zRIncompatible dimensions for 2D cross product
(dimension must be 2 for both inputs))ra   ro  r   r}   r  r  s       r&   rI  zcross2d_impl.<locals>.impl^  sf    Z]]Z]]8B<1 1 18   ""b)))r%   r  r  s      r&   cross2d_implr"  Y  sG    A 8&6q&9&9 86777* * * Kr%   r,   rz  r  r2  r   r  r  ra  r   r  r  rK  r  r5  (r  r  ry  collectionsr   enumr   r3  rX  llvmlite.irr;  numpyra   
numba.corer   r   numba.core.extendingr   r   r	   numba.np.numpy_supportr
   r   r   r   r   r   numba.core.imputilsr   r   r   r   numba.np.arrayobjr   r   r   r   numba.np.linalgr   r   numba.core.errorsr   r   r   r   r   r   numba.cpython.unsafe.tupler    r'   rw  rJ   r]   r  r   rt   rw   r   r4   	DTypeSpecIntegerLiteralr   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+  r3  r8  r;  r=  r2  rK  rO  rP  rU  rd  re  r  r  r  averager  r  	iscomplexr  isrealr  r  r  isscalarr  r  r  r  r  r  r  r  r  r  r  r  r  r  nanminr  nanmaxr  r  r   r  r  nanstdr
  nansumr  nanprodr  
nancumprodr  	nancumsumr!  r%  r+  r.  r1  r5  r9  r;  rD  rE  rP  rR  r`  r_  _partition_w_nan_argpartition_w_nanrf  re  r  r  rh  rm  medianrr  r  r  r  r  r  r  r  r}  r  nanpercentiler  quantiler  nanquantiler  	nanmedianr  r  r  r  	partitionr  r]  r  r  r  r  r  r  trilr  r  r  tril_indices_fromr  r  triur  r"  r  triu_indices_fromr$  r'  r/  r5  ediff1drF  rH  rO  rR  rX  trapzrb  re  rg  vanderrp  rollrw  r{  r  r  r  interpr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  corrcoefr  argwherer  flatnonzeror  r  r  r  r  r   r3  r#  r)  fill_diagonalr4  r7  rC  rI  aroundrR  rU  r[  r\  rd  rh  r  r  r  r  r  r  r  r  r  r   r  r   r  containsr  count_nonzeror  r  r  deleter  r8  r  array_equalr  intersect1dr  r  r  r  r  _lt_ler  r  r  digitizer&  r2   r3  r)  r6  rW  rH  _finfo_supportedr  _iinfo_supportedr  rd  ro  r  r  r  r  r  	correlater  convolver  ro  r  asfarrayr   r  extractr  selectr  union1dr  asarray_chkfiniter  r  r  r  r  r  bartlettblackmanhamminghanningr+  r  r  r  r  r  kaiserr  r  r  r  crossr  r  r  r"  r$   r%   r&   <module>ri     sq"   
  " " " " " "                 % % % % % % % % L L L L L L L L L L6 6 6 6 6 6 6 6 6 6 6 6 6 6 6 6G G G G G G G G G G G G/ / / / / / / / / / / / ' ' ' ' ' ' * * * * * *H H H H H H H H H H H H H H H H 5 4 4 4 4 4   []]
 %! %! %!P E! E! E!V rvu{##{EK((E E )( $#E   > > >B rvu{EJ@@rvu{E$8%/JJ{EKU_EE{EK)=uOO$D $D PO FE KJ A@$DN rvu{U_55{EK99E E :9 65E rvu{EJ//rvu{E$899{EK44{EK)=>>%D %D ?> 54 :9 0/%DP   
"'f%%  &%  
")h''! ! (' !. 
"*i((" " )( ". 
"'f%%  &% * 
"&e$$  %$   
"&e$$  %$           
"&e$$, , %$ ,^ 
"&e$$, , %$ ,^   *   *   & 
")h''   (' $   *   *   ") ) )X 
")h''   (' $ 
"&e$$  %$     2 
"+j))?, ?, ?, *) ?,D 
"&e$$  %$  
"*! ! ! !H
 
 
 
",   
")   
"/  & 
",   
"+  
 
 
 
"+& & & &
 
"+& & & &
       P P P
  D 	E:::  u===  "!	D999  "!t<<< 
 2 2 2 
"*& & & &R 
")   
")   
"*  & 
")  0 
")   
")  * 
"*  * 
"-  0 
",  0     (	 	 		 	 	 
.H H H 
.H H H	 	 	 
-  . e$$	"&   %$<   . . . .b 00;;<<
##$6$67J$K$KLL &&'9'9( ( (     " 
??:66
7
7  1A!B!BCC$$__5H%I%IJJ       0 3 3 3 
")   1 1 1h         F F F
 B B B
   "" " "4 
"-   
"
   
"+   
".   
",  0   (   *   D 
",  0 
"/     6 	 	 	 
"&
 
 
 
     > > > >
 
"'" " " "4 
"/
  
  
  
  
"

% 
% 
%  
% > > > >
 
"'" " " "2 
"/
  
  
  
  
"

% 
% 
%  
%	 	 	 
.1 1 1     " 
"*4 4 4 4n	 	 	 
/  	 	 	 
&   
"(   * < < <6 @ @ @ 
")$" $" $" $"N 
"'  2   A A AH j j jZ U U Up 
")% % %V 	 	 	   0	 	 	 

"##$$ $$ $#$$N       %$[[11   *O O O 8 8 8 $#KK00  9 9 9  4 3 3 3    
"&7 7 7 7t 
"+       H 
"+  0 
".  "   *       D D D D D D nn--
	 	 	 
(1 1 1 
"
   @, , ,
   " ) ) )4 
")	"(4 4 4  4n 
"'M M M& 
"(< < < <@ rz5;'',,5D 5D -, ('5Dp          . 
"(      
"(2 2 2j 
"'   
"'   
(

 
 
 
"
     -,\\:: ,,-E-EFF  
")+% +% +%\ 
"'# # # #L 
".  * 
".     ,, , , 
"+6 6 6 6r/ / /d **++%%mmC&8&899 &&}}S'9'9::  
"/+ + + +\ 
"+} } } }@ 
 
",O O O Oh%  
H0	1	13 
 	
7,-- + 
7,--
  >      " rx 0 1 1 1 rx 0 1 1 1  <O O O	 	 	    g    

< < <~ 
",) ) )X 
"+  . 
"*3 3 3 3l 
"+     
"*  2 
")/ / / /d 
"*   
"
    @ K K K
 6 6 6 5 5 5
 3 3 3
  "   &&'788 9 9 9   &&'788 9 9 9   %%o66 7 7 7   %%o66 7 7 7 rx     B rx     : 	 	 	 B B B    
")  *   .	 	 	 
&    
"(  0   &	 	 	 
'    r%   