
    |h#Y             	       V&   S r SSKrSSKJr  SSKrSSKrSSKrSSKr	SSK
JrJr  SSKJrJrJr  SSKJrJrJrJrJrJrJrJr  SSKJrJrJrJr  SSKJ r J!r!J"r"J#r#  SS	K$J%r%  SS
KJ&r&  SSK'J(r(J)r)J*r*J+r+J,r,J-r-  SSK.J/r/  S r0\0" 5       r1\&S 5       r2\&S 5       r3\" \	Rh                  \Rj                  5      \" S\Rj                  5      S 5       5       r6\S 5       r7S r8\" \	Rh                  \Rj                  \Rr                  \Rt                  5      \" \	Rh                  \Rj                  \Rv                  \Rt                  5      \" S\Rj                  \Rr                  \Rt                  5      \" S\Rj                  \Rv                  \Rt                  5      S 5       5       5       5       r<\" \	Rh                  \Rj                  \Rt                  5      \" S\Rj                  \Rt                  5      S 5       5       r=\" \	Rh                  \Rj                  \Rr                  5      \" \	Rh                  \Rj                  \Rv                  5      \" S\Rj                  \Rr                  5      \" S\Rj                  \Rv                  5      S 5       5       5       5       r>S r?\" \	R                  5      \" \Rj                  S5      S 5       5       rA\" \	R                  5      \" \Rj                  S5      S 5       5       rC\" \	R                  5      \" \Rj                  S5      S 5       5       rE\" \	R                  5      \" \Rj                  S5      S 5       5       rG\" \	R                  5      \" \Rj                  S 5      S! 5       5       rI\" \	R                  5      \" \Rj                  S"5      S# 5       5       rK\S$ 5       rL\S% 5       rM\S& 5       rN\" \	R                  5      \" \	R                  5      \" \Rj                  S'5      S( 5       5       5       rQ\" \	R                  5      \" \	R                  5      \" \Rj                  S)5      S* 5       5       5       rT\S+ 5       rU\S, 5       rV\S- 5       rW\" \	R                  5      \" \Rj                  S.5      GSS/ j5       5       rY\S0 5       rZ\S1 5       r[\S2 5       r\S3 r]\" \	R                  5      \" \Rj                  S45      GSS5 j5       5       r_\" \	R                  5      \" \Rj                  S65      S7 5       5       ra\GS	S9 j5       rb\" \	R                  5      \" \Rj                  S:5      GS	S; j5       5       rd\" \	R                  5      \" \Rj                  S<5      S= 5       5       rf\" \	R                  5      GS
S> j5       rhS? ri\" \	R                  5      S@ 5       rk\" \	R                  5      SA 5       rm\" \	R                  5      SB 5       rn\" \	R                  5      SC 5       ro\" \	R                  5      SD 5       rqSE rr\" \	R                  5      GSSF j5       rs\" \	R                  5      GSSG j5       rt\SH 5       ru\SI 5       rv\SJ 5       rwSK rx\" \x" \uS8SL95      ry\" \x" \vS8SL95      rz\" \x" \uSMSL95      r{\" \x" \vSMSL95      r|\SN 5       r}\" \	R                  5      GS	SO j5       r~\" \	R                  5      SP 5       r\" \	GR                  5      SQ 5       r\" \	GR                  5      SR 5       r\" \	GR
                  5      SS 5       r\" \	GR                  5      ST 5       r\" \	GR                  5      SU 5       r\" \	GR                  5      SV 5       r\" \	GR                  5      SW 5       r\" \	GR                  5      SX 5       r\SY 5       rSZ rS[ rS\ r\" \5      S] 5       r\" \5      S^ 5       rS_ r\" \5      S` 5       r\" \	GR2                  5      Sa 5       r\Sb:  a  \" \Rj                  Sc5      " \5        \Sd 5       rGSSe jr\" \" \u5      5      r\" \" \5      5      r\" \" \SMSf95      rSg r\" \" \5      5      r\" \" \5      5      r\" \" \5      5      r\Sh 5       r\Si 5       r\" \	GRL                  5      Sj 5       r\Sk 5       r\Sl 5       r\Sm 5       r\Sn 5       r\So 5       r\Sp 5       rSq r\" \	GR^                  5      Sr 5       r\" \	GRb                  5      Ss 5       r\" \	GRf                  5      St 5       r\" \	GRj                  5      Su 5       r\" \	GRn                  5      Sv 5       r\Sw 5       r\Sx 5       r\Sy 5       r\" \	GRx                  5      Sz 5       r\" \	GR|                  5      S{ 5       r\S| 5       r\" \	GR                  5      GSS} j5       r\S~ 5       r\GSS j5       r\" \	GR                  5      GSS j5       r\" \	GR                  5      GSS j5       r\" \	GR                  5      GSS j5       r\GSS j5       r\" \	GR                  5      GSS j5       r\" \	GR                  5      GSS j5       r\" \	GR                  5      GSS j5       rS r\" \5      S 5       rS r\" \	GR                  5      GS
S j5       rS r\" \5      S 5       rS r\" \5      S 5       r\" \	GR                  5      GSS j5       r\Sb:  a  \" \	GR                  5      " \5        \S 5       r\S 5       r\" \	GR                  5      GSS j5       r\" \	GR                  5      S 5       rSr\S 5       r\S 5       r\S 5       r\" \	GR                  5      S 5       r\S 5       r\S 5       rS r\" \5      S 5       r\S 5       r\" S 5      rS rS r\S 5       r\" S 5      r\S 5       rS r\S 5       r\S 5       r\" \	GR                  5      GSS j5       r\" \	GR                  5      GSS j5       r\" \	GR                  5      S 5       r\" \	GR                  5      S 5       r\S 5       Gr \S 5       Gr\S 5       Gr\S 5       Gr\S 5       Gr\" S 5      GrS Gr\" G\5      S 5       Gr\" \	GR                  5      GSS j5       Gr	S Gr
\&S 5       Gr\S 5       Gr\" \	GR                  5      \" \	GR                  5      GSS j5       5       Gr\Sb:  a  \" \	GR                   5      " G\5        \" \	GR"                  5      S 5       Gr\" \	GR&                  5      GSS j5       Gr\" \	GR*                  \Rj                  5      \" S\Rj                  5      S 5       5       GrS Gr\S 5       Gr\S 5       GrS Gr\" \	GR6                  5      S 5       Gr\" \	GR6                  5      S 5       Gr\" \	GR<                  5      S 5       Gr\" \	GR@                  5      S 5       Gr!\" \GRD                  5      S 5       Gr#\" \	GRH                  5      GSS j5       Gr%\" S 5      Gr&\" S 5      Gr'\" \	GRP                  5      S 5       Gr)\" \	GRT                  5      GSS j5       Gr+\" \	GRX                  5      S 5       Gr-\" \	GR\                  5      GSS j5       Gr/S Gr0\" \	GRb                  5      GSS j5       Gr2\" \5      Gr3\" \5      Gr4\S 5       Gr5\S 5       Gr6\S 5       Gr7\S 5       Gr8\S 5       Gr9S Gr:G\;" SS15      Gr<S Gr=\" \	GR|                  5      GSS j5       Gr>\" \	GR~                  5      GSS j5       Gr@G\AGrB\" \	GR                  5      GSS j5       GrDSGrE\" SG\E5      GrFSGrG\" SG\G5      GrHSGrI\" SG\I5      GrJS GrKG\K" 5         S GrL\" \	GR                  5      S 5       GrM\" \	GR                  5      S 5       GrNS GrOS GrPS GrQ\" G\Q5      S 5       GrR\" \	GR                  5      GSS j5       GrT\" \	GR                  5      GSS j5       GrV\" \	GR                  5      GSS j5       GrX\Sb:  a(  \" \	GR                  5      \	GR                  4S j5       Gr[\" \	GR                  5      S 5       Gr]\" \	GR                  5      GSS j5       Gr_\" \	GR                  5      S 5       Gra\" \	GR                  5      GSS j5       Grc\" \	GR                  5      GSS j5       Gre\S 5       Grf\S 5       Grg\S 5       Grh\S 5       GriS Grj\" \	GR                  5      " G\j" G\f5      5        \" \	GR                  5      " G\j" G\g5      5        \" \	GR                  5      " G\j" G\h5      5        \" \	GR                  5      " G\j" G\i5      5        \	GR                  " / SQ5      Grp\	GR                  " / SQ5      Grq\S 5       Grr\S 5       Grs\S 5       Grt\" \	GR                  5      S 5       Grv\S 5       GrwS Grx\" G\x5      S 5       Gry\" \	GR                  5      S 5       Gr{\GS  5       Gr|GS Gr}\" G\}5      GS 5       Gr~\" \	GR                  5      GSGS j5       Gr\" \	GR                  5      GSGS j5       Gr\" \	GR                  5      GSGS j5       Gr\" \	GR
                  5      GSGS j5       Gr\" \	GR                  5      GSGS j5       Grg(  z5
Implementation of math operations on Array objects.
    N)
namedtuple)typescgutils)overloadoverload_methodregister_jitable)as_dtypetype_can_asarraytype_is_scalarnumpy_versionis_nonelikecheck_is_integer	lt_floats
lt_complex)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                  :     [        5         g! [         a     gf = fNFT)r   ImportError     L/home/james-whalen/.local/lib/python3.13/site-packages/numba/np/arraymath.py_check_blasr(       s%       s   
 
c                    ^^^ [        U5      S-
  m[        R                  " [        R                  T5      mT" TU5      nUUU4S jnX44$ )z
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           	      Z  > U R                  T5      n[        R                  " U5      nUu  pgS n[        T5       Hl  n	U R	                  [
        R                  U	5      n
U R                  X[
        R                  " T[
        R                  5      Xj/5      nUR                  X[U	5      nMn     U$ )Nc                 
    X   $ Nr%   )ais     r'   array_indexerB_create_tuple_result_shape.<locals>.codegen.<locals>.array_indexerE   s	    4Kr&   )	get_value_typer   get_null_valuerangeget_constantr   intpcompile_internalinsert_value)cgctxbuilder	signatureargslltuptytupin_shape_r0   r/   dataidxdatand
shape_listtuptys               r'   codegen+_create_tuple_result_shape.<locals>.codegen=   s    &&u-$$W- 	 rA((Q7G))'*/**Z*L+3*=?D &&s!4C  
r&   )lenr   UniTupler6   )tyctxrD   shape_tuplefunction_sigrF   rC   rE   s    `   @@r'   _create_tuple_result_shaperM   ,   sD     
[	A	BNN5::r*E[1L*   r&   c                   ^	^
^ [        U[        R                  5      (       d  [        S5      eUR                  m	[        U5      m
T	T
:  a  Sm	T	nT
U-
  S-
  n/ nU[        R                  /U-  -  nU[        R                  /-  nU[        R                  /U-  -  n[        R                  " U5      mT" XU5      nU	U
U4S jnXx4$ )a0  
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                 p  > U R                  T5      n[        R                  " U5      nUu  pgnS nU R                  X[        R
                  " 5       / 5      n	[        ST5       H  n
UR                  XYU
5      nM     UR                  XWT5      n[        TS-   T5       H  n
UR                  XYU
5      nM     U$ )Nc                      [        S S 5      $ r-   )slicer%   r&   r'   create_full_slice<_gen_index_tuple.<locals>.codegen.<locals>.create_full_slice   s    t$$r&   r   r*   )r2   r   r3   r7   r   slice2_typer4   r8   )r9   r:   r;   r<   r=   r>   r@   	value_argrR   
slice_datar/   
axis_valuerC   rE   s              r'   rF   !_gen_index_tuple.<locals>.codegen|   s    &&u-$$W- !q	% ++G,1,=,=,?,.0
 q*%A&&s:C & ""3:> zA~r*A&&s:C +
r&   )	
isinstancer   Literalr   literal_valuerH   rT   r6   Tuple)rJ   rK   valueaxisbeforeafter
types_listrL   rF   rW   rC   rE   s            @@@r'   _gen_index_tuplerb   U   s     dEMM**!"DEE##J	[	B R
 FK!OEJ5$$%..J5::,J5$$%--J KK
#ET2L>   r&   z	array.sumc           
         ^ UR                  S5      mU4S jnU R                  XX#[        UR                   S9S9n[        XUR                   U5      $ )Nr   c                 j   > Tn[         R                  " U 5       H  nXR                  5       -  nM     U$ r-   npnditeritem)arrcvzeros      r'   array_sum_impl!array_sum.<locals>.array_sum_impl   ,    3AMA  r&   rj   localsreturn_typer7   dictr   contextr:   sigr<   rm   resrl   s         @r'   	array_sumrz      S     ??1D 
"
"7C*.*A # CCWsDDr&   c                     U $ r-   r%   )ri   rk   s     r'   _array_sum_axis_nopr}      s    Jr&   c                     ^ ^^^ UU UU4S jnU$ )Nc                   > U R                   nT(       d  US:  d  US:  a  [        S5      eX:  a  [        S5      e[        U R                  5      nX1   nUR	                  U5        [        X0R                  5      n[        R                  " UT[        T5      5      n[        U5       H  nT(       a   [        U R                  UT5      nX`U   -  nM*  US:X  a   [        U R                  US5      n	X`U	   -  nMP  US:X  a   [        U R                  US5      n
X`U
   -  nMv  US:X  a   [        U R                  US5      nX`U   -  nM  US:X  d  M  [        U R                  US5      nX`U   -  nM     T" US5      $ )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poprM   rf   fulltyper4   rb   )ri   r^   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oprl   s                r'   inner gen_sum_axis_impl.<locals>.inner   sn    xxax4!8  "G H H
 <>?? cii<

48K,dDJ?  /J&6syy*7E'G#122
 19#3CIIz1#ML,//FQY#3CIIz1#ML,//FQY#3CIIz1#ML,//FQY#3CIIz1#ML,//F+ *, &!}r&   r%   )r   r   r   rl   r   s   ```` r'   gen_sum_axis_implr      s    < <z Lr&   c                   ^ UR                   n[        USU5      " S5      n[        USS 5      c  [        R                  nO[        nUR
                  u  pxn	Sn
Sn[        U[        R                  5      (       a  UR                  nUS:  a  UR                  U-   nUS:  d  XR                  :  a  [        S5      eU R                  R                  U5      nU R                  X5      nUS   XS   4nUR                  XxU	/S9nSn
[!        XXe5      n[#        U5      mU4S	 jnU R%                  XX#5      n['        XUR                   U5      $ )
Ndtyper   r   Fz'axis' entry is out of boundsr   r<   Tc                    > T" X5      $ r-   r%   )ri   r^   r   compileds      r'   array_sum_impl_axis1array_sum_axis_dtype.<locals>.array_sum_impl_axis      ""r&   )rt   getattrrf   taker}   r<   rY   r   rZ   r[   r   r   typing_contextresolve_value_typer5   replacer   r   r7   r   )rw   r:   rx   r<   rettyrl   r   ty_arrayty_axisty_dtyper   r   axis_valgen_implr   ry   r   s                   @r'   array_sum_axis_dtyper      s;   
 OOE5'5)!,D ufd#+WW $'HH!XMN'5==)) ..A%]]^;NA--!?<==((;;NK''@Awq')kk8<k= IH)H# 
"
"7
KCGcoosCCr&   c           
         ^ UR                  S5      mU4S jnU R                  XX#[        UR                   S9S9n[        XUR                   U5      $ )Nr   c                 j   > Tn[         R                  " U 5       H  nX#R                  5       -  nM     U$ r-   re   )ri   r   rj   rk   rl   s       r'   rm   'array_sum_dtype.<locals>.array_sum_impl'  ro   r&   rp   rq   rs   rv   s         @r'   array_sum_dtyper   "  r{   r&   c                   ^ UR                   n[        USU5      " S5      n[        USS 5      c  [        R                  nO[        nUR
                  u  pxSn	Sn
[        U[        R                  5      (       a  UR                  n
U
S:  a  UR                  U
-   n
U
S:  d  XR                  :  a  SU
 S3n[        U5      eU R                  R                  U
5      nU R                  X5      nUS   U4nUR                  Xx/S9nSn	[!        XXe5      n[#        U5      mU4S	 jnU R%                  XX#5      n['        XUR                   U5      $ )
Nr   r   r   Fz'axis' entry (z) is out of boundsr   Tc                    > T" X5      $ r-   r%   )ri   r^   r   s     r'   r   +array_sum_axis.<locals>.array_sum_impl_axisW  r   r&   )rt   r   rf   r   r}   r<   rY   r   rZ   r[   r   r   r   r   r5   r   r   r   r7   r   )rw   r:   rx   r<   r   rl   r   r   r   r   r   msgr   r   r   ry   r   s                   @r'   array_sum_axisr   2  sB   
 OOE5'5)!,D ufd#+WW ((XMN'5==)) ..A%]]^;NA--!?">"22DEC!#&&((;;NK''@Aw kk2k3 IH)H# 
"
"7
KCGcoosCCr&   c                     U R                   [        R                  :X  a'  [        R                  " U5      R	                  U 5      nU$ U R                  U5      nU$ r-   )r   rf   timedelta64int64view)r   r]   acc_inits      r'   get_accumulatorr   ^  sF    zzR^^#88E?''. O ::e$Or&   prodc                    ^ [        U [        R                  5      (       a)  [        U R                  5      n[        US5      mU4S jnU$ g )Nr*   c                 j   > Tn[         R                  " U 5       H  nXR                  5       -  nM     U$ r-   re   r.   rj   rk   r   s      r'   array_prod_impl#array_prod.<locals>.array_prod_impln  s,    AYYq\VVX "Hr&   )rY   r   Arrayr	   r   r   )r.   r   r   r   s      @r'   
array_prodr   f  sB     !U[[!!!"5!,	  "r&   cumsumc                   ^^ [        U [        R                  5      (       a  U R                  [        R                  ;   nU R                  [        R
                  :H  nU(       a2  U R                  R                  [        R                  R                  :  d  U(       a  [        [        R                  5      mO[        U R                  5      m[        TS5      mUU4S jnU$ g )Nr   c                    > [         R                  " U R                  T5      nTn[        U R                  5       H  u  p4X$-  nX!U'   M     U$ r-   rf   emptysize	enumerateflatr.   outrj   idxrk   r   r   s        r'   array_cumsum_impl'array_cumsum.<locals>.array_cumsum_impl  F    ((1665)CA#AFF+C , Jr&   
rY   r   r   r   signed_domainbool_bitwidthr6   r	   r   )r.   
is_integeris_boolr   r   r   s       @@r'   array_cumsumr   w  s     !U[[!!WW 3 33
''U[[(177++ejj.A.AAUZZ(EQWW%E"5!,	 ! ' "r&   cumprodc                   ^^ [        U [        R                  5      (       a  U R                  [        R                  ;   nU R                  [        R
                  :H  nU(       a2  U R                  R                  [        R                  R                  :  d  U(       a  [        [        R                  5      mO[        U R                  5      m[        TS5      mUU4S jnU$ g )Nr*   c                    > [         R                  " U R                  T5      nTn[        U R                  5       H  u  p4X$-  nX!U'   M     U$ r-   r   r   s        r'   array_cumprod_impl)array_cumprod.<locals>.array_cumprod_impl  r   r&   r   )r.   r   r   r   r   r   s       @@r'   array_cumprodr     s     !U[[!!WW 3 33
''U[[(177++ejj.A.AAUZZ(EQWW%E"5!,	 "!' "r&   meanc                 H  ^ [        U [        R                  5      (       a  U R                  [        R                  [        [        R                  /5      -  ;   nU(       a  [        [        R                  5      nO[        U R                  5      n[        US5      mU4S jnU$ g )Nr   c                    > Tn[         R                  " U 5       H  nXR                  5       -  nM     XR                  -  $ r-   )rf   rg   rh   r   r   s      r'   array_mean_impl#array_mean.<locals>.array_mean_impl  s5     AYYq\VVX "vv:r&   )
rY   r   r   r   integer_domain	frozensetr   r	   float64r   )r.   	is_numberr   r   r   s       @r'   
array_meanr     sw     !U[[!!GGu33i6NNN	U]]+EQWW%E"5!,	 # "r&   varc                 L    [        U [        R                  5      (       a  S nU$ g )Nc                    U R                  5       nSn[        R                  " U 5       HF  nUR                  5       U-
  nU[        R                  " U[        R
                  " U5      -  5      -  nMH     X R                  -  $ Nr   )r   rf   rg   rh   realconjr   )r.   mssdrk   vals        r'   array_var_impl!array_var.<locals>.array_var_impl  sc    A CYYq\vvx!|rwwsRWWS\122 " <r&   rY   r   r   )r.   r   s     r'   	array_varr     s'     !U[[!!		   "r&   stdc                 L    [        U [        R                  5      (       a  S nU$ g )Nc                 (    U R                  5       S-  $ N      ?)r   r.   s    r'   array_std_impl!array_std.<locals>.array_std_impl  s    557c>!r&   r   )r.   r   s     r'   	array_stdr     s'     !U[[!!	" 	 "r&   c                 
    X:  $ r-   r%   r.   min_vals     r'   min_comparatorr    
    ;r&   c                 
    X:  $ r-   r%   r   s     r'   max_comparatorr    r  r&   c                     gNFr%   r   s    r'   return_falser    s    r&   minc                   ^^ [        U [        R                  5      (       d  g [        U R                  [        R                  [        R
                  45      (       a  [        R                  m[        mO[        U R                  [        R                  5      (       a  [        mS n[        U5      mOL[        U R                  [        R                  5      (       a  [        R                  m[        mO[        m[        mUU4S jnU$ )Nc                     U R                   UR                   :  a  gU R                   UR                   :X  a  U R                  UR                  :  a  ggNTFr   imagr   s     r'   	comp_funcnpy_min.<locals>.comp_func  ;    vv$7<<'66GLL(r&   c                 2  > U R                   S:X  a  [        S5      e[        R                  " U 5      n[	        U5      R                  S5      nT" U5      (       a  U$ U H5  nUR                  5       nT" U5      (       a  Us  $ T" XB5      (       d  M3  UnM7     U$ )Nr   zDzero-size array to reduction operation minimum which has no identityr   r   rf   rg   nextr   rh   )r.   it	min_valuer   rk   
comparatorpre_return_funcs        r'   impl_minnpy_min.<locals>.impl_min      66Q; = > > YYq\HMM!$	9%%D		Aq!!!''	  r&   )rY   r   r   r   
NPDatetimeNPTimedeltarf   isnatr  Complexr  r   Floatisnan)r.   r  r  r  r  s      @@r'   npy_minr"         a%%!''E,,e.?.?@AA((#
	AGGU]]	+	+&	 &i0
	AGGU[[	)	)((#
&#
$ Or&   maxc                   ^^ [        U [        R                  5      (       d  g [        U R                  [        R                  [        R
                  45      (       a  [        R                  m[        mO[        U R                  [        R                  5      (       a  [        mS n[        U5      mOL[        U R                  [        R                  5      (       a  [        R                  m[        mO[        m[        mUU4S jnU$ )Nc                     U R                   UR                   :  a  gU R                   UR                   :X  a  U R                  UR                  :  a  ggr  r  )r.   max_vals     r'   r  npy_max.<locals>.comp_func*  r  r&   c                 2  > U R                   S:X  a  [        S5      e[        R                  " U 5      n[	        U5      R                  S5      nT" U5      (       a  U$ U H5  nUR                  5       nT" U5      (       a  Us  $ T" XB5      (       d  M3  UnM7     U$ )Nr   zDzero-size array to reduction operation maximum which has no identityr  )r.   r  	max_valuer   rk   r  r  s        r'   impl_maxnpy_max.<locals>.impl_max:  r  r&   )rY   r   r   r   r  r  rf   r  r  r  r  r   r   r!  )r.   r  r+  r  r  s      @@r'   npy_maxr-    r#  r&   c                 j   U R                   S:X  a  [        S5      e[        R                  " U 5      n[	        U5      R                  S5      nSn[        R                  " U5      (       a  U$ SnU H@  nUR                  5       n[        R                  " U5      (       a  Us  $ Xb:  a  UnUnUS-  nMB     U$ Nr   *attempt to get argmin of an empty sequencer*   r   r   rf   rg   r  r   r  rh   )arryr  r  min_idxr   r   rk   s          r'   array_argmin_impl_datetimer4  O      yyA~EFF	4BRa IG	xx	
CIIK88A;;J=IGq  Nr&   c                 (   U R                   S:X  a  [        S5      eU R                   H  nUnSn  O   [        R                  " W5      (       a  W$ SnU R                   H0  n[        R                  " U5      (       a  Us  $ X:  a  UnUnUS-  nM2     W$ r/  r   r   r   rf   r!  r2  rk   r  r3  r   s        r'   array_argmin_impl_floatr9  e      yyA~EFFYY	  
xx	
CYY88A;;J=IGq  Nr&   c                     U R                   S:X  a  [        S5      eU R                   H  nUnSn  O   [        S5      eSnU R                   H  nX:  a  UnUnUS-  nM     U$ )Nr   r0  unreachabler*   )r   r   r   RuntimeErrorr8  s        r'   array_argmin_impl_genericr>  {  ss    yyA~EFFYY	 
 =))
CYY=IGq	 
 Nr&   argminc                 @  ^ [        U R                  [        R                  [        R                  45      (       a  [
        mO6[        U R                  [        R                  5      (       a  [        mO[        m[        U5      (       a
  SU4S jjnU$ [        XT5      nU$ )Nc                    > T" U 5      $ r-   r%   r.   r^   flatten_impls     r'   array_argmin_impl'array_argmin.<locals>.array_argmin_impl      ?"r&   r-   )rY   r   r   r  r  r4  r   r9  r>  r   %build_argmax_or_argmin_with_axis_impl)r.   r^   rD  rC  s      @r'   array_argminrH    ~     !''E,,e.?.?@AA1	AGGU[[	)	).04	#  B\
 r&   c                 j   U R                   S:X  a  [        S5      e[        R                  " U 5      n[	        U5      R                  S5      nSn[        R                  " U5      (       a  U$ SnU H@  nUR                  5       n[        R                  " U5      (       a  Us  $ Xb:  a  UnUnUS-  nMB     U$ Nr   z*attempt to get argmax of an empty sequencer*   r1  )r2  r  r*  max_idxr   r   rk   s          r'   array_argmax_impl_datetimerM    r5  r&   c                 (   U R                   S:X  a  [        S5      eU R                   H  nUnSn  O   [        R                  " W5      (       a  W$ SnU R                   H0  n[        R                  " U5      (       a  Us  $ X:  a  UnUnUS-  nM2     W$ rK  r7  r2  rk   r*  rL  r   s        r'   array_argmax_impl_floatrP    r:  r&   c                     U R                   S:X  a  [        S5      eU R                   H  nUnSn  O   SnU R                   H  nUW:  a  UnUnUS-  nM     W$ rK  )r   r   r   rO  s        r'   array_argmax_impl_genericrR    sj    yyA~EFFYY	 
 CYYy=IGq	 
 Nr&   c                    ^^^ [        US5        [        R                  m[        [	        U R
                  5      5      mSUUU4S jjnU$ )zp
Given a function that implements the logic for handling a flattened
array, return the implementation function.
r^   c                   > US:  a  U R                   U-   nUS:  d  XR                   :  a  [        S5      eU R                   S:X  a  T	" U 5      $ Tn[        XR                   S-
  5       H  n[        X#US-   5      nM     [        X R                   S-
  U5      nU R	                  U5      nUR
                  S   nUR                  5       nUR                  U R                  :X  d   eUR                  U-  S:X  d   e[        R                  " UR                  U-  T
5      n[        UR                  5       H  nT	" XsU-  US-   U-   5      X'   M     UR                  UR
                  S S 5      $ )Nr   zaxis is out of boundsr*   )r   r   r4   r!   	transposer   ravelr   rf   r   reshape)r.   r^   tmpr/   transpose_indextransposed_arrr   raveledr   rC  r   tuple_buffers            r'   impl3build_argmax_or_argmin_with_axis_impl.<locals>.impl  sP   !866D=D!8tvv~455 66Q;?" tVVaZ(AA.C )'VVaZ>_5   $ &&(||qvv%%%""Q&!+++hh~**a/7sxxA!'a%Q!"<=CF ! {{>//455r&   r-   )r   r   r6   tupler4   r   )r.   r^   rC  r^  r   r]  s     ` @@r'   rG  rG    s;    
 T6"JJEqvv'L6 6> Kr&   argmaxc                 @  ^ [        U R                  [        R                  [        R                  45      (       a  [
        mO6[        U R                  [        R                  5      (       a  [        mO[        m[        U5      (       a
  SU4S jjnU$ [        XT5      nU$ )Nc                    > T" U 5      $ r-   r%   rB  s     r'   array_argmax_impl'array_argmax.<locals>.array_argmax_impl  rF  r&   r-   )rY   r   r   r  r  rM  r   rP  rR  r   rG  )r.   r^   rd  rC  s      @r'   array_argmaxrf    rI  r&   allc                     S nU$ )Nc                 l    [         R                  " U 5       H  nUR                  5       (       a  M    g   gr#   re   r.   rk   s     r'   flat_allnp_all.<locals>.flat_all$  s'    1A6688  r&   r%   )r.   rk  s     r'   np_allrm  !  s     Or&   Fc                    [         R                  " U 5      n[         R                  " U5      nU(       d  U(       d  U(       a  U(       d  gU(       a  U(       a
  U(       d  g g[         R                  " U 5      (       d  [         R                  " U5      (       a  X:H  $ [         R                  " X-
  5      X2[         R                  " US-  5      -  -   :  a  gg)NF      ?Trf   r!  isinfabs)a_vb_vrtolatol	equal_nan	a_v_isnan	b_v_isnans          r'   _allclose_scalarsrz  -  s    II Iy Y   88C==BHHSMM:66#)tRVVC#I->&>>>r&   allclosec                    [        U 5      (       d  [        S5      e[        U5      (       d  [        S5      e[        U[        [        R
                  45      (       d  [        S5      e[        U[        [        R
                  45      (       d  [        S5      e[        U[        [        R                  45      (       d  [        S5      e[        U [        R                  5      n[        U[        R                  5      nU(       a  U(       a	    S
S jnU$ U(       a  U(       d	    S
S jnU$ U(       d  U(       a	    S
S jn	U	$ U(       d  U(       d	    S
S	 jn
U
$ g g )N)The first argument "a" must be array-like*The second argument "b" must be array-like2The third argument "rtol" must be a floating point3The fourth argument "atol" must be a floating point0The fifth argument "equal_nan" must be a booleanc                     [        XX#US9$ )Nru  rv  rw  )rz  r.   bru  rv  rw  s        r'   np_allclose_impl_scalar_scalar3np_allclose.<locals>.np_allclose_impl_scalar_scalara  s    $Q/8: :r&   c           	          [         R                  " U5      n[         R                  " U5       H#  n[        XR	                  5       X#US9(       a  M#    g   gNr  FTrf   asarrayrg   rz  rh   )r.   r  ru  rv  rw  bvs         r'   np_allclose_impl_scalar_array2np_allclose.<locals>.np_allclose_impl_scalar_arrayg  sC    

1Aiil(GGID3<> >  # r&   c           	          [         R                  " U 5      n [         R                  " U 5       H$  n[        UR	                  5       XUUS9(       a  M$    g   gr  r  )r.   r  ru  rv  rw  avs         r'   np_allclose_impl_array_scalar2np_allclose.<locals>.np_allclose_impl_array_scalarq  sE    

1Aiil(At3<> >  # r&   c           	      *   [         R                  " U 5      n [         R                  " U5      n[         R                  " X5      u  pV[         R                  " XV45       H4  u  px[	        UR                  5       UR                  5       UX4S9(       a  M4    g   gr  )rf   r  broadcast_arraysrg   rz  rh   )	r.   r  ru  rv  rw  a_ab_br  r  s	            r'   np_allclose_impl_array_array1np_allclose.<locals>.np_allclose_impl_array_array{  sq    

1A

1A**10HC))SJ/(BGGID.2I I  0
 r&   gh㈵>g:0yE>F)	r
   r   rY   floatr   r   boolBooleanNumber)r.   r  ru  rv  rw  is_a_scalaris_b_scalarr  r  r  r  s              r'   np_allcloser  G  s7    AEFFAFGGdUEKK011 + , 	, dUEKK011 + , 	, i$!677 $ % 	% Q-KQ-K{BG5:	: .-	[AF49	 -,[AF49	 -,@E38	 ,+ "-[r&   anyc                     S nU$ )Nc                 l    [         R                  " U 5       H  nUR                  5       (       d  M    g   gr  re   rj  s     r'   flat_anynp_any.<locals>.flat_any  s'    1Avvxx  r&   r%   )r.   r  s     r'   np_anyr    s     Or&   c                     Ub&  [        U[        R                  5      (       d  SS jnU$ Ub  [        U[        R                  5      (       a  SS jnU$ SS jnU$ )Nc                     [        S5      e)Nz)Numba does not support average with axis.)	TypeError)r.   r^   weightss      r'   np_average_impl#np_average.<locals>.np_average_impl  s    GHHr&   c                 Z    [         R                  " U 5      n[         R                  " U5      $ r-   )rf   r  r   )r.   r^   r  ri   s       r'   r  r    s    jjmwws|#r&   c                 p   [         R                  " U 5      n[         R                  " U5      nUR                  UR                  :w  a  UR                  S:w  a  [	        S5      e[         R
                  " U5      nUS:X  a  [        S5      e[         R
                  " [         R                  " X25      5      U-  nU$ )Nr*   z81D weights expected when shapes of a and weights differ.        z)Weights sum to zero, can't be normalized.)rf   r  r   r   r  sumZeroDivisionErrormultiply)r.   r^   r  ri   sclavgs         r'   r  r    s    jjm**W-99-||q('45 5 ffWo#:+CE E ffR[[67#=
r&   NN)rY   r   NoneType)r.   r^   r  r  s       r'   
np_averager    sW    
4 @ @	I4 / ?j%..AA$, %$ r&   c                     [        U [        R                  [        R                  45      (       a  [        R
                  $ [        S 5       nU$ )z
A generic isnan() function
c                     gr  r%   xs    r'   _trivial_isnan!get_isnan.<locals>._trivial_isnan  s    r&   )rY   r   r   r  rf   r!  r   )r   r  s     r'   	get_isnanr    s?     %%++u}}566xx		 
	r&   c                 *    [        U 5      (       a  S $ g )Nc                 H    [         R                  " U 5      R                  S:g  $ r   rf   r  r  r  s    r'   <lambda>np_iscomplex.<locals>.<lambda>      A++q0r&   r
   r  s    r'   np_iscomplexr        00r&   c                 *    [        U 5      (       a  S $ g )Nc                 H    [         R                  " U 5      R                  S:H  $ r   r  r  s    r'   r  np_isreal.<locals>.<lambda>  r  r&   r  r  s    r'   	np_isrealr    r  r&   c                 *  ^ [        U 5      n[        U [        R                  5      (       a  [        U R                  5      n[
        R                  " U[
        R                  5      m[        U [        R                  5      (       a  U4S jnU$ U4S jnU$ )Nc                    > U c  gT$ r  r%   r  iscmplxs    r'   r^  iscomplexobj.<locals>.impl  s    yNr&   c                    > T$ r-   r%   r  s    r'   r^  r    s    Nr&   )determine_dtyperY   r   Optionalr   rf   
issubdtypecomplexfloating)r  dtr^  r  s      @r'   iscomplexobjr    sk     
	B!U^^$$QVV$mmB 2 23G!U^^$$	 K	Kr&   c                     S nU$ )Nc                 8    [         R                  " U 5      (       + $ r-   )rf   r  r  s    r'   r^  isrealobj.<locals>.impl  s    ??1%%%r&   r%   r  r^  s     r'   	isrealobjr    s    
&Kr&   c                 *   ^ [        U 5      mU4S jnU$ )Nc                    > T$ r-   r%   )elementry   s    r'   r^  np_isscalar.<locals>.impl  s    
r&   )r   )r  r^  ry   s     @r'   np_isscalarr    s    

!CKr&   c                 L   ^ [        U5      (       a
  SU4S jjnU$ SU4S jjnU$ )Nc                    > [         R                  " [         R                  " U 5      T" [         R                  " U 5      5      5      $ r-   rf   logical_andrq  signbitr  r   fns     r'   r^  is_np_inf_impl.<locals>.impl  s)    >>"((1+r"**Q-/@AAr&   c                    > [         R                  " [         R                  " U 5      T" [         R                  " U 5      5      U5      $ r-   r  r  s     r'   r^  r    s+    >>"((1+r"**Q-/@#FFr&   r-   r   )r  r   r  r^  s     ` r'   is_np_inf_implr    s*     3	B K	G Kr&   c                 2    [        S 5      n[        XU5      $ )Nc                     U $ r-   r%   r  s    r'   r  isneginf.<locals>.<lambda>
  s    Ar&   r   r  r  s      r'   isneginfr    s    	+	&B!"%%r&   c                 2    [        S 5      n[        XU5      $ )Nc                     U ) $ r-   r%   r  s    r'   r  isposinf.<locals>.<lambda>  s    QBr&   r  r  s      r'   isposinfr    s    	,	'B!"%%r&   c                 
    X:  $ r-   r%   r.   r  s     r'   	less_thanr    	    5Lr&   c                 
    X:  $ r-   r%   r  s     r'   greater_thanr    r  r&   c                 :    U R                   S:X  a  [        S5      eg )Nr   z3zero-size array to reduction operation not possible)r   r   r   s    r'   check_arrayr    s    vv{NOO r&   c                 2   ^  U(       a  U 4S jnU$ U 4S jnU$ )Nc                 H  > [         R                  " U 5      n[        U5        [         R                  " U5      n[	        U5      R                  S5      nU H  nUR                  5       n[         R                  " UR                  5      (       a)  [         R                  " UR                  5      (       d  UnMa  T" UR                  UR                  5      (       a  UnM  UR                  UR                  :X  d  M  T" UR                  UR                  5      (       d  M  UnM     U$ r   )
rf   r  r  rg   r  r   rh   r!  r   r  r.   ri   r  
return_valr   rk   comparison_ops         r'   r^  !nan_min_max_factory.<locals>.impl&  s    **Q-C3Bbq)JIIK88JOO,,RXXaff5E5E!"J$QVVZ__==%&
:??2(AA)*J  r&   c                 8  > [         R                  " U 5      n[        U5        [         R                  " U5      n[	        U5      R                  S5      nU HA  nUR                  5       n[         R                  " U5      (       a  M0  T" X55      (       a  M?  UnMC     U$ r   )rf   r  r  rg   r  r   rh   r!  r   s         r'   r^  r  7  sq    **Q-C3Bbq)JIIKxx{{(77%&
	 
 r&   r%   )r  is_complex_dtyper^  s   `  r'   nan_min_max_factoryr  $  s    	: K
	 Kr&   )r  Tc                    [         R                  " U 5      (       a  [         R                  " U5      (       a  U$ [         R                  " U 5      (       a&  [         R                  " U5      (       a  U S:  US:  :H  $ [         R                  " U 5      (       d  [         R                  " U5      (       a  g[        X-
  5      X2[        U5      -  -   :*  $ )Nr   Frp  )r  yru  rv  rw  s        r'   _isclose_itemr	  T  s    	xx{{rxx{{	!!A1q5!!	!15zT3q6M111r&   c                 :   [        U 5      (       d  [        S5      e[        U5      (       d  [        S5      e[        U[        [        R
                  45      (       d  [        S5      e[        U[        [        R
                  45      (       d  [        S5      e[        U[        [        R                  45      (       d  [        S5      e[        U [        R                  5      (       a&  [        U[        R                  5      (       a  S
S jnU$ [        U [        R                  5      (       a&  [        U[        R                  5      (       a  S
S jnU$ [        U [        R                  5      (       a&  [        U[        R                  5      (       a  S
S jnU$ S
S	 jnU$ )Nr}  r~  r  r  r  c                    U R                  S5      nUn[        R                  " [        U5      [        R                  5      n[        [        U5      5       H  n[        XX   XbX45      Xx'   M     UR                  U R                  5      $ NrU  rX  rf   zerosrH   r   r4   r	  r   	r.   r  ru  rv  rw  r  r  r   r/   s	            r'   isclose_implisclose.<locals>.isclose_implu  sc    		"AA((3q6288,C3s8_&qtQdF %;;qww''r&   c                    U nUR                  S5      n[        R                  " [        U5      [        R                  5      n[        [        U5      5       H  n[        XVU   X#U5      Xx'   M     UR                  UR                  5      $ r  r  r  s	            r'   r  r  ~  se    A		"A((3q6288,C3s8_&qA$IF %;;qww''r&   c                    [         R                  " U R                  UR                  5      n[         R                  " X5      n[         R                  " X5      n[         R                  " [        U5      [         R                  S9n[        [         R                  " Xg45      5       H4  u  n	u  p[        U
R                  5       UR                  5       X#U5      X'   M6     [         R                  " X5      $ Nr   )rf   broadcast_shapesr   broadcast_tor  rH   r   r   rg   r	  rh   )r.   r  ru  rv  rw  r   a_b_r   r/   r  r  s               r'   r  r    s    ''9E*B*B((3r7"((3C(B8)<=8B&rwwy"'')T'02  > ??3..r&   c                     [        XX#U5      $ r-   )r	  r  s        r'   r  r    s     t9==r&   r  )
r
   r   rY   r  r   r   r  r  r   r  )r.   r  ru  rv  rw  r  s         r'   iscloser  `  sJ   AEFFAFGGdUEKK011 + , 	, dUEKK011 + , 	, i$!677 $ % 	% !U[[!!jELL&A&A	(B 3 
Au||	$	$Au{{)C)C	(0 ! 
Au{{	#	#
1ekk(B(B		/ 	> r&   c                     [        U 5      n[        R                  " U[        R                  5      (       a  [        $ [
        $ r-   )r  rf   r  r  complex_nanminreal_nanminr.   r  s     r'   	np_nanminr     /    		B	}}R++,,r&   c                     [        U 5      n[        R                  " U[        R                  5      (       a  [        $ [
        $ r-   )r  rf   r  r  complex_nanmaxreal_nanmaxr  s     r'   	np_nanmaxr%    r!  r&   c                 ~   ^ [        U [        R                  5      (       d  g [        U R                  5      mU4S jnU$ )Nc                    > SnSn[         R                  " U 5       H9  nUR                  5       nT" U5      (       a  M"  XR                  5       -  nUS-  nM;     [         R                  " X5      $ Nr  r   r*   )rf   rg   rh   divide)r.   rj   countr   rk   r!  s        r'   nanmean_impl np_nanmean.<locals>.nanmean_impl  sZ    IIaLD		A88VVX
	 ! yy""r&   rY   r   r   r  r   )r.   r+  r!  s     @r'   
np_nanmeanr.    s2    a%%aggE	# r&   c                 ~   ^ [        U [        R                  5      (       d  g [        U R                  5      mU4S jnU$ )Nc                 l  > [         R                  " U 5      nSnSn[         R                  " U 5       Hj  nUR                  5       nT" U5      (       a  M"  UR                  5       U-
  nU[         R                  " U[         R
                  " U5      -  5      -  nUS-  nMl     [         R                  " X#5      $ r(  )rf   nanmeanrg   rh   r   r   r)  )r.   r   r   r*  r   rk   r   r!  s          r'   nanvar_implnp_nanvar.<locals>.nanvar_impl  s    JJqM IIaLD		A88vvx!|rwwsRWWS\122
 ! yy$$r&   r-  )r.   r2  r!  s     @r'   	np_nanvarr4    s2    a%%aggE%  r&   c                 L    [        U [        R                  5      (       d  g S nU$ )Nc                 4    [         R                  " U 5      S-  $ r   )rf   nanvarr   s    r'   nanstd_implnp_nanstd.<locals>.nanstd_impl  s    yy|s""r&   r   )r.   r8  s     r'   	np_nanstdr:    s#    a%%# r&   c                   ^^ [        U [        R                  5      (       d  g [        U R                  [        R                  5      (       a  [        R
                  nOU R                  nU" S5      m[        U R                  5      mUU4S jnU$ )Nr   c                    > Tn[         R                  " U 5       H&  nUR                  5       nT" U5      (       a  M"  X-  nM(     U$ r-   re   )r.   rj   r   rk   r!  rl   s       r'   nansum_implnp_nansum.<locals>.nansum_impl  s<    IIaLD		A88 ! r&   rY   r   r   r   Integerr6   r  )r.   r   r=  r!  rl   s      @@r'   	np_nansumrA    sb    a%%!''5==))

8DaggE r&   c                   ^^ [        U [        R                  5      (       d  g [        U R                  [        R                  5      (       a  [        R
                  nOU R                  nU" S5      m[        U R                  5      mUU4S jnU$ )Nr*   c                    > Tn[         R                  " U 5       H&  nUR                  5       nT" U5      (       a  M"  X-  nM(     U$ r-   re   )r.   rj   r   rk   r!  ones       r'   nanprod_impl np_nanprod.<locals>.nanprod_impl  s<    IIaLD		A88 ! r&   r?  )r.   r   rE  r!  rD  s      @@r'   
np_nanprodrG    sb    a%%!''5==))


(CaggE r&   c                   ^^^ [        U [        R                  5      (       d  g [        U R                  [        R                  [        R
                  45      (       a  S $ U R                  m[        T5      mT" S5      mUUU4S jnU$ )Nc                 .    [         R                  " U 5      $ r-   )rf   r   r   s    r'   r  np_nancumprod.<locals>.<lambda>  s    Ar&   r*   c                    > [         R                  " U R                  T5      nTn[        U R                  5       H  u  p4T" U5      ) (       a  X$-  nX!U'   M     U$ r-   r   )r.   r   rj   r   rk   is_nanrD  r   s        r'   nancumprod_impl&np_nancumprod.<locals>.nancumprod_impl  sO    ((1665)CA#AFF+1I:FAC , Jr&   rY   r   r   r   r  r@  r  )r.   rM  rL  rD  r   s     @@@r'   np_nancumprodrP    sd    a%%!''EMM5==9::&&5!Ah	 r&   c                   ^^^ [        U [        R                  5      (       d  g [        U R                  [        R                  [        R
                  45      (       a  S $ U R                  m[        T5      mT" S5      mUUU4S jnU$ )Nc                 .    [         R                  " U 5      $ r-   )rf   r   r   s    r'   r  np_nancumsum.<locals>.<lambda>/  s    1r&   r   c                    > [         R                  " U R                  T5      nTn[        U R                  5       H  u  p4T" U5      ) (       a  X$-  nX!U'   M     U$ r-   r   )r.   r   rj   r   rk   rL  r   rl   s        r'   nancumsum_impl$np_nancumsum.<locals>.nancumsum_impl5  sO    ((1665)CA#AFF+1I:FAC , Jr&   rO  )r.   rU  rL  r   rl   s     @@@r'   np_nancumsumrW  (  sd    a%%!''EMM5==9::%%5!Qx	 r&   c                 P    [        U 5      n[        U5      S:X  a  [        S5      eU$ )Nr   z&zero-size array reduction not possible)_asarrayrH   r   r.   ri   s     r'   prepare_ptp_inputr[  A  s'    
1+C
3x1}ABB
r&   c                 b   ^  [        U[        R                  5      (       a  U 4S jnU$ U 4S jnU$ )Nc                    > T" UR                   U R                   5      (       a  U$ UR                   U R                   :X  a$  T" UR                  U R                  5      (       a  U$ U $ r-   r  current_valr   r   s     r'   r^  +_compute_current_val_impl_gen.<locals>.implQ  sS    #((K,,--
((k...388[%5%566
r&   c                 &   > T" X5      (       a  U$ U $ r-   r%   r^  s     r'   r^  r`  Y  s    S..3?K?r&   )rY   r   r  )r   r_  r   r^  s   `   r'   _compute_current_val_impl_genrb  J  s+    +u}}--	 K	@Kr&   c                     g r-   r%   r_  r   s     r'   _compute_a_maxre  ^      r&   c                     g r-   r%   rd  s     r'   _compute_a_minrh  b  rf  r&   c                 6    [        [        R                  X5      $ r-   )rb  operatorgtrd  s     r'   _compute_a_max_implrl  f      (kGGr&   c                 6    [        [        R                  X5      $ r-   )rb  rj  ltrd  s     r'   _compute_a_min_implrp  k  rm  r&   c                     g r-   r%   r   s    r'   _early_returnrs  p  rf  r&   c                    ^ Sm[        U [        R                  5      (       a  U4S jnU$ [        U [        R                  5      (       a  U4S jnU$ U4S jnU$ )Nr   c                   > [         R                  " U R                  5      (       a`  [         R                  " U R                  5      (       a&  S[         R                  [         R                  S-  -   4$ S[         R                  S-   4$ ST4$ )NT              ?y                F)rf   r!  r   r  nanr   UNUSEDs    r'   r^   _early_return_impl.<locals>.implx  sb    xx!!88CHH%%"&&2+!555",,f}$r&   c                 f   > [         R                  " U 5      (       a  S[         R                  4$ ST4$ r  )rf   r!  rw  rx  s    r'   r^  rz    s(    xx}}RVV|#f}$r&   c                    > ST4$ r  r%   rx  s    r'   r^  rz    s    &= r&   )rY   r   r  r   )r   r^  ry  s     @r'   _early_return_implr}  t  sN    F#u}}%%	%" K 
C	%	%	% K	!Kr&   c                     [        U S5      (       a4  [        U R                  [        R                  5      (       a  [        S5      eS nU$ )Nr   +Boolean dtype is unsupported (as per NumPy)c                     [        U 5      nUR                  nUS   nUS   n[        UR                  5       H5  nX%   n[	        U5      u  pxU(       a  Us  $ [        XF5      n[        X65      nM7     XC-
  $ r   )r[  r   r4   r   rs  re  rh  )	r.   ri   a_flata_mina_maxr/   r   take_branchretvals	            r'   np_ptp_implnp_ptp.<locals>.np_ptp_impl  ss    "q	q	sxxA)C"/"4K"5.E"5.E ! }r&   )hasattrrY   r   r   r  r   )r.   r  s     r'   np_ptpr    s?     q'aggu}}--KLL" r&   )r   r   ptpc                 z    [         R                  " U 5      (       a  g[         R                  " U5      (       a  gX:  $ r#   )rf   r!  r  s     r'   nan_aware_less_thanr    s)    	xx{{88A;;5Lr&   c                    ^ ^ SUU 4S jjnU$ )Nc                   > X-   S-	  nT	" X   X   5      (       a!  X   X   sX'   X'   T(       a  X4   X1   sX1'   X4'   T	" X   X   5      (       a!  X   X   sX'   X'   T(       a  X4   X2   sX2'   X4'   T	" X   X   5      (       a!  X   X   sX'   X'   T(       a  X4   X1   sX1'   X4'   X   nX   X   sX'   X'   T(       a  X4   X2   sX2'   X4'   UnUS-
  n Xb:  a,  T	" X   U5      (       a  US-  nXb:  a  T	" X   U5      (       a  M  Xq:  a,  T	" XPU   5      (       a  US-  nXq:  a  T	" XPU   5      (       a  M  Xg:  a  O-X   X   sX'   X'   T(       a  X7   X6   sX6'   X7'   US-  nUS-  nM  X   X   sX'   X'   T(       a  X2   X6   sX6'   X2'   U$ Nr*   r%   )
AlowhighImidpivotr/   jargpartition	pivotimpls
           r'   
_partition&_partition_factory.<locals>._partition  s   za QVQV$$VQVNAFAF!"QWaf%%fagOAGQV"#&!'QVQV$$VQVNAFAF!"&!'fagOAGQV1H(yu55Q (yu55(y!55Q (y!55vqtJAD!$T14
adFAFA  agGQTMAD!'r&   r-   r%   )r  r  r  s   `` r'   _partition_factoryr    s    , ,Z r&   )r  c                    ^  SU 4S jjnU$ )Nc                 z   > T" XX45      nXQ:w  a)  XQ:  a  US-   nT" XX45      nOUS-
  nT" XX45      nXQ:w  a  M)  X   $ )z:
Select the k'th smallest element in array[low:high + 1].
r*   r%   )r2  kr  r  r   r/   partitionimpls         r'   _select _select_factory.<locals>._select  sU     $T/fu!e!$T71u!$T7 f wr&   r-   r%   )r  r  s   ` r'   _select_factoryr    s     Nr&   c                      X2:  d   e[        XU5      nXA:  a  US-   nO7XAS-   :  a  US-
  nO)XA:X  a  [        XS-   US-   U5        O[        XX$S-
  5        OMW  X   XS-      4$ )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.
r*   )r  r  )r2  r  r  r  r/   s        r'   _select_twor  	  s     zzt$'5a%CQYq5DVDa%Q-DSa%(  7DQKr&   c                 t    SnUS-
  nUS-	  nUS-  S:X  a  [        XS-
  X#5      u  pVXV-   S-  $ [        XX#5      $ )zh
The main logic of the median() call.  *temp_arry* must be disposable,
as this function will mutate it.
r   r*   r   )r  r  )	temp_arrynr  r  halfr.   r  s          r'   _median_innerr  "  sQ     Cq5D6D1uz9Qh:{y22r&   c                    ^ [        U [        R                  5      (       d  g [        U R                  5      R
                  S;   mU4S jnU$ )NmMc                    > U R                  5       nUR                  S   nT(       d  US:X  a  [        R                  $ [	        X5      $ r   )flattenr   rf   rw  r  )r.   r  r  is_datetimes      r'   median_implnp_median.<locals>.median_impl9  s;     IIK	OOAqAv66MY**r&   )rY   r   r   r	   r   char)r.   r  r  s     @r'   	np_medianr  2  s=    a%%177#((D0K+ r&   c                    [        U 5      nUS:X  a2  [        R                  " [        U5      U S   [        R                  S9nU$ [        R                  " [        U5      [        R                  S9n[        [        U5      5       GH  nX   nUS:X  at  [        R                  " U 5      n[        R                  " [        R                  " U 5      5      ) (       a,  [        R                  " U5      ) (       a  [        R                  nGOrUS:X  Ga  [        R                  " U 5      n[        R                  " [        R                  " U 5      5      ) (       a  [        R                  " U [        R                  :H  5      n[        R                  " U [        R                  * :H  5      nX(U-   -
  n	U	S:X  a  [        R                  nUS:X  a  US:X  a  [        R                  nUS:  a  [        R                  nU	S:X  a  US:  a  US:w  a  [        R                  nOdSUS-
  [        R                  " US5      -  -   n
[        R                  " U
5      nX-
  n[!        U [#        US-
  5      SUS-
  S9u  pUSU-
  -  X-  -   nXcU'   GM     U$ )Nr*   r   r  d   r         Y@)r  r  r  )rH   rf   r   r   r   r4   r$  rg  isfiniterw  r	  r  inftrue_dividemathfloorr  int)r.   qr  r   r/   
percentiler   num_pos_infnum_neg_inf
num_finiterankfr   loweruppers                  r'   _collect_percentiles_innerr  D  s    	AAAvggc!fad"**5T JQ hhs1vRZZ0s1vAJ S ffQiFF2;;q>**C(( ff qffQiFF2;;q>**"$&&bff"5K"$&&rvvg"6K!"K&?!@J!Q ff"a'AF ff"Q ff!Q&?*a/&(ff AER^^J%FFFJJt$H*1AE
QPq1uo	1FK N Jr&   c                     U(       a  X)    n [        U 5      S:X  a  gO[        R                  " U5      (       a  g[        U 5      S:X  a  U S   n[        R                  " U5      $ g)Nr   Fr*   T)rH   rf   r  r  )r.   nan_maskskip_nanr   s       r'   _can_collect_percentilesr  y  s[    iLq6Q;  66(
1v{d{{3r&   c                    SnU R                   S:X  aa  U R                  S:  aQ  [        U R                  5       H5  nX   S:  d'  X   U:  d  [        R                  " X   5      (       d  M2  Sn  U$     U$ [        R
                  " [        R                  " U 5      5      (       d;  [        R
                  " U S:  5      (       d  [        R
                  " X:  5      (       a  SnU$ )NTr*   
   r  F)r   r   r4   rf   r!  r  )r  q_upper_boundvalidr/   s       r'   check_validr    s    E 	vv{qvv{qvvAtczQTM1RXXad^^
 L  L 66"((1+"&&S//RVVA<M5N5NELr&   c                 8    [        U SS9(       d  [        S5      eg )Nr  r  z)Percentiles must be in the range [0, 100]r  r   r  s    r'   percentile_is_validr    s    q.DEE /r&   c                 8    [        U SS9(       d  [        S5      eg )Nro  r  z%Quantiles must be in the range [0, 1]r  r  s    r'   quantile_is_validr    s    q,@AA -r&   c                    [         R                  " U[         R                  S9R                  5       nU" U5        X-  n[         R                  " U [         R                  S9R                  5       n[         R                  " U5      n[        XVU5      (       a  XV)    n[        XQ5      nU$ [         R                  " [        U5      [         R                  5      nU$ r  )
rf   r  r   r  r!  r  r  r   rH   rw  )r.   r  check_qfactorr  r  r  r   s           r'   _collect_percentilesr    s    


1BJJ'//1AAJ	
A

1BJJ/779Ixx	"H	X>>i(	(6 J ggc!fbff%Jr&   c                 p  ^^^ [        U 5      n[        R                  " U[        R                  5      (       a  [	        S5      eUUU4S jnUUU4S jn[        U[        R                  [        R                  45      (       a  U$ [        U[        R                  5      (       a  UR                  S:X  a  U$ U$ )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                 &   > [        XTTT5      S   $ r   r  r.   r  r  r  r  s     r'   np_percentile_q_scalar_impl?_percentile_quantile_inner.<locals>.np_percentile_q_scalar_impl  s    #A'68DQGGr&   c                     > [        XTTT5      $ r-   r  r  s     r'   np_percentile_impl6_percentile_quantile_inner.<locals>.np_percentile_impl  s    #A'68DDr&   r   )r  rf   r  r  r   rY   r   r  r  r   r   )r.   r  r  r  r  r  r  r  s     ```   r'   _percentile_quantile_innerr    s     
	B	}}R++,,;<<HE !ellEMM233**	Au{{	#	#!**!!r&   c                 "    [        XSS[        S9$ )NFro  r  r  r  r  r  r.   r  s     r'   np_percentiler    s    %	uS2E r&   c                 "    [        XSS[        S9$ )NTro  r  r  r  s     r'   np_nanpercentiler    s    %	tC1D r&   c                 "    [        XSS[        S9$ )NFr  r  r  r  r  s     r'   np_quantiler    s    %	uU4E r&   c                 "    [        XSS[        S9$ )NTr  r  r  r  s     r'   np_nanquantiler    s    %	tE3D r&   c                 ~   ^ [        U [        R                  5      (       d  g [        U R                  5      mU4S jnU$ )Nc                 *  > [         R                  " U R                  U R                  5      nSn[         R                  " U 5       H+  nUR                  5       nT" U5      (       a  M"  XAU'   US-  nM-     US:X  a  [         R                  $ [        X5      $ Nr   r*   )rf   r   r   r   rg   rh   rw  r  )r.   r  r  r   rk   r!  s        r'   nanmedian_impl$np_nanmedian.<locals>.nanmedian_impl  ss    HHQVVQWW-	IIaLD		A88 !Q	 ! 666MY**r&   r-  )r.   r  r!  s     @r'   np_nanmedianr    s2    a%%aggE+  r&   c                    [         R                  " U 5      n[         R                  " U R                  S S 5      nU H@  nX   R	                  5       nSn[        U5      S-
  nU H  n[        XXXg5        UnM     XRU'   MB     U$ )NrU  r   r*   )rf   
empty_likendindexr   copyrH   _select_w_nan)	r.   	kth_arrayr   r   sr2  r  r  kths	            r'   np_partition_impl_innerr    s|    
 --
C
**QWWSb\
"Ctyy{4y1}C$S/C  A  Jr&   c           	      ^   [         R                  " U [         R                  S9n[         R                  " U R                  S S 5      nU H`  nX   R                  5       n[         R                  " [        U5      5      nSn[        U5      S-
  nU H  n	[        XYXxU5        U	nM     XbU'   Mb     U$ )Nr  rU  r   r*   )	rf   r  r6   r  r   r  arangerH   _arg_select_w_nan)
r.   r  r   r   r  r2  idx_arryr  r  r  s
             r'   np_argpartition_impl_innerr    s    
 --
)C
**QWWSb\
"Ctyy{99SY'4y1}CdH=C  A  Jr&   c                    [        U5      R                  [        R                  5      nUR                  S:w  a  [        S5      e[        R                  " [        R                  " U5      U R                  S   :  5      (       a  [        S5      e[        R                  " U5      n[        R                  " U5       H$  u  pEUS:  a  XPR                  S   -   X4'   M   XSU'   M&     [        R                  " U5      $ )ai  
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-DrU  zkth out of boundsr   )rY  astyperf   r   r   r   r  rr  r   r  ndenumerateunique)r.   r  r  r   indexr   s         r'   
valid_kthsr	  3  s     $$RXX.I~~455 
vvbffY1772;.//,--
--	
"CnnY/
7wwr{*CJJ	 0 99S>r&   c                    [        U [        R                  [        R                  [        R                  45      (       d  [        S5      e[        U [        R                  5      (       a  U R                  S:X  a  Sn[        U5      e[        USU5      n[        S:  a  [        R                  nO [        R                  [        R                  4n[        X45      (       d  [        S5      eS nU$ )N(The first argument must be an array-liker   3The first argument must be at least 1-D (found 0-D)r   r   r   Partition index must be integerc                     [        U 5      nUR                  S:X  a  UR                  5       $ [        X!5      n[	        X#5      $ r   )rY  r   r  r	  r  r.   r  a_tmpr  s       r'   np_partition_impl'np_partition.<locals>.np_partition_impli  s7    ::?::<"5.I*5<<r&   rY   r   r   Sequencer\   r   r   r   r   r@  r  )r.   r  r   kthdt	kth_typesr  s         r'   np_partitionr  V  s     a%++u~~u{{CDDGHH!U[[!!affkCS!!C#&EMM	]]EMM2	e''>??= r&   c                    [        U [        R                  [        R                  [        R                  45      (       d  [        S5      e[        U [        R                  5      (       a  U R                  S:X  a  Sn[        U5      e[        USU5      n[        S:  a  [        R                  nO [        R                  [        R                  4n[        X45      (       d  [        S5      eS nU$ )Nr  r   r  r   r  r  c                     [        U 5      nUR                  S:X  a  UR                  5       R                  S5      $ [	        X!5      n[        X#5      $ )Nr   r6   )rY  r   r  r  r	  r  r  s       r'   np_argpartition_impl-np_argpartition.<locals>.np_argpartition_impl  sB    ::?::<&&v.."5.I-e??r&   r  )r.   r  r   r  r  r  s         r'   np_argpartitionr  t  s     a%++u~~u{{CDDGHH!U[[!!affkCS!!C#&EMM	]]EMM2	e''>??@  r&   c                    [        SU 5      [        SU5      4n[        R                  " U[        R                  S9n[	        US   5       H1  n[        [        SXR-   S-   5      US   5      nSXES U24'   SXEUS 24'   M3     U$ )Nr   r  r*   )r$  rf   r   r   r4   r	  )NMr  r   r   r/   m_maxs          r'   	_tri_implr"    s~    1Is1ay E
((5


+C58_C1519%uQx0vvIuvI 
 Jr&   c                 (    [        US5        SS jnU$ )Nr  c                 $    Uc  U n[        XU5      $ r-   )r"  )r  r   r  s      r'   tri_implnp_tri.<locals>.tri_impl  s    9Aq!!r&   r   )r   )r  r   r  r%  s       r'   np_trir'    s     Q"
 Or&   c                     U R                   S:X  d   e[        U 5      n[        R                  " X4U R                  S9n[        U5       H  nXU'   M	     U$ )ze
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   rH   rf   r   r   r4   )r   len_mr   r/   s       r'   _make_squarer*    sO     66Q;;FE
((E>
1C5\A  Jr&   c           	         [         R                  " U R                  S   U R                  S   US9R                  [         R                  5      n[         R
                  " X [         R                  " X R                  S95      $ NrU  r   r  r  rf   trir   r  uintwhere
zeros_liker   r   r  masks      r'   np_tril_impl_2dr6    sQ    66!''"+299"''BD88DR]]1GG<==r&   c                     [        US5        SS jnSS jnU R                  S:X  a  U$ U R                  S:X  a  [        $ U$ )Nr  c                 .    [        U 5      n[        X!5      $ r-   )r*  r6  r   r  m_2ds      r'   np_tril_impl_1d my_tril.<locals>.np_tril_impl_1d      At''r&   c                    [         R                  " U R                  S   U R                  S   US9R                  [         R                  5      n[         R
                  " U R                  S S 5      n[         R                  " U 5      n[         R                  " X R                  S9nU H  n[         R                  " X U   U5      XF'   M!     U$ r,  
rf   r0  r   r  r1  r  r  r3  r   r2  r   r  r5  r   zzero_optsels          r'   np_tril_impl_multi#my_tril.<locals>.np_tril_impl_multi  s    vvaggbkQWWR[A6==bggFjj"&MM!==WW5CXXdcFH5AF r&   r*   r   r   )r   r   r6  )r   r  r;  rD  s       r'   my_trilrG    sB     Q( 	vv{	
1!!r&   c                 x    [        U S5        [        US5        [        U5      (       d  [        US5        SS jnU$ )Nr  r  r   c                 T    [         R                  " [         R                  " XUS95      $ )Nr  rf   nonzeror0  r  r  r   s      r'   np_tril_indices_impl-np_tril_indices.<locals>.np_tril_indices_impl  s    zz"&&+,,r&   r   Nr   r   )r  r  r   rN  s       r'   np_tril_indicesrR    s6     QQq>>C -r&   c                 ^    [        US5        U R                  S:w  a  [        S5      eSS jnU$ )Nr  r   input array must be 2-dc                 `    [         R                  " U R                  S   XR                  S   S9$ Nr   r*   )r  r   )rf   tril_indicesr   ri   r  s     r'   np_tril_indices_from_impl7np_tril_indices_from.<locals>.np_tril_indices_from_impl  #    syy|qIIaLAAr&   rF  r   r   r   )ri   r  rY  s      r'   np_tril_indices_fromr]    1     Q
xx1}344B$$r&   c                 
   [         R                  " U R                  S   U R                  S   US-
  S9R                  [         R                  5      n[         R
                  " U[         R                  " X R                  S9U 5      $ Nr-  rU  r*   r.  r  r/  r4  s      r'   np_triu_impl_2dra    sW    66!''"+A6==bggFD88D"--91==r&   c                     [        US5        SS jnSS jnU R                  S:X  a  U$ U R                  S:X  a  [        $ U$ )Nr  c                 .    [        U 5      n[        X!5      $ r-   )r*  ra  r9  s      r'   np_triu_impl_1d my_triu.<locals>.np_triu_impl_1d	  r=  r&   c                    [         R                  " U R                  S   U R                  S   US-
  S9R                  [         R                  5      n[         R
                  " U R                  S S 5      n[         R                  " U 5      n[         R                  " X R                  S9nU H  n[         R                  " X%X   5      XF'   M      U$ r`  r?  r@  s          r'   np_triu_impl_multi#my_triu.<locals>.np_triu_impl_multi  s    vvaggbkQWWR[AE:AA"''Jjj"&MM!==WW5CXXdaf5AF r&   r*   r   rF  )r   r   ra  )r   r  rd  rg  s       r'   my_triuri    sB     Q( 	vv{	
1!!r&   c                 x    [        U S5        [        US5        [        U5      (       d  [        US5        SS jnU$ )Nr  r  r   c           	      `    [         R                  " S[         R                  " XUS-
  S9-
  5      $ )Nr*   rJ  rK  rM  s      r'   np_triu_indices_impl-np_triu_indices.<locals>.np_triu_indices_impl'  s%    zz!bffQQU3344r&   rP  rQ  )r  r  r   rl  s       r'   np_triu_indicesrn    s6     QQq>>C 5r&   c                 ^    [        US5        U R                  S:w  a  [        S5      eSS jnU$ )Nr  r   rT  c                 `    [         R                  " U R                  S   XR                  S   S9$ rV  )rf   triu_indicesr   rX  s     r'   np_triu_indices_from_impl7np_triu_indices_from.<locals>.np_triu_indices_from_impl5  r[  r&   rF  r\  )ri   r  rr  s      r'   np_triu_indices_fromrt  ,  r^  r&   c                     g r-   r%   ri   s    r'   _prepare_arrayrw  :  rf  r&   c                 :    U S [         R                  4;   a  S $ S $ )Nc                 .    [         R                  " S5      $ )Nr%   rf   arrayrv  s    r'   r  %_prepare_array_impl.<locals>.<lambda>A  s    288B<r&   c                 4    [        U 5      R                  5       $ r-   )rY  rW  rv  s    r'   r  r|  C  s    8C=..0r&   r   nonerv  s    r'   _prepare_array_implr  >  s    
tUZZ  ''00r&   c                 z   U n [        U[        R                  [        R                  45      (       a  [	        U5      $ [        USS 5      nUb  U" 5       S:X  a  [        R                  $ [        USS 5      nUc  [        S5      e[        U[        R                  5      (       a  UR                  nO[	        U5      $ M  )N__len__r   r   ztype has no dtype attr)rY   r   r  r  r	   r   rf   r   r   r  r   )inobjobjlr  s       r'   _dtype_of_compoundr  F  s    
C
cELL%--899C= CD)=QSAX::S'4(: !9::c5>>**))CB< r&   c                    [        U [        R                  5      (       a4  [        U R                  [        R                  5      (       a  [        S5      e[        U 5      nS n[        U5      (       d  [        U5      nS n[        U5      (       d  [        U5      nUb(  [        R                  " XC5      (       d  Sn[        U5      eUb(  [        R                  " XS5      (       d  Sn[        U5      eSS jnU$ )Nr  z3dtype of to_begin must be compatible with input aryz1dtype of to_end must be compatible with input aryc                    [        U5      n[        U 5      n[        U5      nUR                  n[        U5      S:  a  [        R                  " [        U5      [        U5      -   [        U5      -   S-
  US9n[        U5      n[        U5      [        U5      -   S-
  n	X7S U& [        R
                  " U5      XxU	& XWU	S & U$ [        R                  " [        U5      [        U5      -   US9n[        U5      nX7S U& XWUS & U$ )Nr   r*   r  )rw  r   rH   rf   r   diff)
aryto_endto_beginstartr  end	out_dtyper   	start_idxmid_idxs
             r'   np_ediff1d_impl#np_ediff1d.<locals>.np_ediff1d_implq  s    x(S!V$II	 s8a<((CJS1CH<q@!*,CE
I%j3s8+a/G#
O%'WWS\C'"M 
	 ((CJS1)DCE
I#
O!	
O
r&   r  )
rY   r   r   r   r  r   r  r   rf   can_cast)r  r  r  ary_dtto_begin_dt	to_end_dtr   r  s           r'   
np_ediff1dr  W  s     #u{{##cii// !NOO
  $FK!!(2I&v.	r{{;'G'GCS!!R[[%C%CAS!!6 r&   c                     g r-   r%   rv  s    r'   _select_elementr    rf  r&   c                 D    [        U SS 5      S:H  nU(       a  S nU$ S nU$ )Nr   r   c                 R    [         R                  " SU R                  S9nXS S & US   $ )Nr*   r  r   )rf   r{  r   )ri   r  s     r'   r^  "_select_element_impl.<locals>.impl  s&    SYY/AaDQ4Kr&   c                     U $ r-   r%   rv  s    r'   r^  r    s    Jr&   )r   )ri   zerodr^  s      r'   _select_element_implr    s.    C&!+E	 	r&   c                     g r-   r%   )dxr  s     r'   _get_dr    rf  r&   c                 6    [        U 5      (       a  S nU$ S nU$ )Nc                 .    [         R                  " U5      $ r-   rf   r  r  r  s     r'   r^  get_d_impl.<locals>.impl  s    ::b>!r&   c                 V    [         R                  " [         R                  " U 5      5      $ r-   )rf   r  r  r  s     r'   r^  r    s    772::a=))r&   r  )r  r  r^  s      r'   
get_d_implr    s!    1~~	"
 K	*Kr&   c                     [        U [        R                  [        R                  45      (       a  [	        S5      e[        U [        R
                  5      (       a  U R                  S:X  a  [	        S5      eSS jnU$ )Nzy cannot be a scalarr   zy cannot be 0Dc                     [         R                  " U 5      n[        X5      nUS[        SS 5      4   US[        S S5      4   -   S-  n[         R                  " XE-  S5      n[        U5      nU$ )N.r*   rU         @)rf   r  r  rQ   r  r  )r  r  r  yarrdy_averet	processeds           r'   r^  np_trapz.<locals>.impl  si    zz!}1Mc5D>)*T#uT22F-GG3NffQY##C(	r&   Nro  )rY   r   r  r  r   r   r   )r  r  r  r^  s       r'   np_trapzr    s]     !ellEMM233011	Au{{	#	#!*++
 Kr&   c                    UR                   u  pEU[        U 5      :X  d   eXQ:X  d   eU(       aK  [        U5       H;  nUS:X  a  SUSS2U4'   M  [        R                  " XSS2US-
  4   5      USS2U4'   M=     g[        US-
  SS5       H=  nXaS-
  :X  a  SUSS2U4'   M  [        R                  " XSS2US-   4   5      USS2U4'   M?     g)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*   NrU  )r   rH   r4   rf   r  )r  r  
increasingr   r   r  r/   s          r'   
_np_vanderr    s     99DAA;;6M6qAAvAqD	KKq1q5z?;AqD		  q1ub"%AEzAqD	KKq1q5z?;AqD		 &r&   c                 \    U R                   S:  a  [        S5      eUS:  a  [        S5      eg )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_paramsr    s1    vvzIJJ1u>?? r&   c                   ^ US [         R                  4;  a*  [        U[         R                  5      (       d  [	        S5      eSU4S jjnSS jn[        U [         R
                  5      (       a2  [        U R                  5      n[        R                  " U[        5      mU$ [        U [         R                  [         R                  45      (       a  U$ g )Nz,Second argument N must be None or an integerc                    > Uc  [        U 5      n[        X5        [        R                  " [        U 5      [	        U5      4TS9n[        XX#5        U$ r  )rH   r  rf   r   r  r  )r  r  r  r   r   s       r'   np_vander_impl!np_vander.<locals>.np_vander_impl  sG    9AAQ" hhAA'u51)
r&   c                     Uc  [        U 5      n[        R                  " U 5      n[        X15        [        R                  " [        U 5      [        U5      4UR                  S9n[        X1X$5        U$ r  )rH   rf   r{  r  r   r  r   r  )r  r  r  x_arrr   s        r'   np_vander_seq_impl%np_vander.<locals>.np_vander_seq_impl	  sW    9AAU& hhAA'u{{;5Z-
r&   r  )r   r  rY   r@  r   r   r	   r   rf   promote_typesr  r\   r  )r  r  r  r  r  x_dtr   s         @r'   	np_vanderr    s    uzz""!U]]++LMM
 !U[[!!   s+	AU^^4	5	5!! 
6r&   c                     [        U[        R                  [        R                  45      (       d  [	        S5      eS n[        U [        R
                  [        R                  45      (       a  S $ U$ )Nzshift must be an integerc                    [         R                  " U 5      n[         R                  " UR                  UR                  S9nUR
                  n[        UR                  5       H%  nXQ-   UR                  -  nXE   UR
                  U'   M'     U$ r  )rf   r  r   r   r   r   r4   r   )r.   shiftri   r   arr_flatr/   r   s          r'   np_roll_implnp_roll.<locals>.np_roll_impl	  sj    jjmhhsyy		2 88sxxA9(C$KCHHSM ! 
r&   c                 .    [         R                  " U 5      $ r-   r  )r.   r  s     r'   r  np_roll.<locals>.<lambda>*	  s    

1r&   )rY   r   r@  r  r   r  )r.   r  r  s      r'   np_rollr  	  sU    eemmU]];<<455
 !ellEMM233--r&      c                 $   SnUnXUS-
     :  a  U$ XS   :  a  gUS::  a(  SnXb:  a  XU   :  a  US-  nXb:  a
  XU   :  a  M  US-
  $ X2S-
  :  a  US-
  nUS:  a  SnXU   :  a8  XUS-
     :  a(  US-
  nU[         :  a  XU[         -
     :  a	  U[         -
  nONUS-
  $ XUS-      :  a  U$ XUS-      :  a  US-   $ US-   nX2[         -
  S-
  :  a  XU[         -      :  a	  U[         -   nXE:  a!  XEU-
  S-	  -   nXU   :  a  US-   nOUnXE:  a  M!  US-
  $ )Nr   r*   rU     r   r   )LIKELY_IN_CACHE_SIZE)keyri   lengthguessiminimaxr/   imids           r'   binary_search_with_guessr  5	  s    DD !_	1v {jSF]FA jSF]1uz
qy ZUQY19D ++u';;<<33 19 UQYL ^#qy  qy&::Q>?5+?#?@@ #77D +t)*d)!8DD + !8Or&   c                 	   [         R                  " U 5      n[         R                  " U5      n[         R                  " U5      n[        U5      S:X  a  [        S5      e[        U5      [        U5      :w  a  [        S5      eUR                  S:X  a#  [         R
                  " UR                  US   US9$ [         R                  " UR                  US9nUR                  n[        U5      n	US   n
XiS-
     nU	S:X  ae  US   nUS   n[        U5       HJ  nUR                  U   nX:  a  XR                  U'   M'  X:  a  XR                  U'   M<  XR                  U'   ML     U$ SnX::  a  [         R                  " U	S-
  US9nO[         R                  " SUS9nUR                  (       au  [        U	S-
  5       Hc  nSX^S-      X^   -
  -  nXnS-      R                  Xn   R                  -
  U-  nXnS-      R                  Xn   R                  -
  U-  nUSU-  -   UU'   Me     [        U5       GH  nUR                  U   n[         R                  " U5      (       a  UnSnUSU-  -   UR                  U'   MI  [        XU	U5      nUS	:X  a  XR                  U'   Ml  UU	:X  a  XR                  U'   M  UU	S-
  :X  a  UU   UR                  U'   M  UU   U:X  a  UU   UR                  U'   M  UR                  (       a  UU   nOcSUUS-      UU   -
  -  nUUS-      R                  UU   R                  -
  U-  nUUS-      R                  UU   R                  -
  U-  nUSU-  -   nUR                  XU   -
  -  UU   R                  -   n[         R                  " U5      (       aw  UR                  XUS-      -
  -  UUS-      R                  -   n[         R                  " U5      (       a2  UU   R                  UUS-      R                  :X  a  UU   R                  nUR                  XU   -
  -  UU   R                  -   n[         R                  " U5      (       aw  UR                  XUS-      -
  -  UUS-      R                  -   n[         R                  " U5      (       a2  UU   R                  UUS-      R                  :X  a  UU   R                  nUSU-  -   UR                  U'   GM     U$ )
Nr   array of sample points is empty#fp and xp are not of the same size.r*   
fill_valuer   r  rv  r  rU  )rf   r  rH   r   r   r   r   r   r4   r   r   r  r!  r  )r  xpfpr   dzr  dydreslenxlenxplvalrvalxp_valfp_valr/   x_valr  slopesinv_dxr   r  slopes                         r'   np_interp_impl_complex_innerr  z	  sJ    
AB	BB	BB
2w!|:;;
2w#b'>??	ww!|wwrxxBqE??88BHHE*D77DGEa5Dai=DzAAtAGGAJE~#		!#		!%		! V KC  =XXuqy7FXXau-F;;519%bQi"%/0q5	3v=q5	3v= 29,q		 & tAGGAJExx#b4i/		!(E1=ABw#		!e#		!eai!!u		!A%!!u		!;;"1IE"QU)be"34Fq1uINNRUZZ76ADq1uINNRUZZ76AD 29,E zzUU]3bejj@88D>> ::AE):;bQinnLDxx~~"Q%**1q5	*F!!uzzzzUU]3bejj@88D>> ::AE):;bQinnLDxx~~"Q%**1q5	*F!!uzz#b4i/		!a d Kr&   c                    [         R                  " U [         R                  S9n[         R                  " U[         R                  S9n[         R                  " U[         R                  S9n[        U5      S:X  a  [	        S5      e[        U5      [        U5      :w  a  [	        S5      eUR
                  S:X  a#  [         R                  " UR                  US   US9$ [         R                  " UR                  US9nUR
                  n[        U5      n	US   n
XiS-
     nU	S:X  ae  US   nUS   n[        U5       HJ  nUR                  U   nX:  a  XR                  U'   M'  X:  a  XR                  U'   M<  XR                  U'   ML     U$ SnX::  a  USS  US S -
  USS  US S -
  -  nO[         R                  " SUS9n[        U5       GH  nUR                  U   n[         R                  " U5      (       a  XR                  U'   M>  [        XU	U5      nUS:X  a  XR                  U'   Ma  UU	:X  a  XR                  U'   Mw  UU	S-
  :X  a  UU   UR                  U'   M  UU   U:X  a  UU   UR                  U'   M  UR
                  (       a  UU   nOUUS-      UU   -
  UUS-      UU   -
  -  nUXU   -
  -  UU   -   UR                  U'   [         R                  " UR                  U   5      (       d  GM-  UXUS-      -
  -  UUS-      -   UR                  U'   [         R                  " UR                  U   5      (       d  GM{  UU   UUS-      :X  d  GM  UU   UR                  U'   GM     U$ )Nr  r   r  r  r*   r  rU  )rf   r  r   rH   r   r   r   r   r   r4   r   r!  r  )r  r  r  r   r  r  r  r  r  r  r  r  r  r  r/   r  r  r  r  s                      r'   np_interp_impl_innerr  	  s	    
ARZZ	(B	Bbjj	)B	Bbjj	)B
2w!|:;;
2w#b'>??	ww!|wwrxxBqE??88BHHE*D77DGEa5Dai=DzAAtAGGAJE~#		!#		!%		! n K[  =fr#2w&2ab6BsG+;<FXXau-FtAGGAJExx$		!(E1=ABw#		!e#		!eai!!u		!A%!!u		!;;"1IEAYA.2a!e9r!u3DEE$16A>		! 88DIIaL))#(Eq1uI,=#>AE#JDIIaLxx		!--"Q%2a!e92D')!u		!G J Kr&   c                   ^^	 [        US5      (       a  UR                  S:  a  [        S5      e[        US5      (       a  UR                  S:  a  [        S5      eSn[        U5      n[        R
                  " U[        R                  5      (       a  [        U5      e[        U5      n[        R                  " U[        R                  5      m[        R
                  " T[        R                  5      (       a  [        m	O[        m	UU	4S jnUU	4S jn[        U [        R                  5      (       a,  [        U [        R                  5      (       a  [        U5      eU$ U$ )Nr   r*   zxp must be 1Dzfp must be 1Dz:Cannot cast array data from complex dtype to float64 dtypec                    > T" XUT5      $ r-   r%   r  r  r  r   r   s      r'   np_interp_impl!np_interp.<locals>.np_interp_impl\
  s    QB&&r&   c                 2   > T" XUT5      R                   S   $ r   )r   r  s      r'   np_interp_scalar_impl(np_interp.<locals>.np_interp_scalar_impl_
  s    QB&++A..r&   )r  r   r   r  rf   r  r  result_typer   r  r  rY   r   r  r  )
r  r  r  complex_dtype_msgxp_dtfp_dtr  r  r   r   s
           @@r'   	np_interpr  A
  s    r6rww{/**r6rww{/** 	E  BE	}}UB..//+,,BENN5"**-E	}}UB..//,$'/ !U\\""a''/00$$r&   c                     U R                   S:X  d   eU R                  u  p[        R                  " US4U R                  S9n[        U5       H&  n[        R                  " XS S 24   5      U-  X4S4'   M(     U$ )Nr   r*   r  r   )r   r   rf   r   r   r4   r  )r.   r   r  r   r/   s        r'   row_wise_averager   m
  sh    66Q;;77DA
((Aq6
)C1XFF1T7Oa'qD	  Jr&   c                    Uc  U(       a  SnOSnU R                   S   U-
  n[        US5      nU [        U 5      -  n [        R                  " U [        R
                  " U R                  5      5      nU[        R                  " SU5      -  nU$ )Nr   r*   r  )r   r$  r   rf   dotr   Tr  )Xbiasddoffactrj   s        r'   np_cov_impl_innerr  z
  s     |DD 771:D tS>D 	!	A 	q"''!##,A4	  AHr&   c                      g r-   r%   r%   r&   r'   _prepare_cov_input_innerr
  
  rf  r&   c                 B    US [         R                  4;   a  S nU$ S nU$ )Nc                 j    [         R                  " [        U 5      5      nU(       d  UR                  nU$ r-   )rf   
atleast_2drY  r  )r   r  rowvarr   m_arrs        r'   r
  9_prepare_cov_input_impl.<locals>._prepare_cov_input_inner
  s%    MM(1+.ELr&   c                    [         R                  " [        U 5      5      n[         R                  " [        U5      5      nU(       d>  UR                  S   S:w  a  UR                  nUR                  S   S:w  a  UR                  nUR                  u  pgUR                  u  pXy:w  a  [        S5      e[         R                  " Xh-   U4US9n
XJS U2S S 24'   XZU* S 2S S 24'   U
$ )Nr   r*   z$m and y have incompatible dimensionsr  )rf   r  rY  r   r  r   r   )r   r  r  r   r  y_arrm_rowsm_colsy_rowsy_colsr   s              r'   r
  r  
  s    MM(1+.EMM(1+.E
 ;;q>Q&!GGE;;q>Q&!GGE"[[NF"[[NF !GHH ((FOV4EBC#
O$!Jr&   r~  )r   r  r  r   r
  s        r'   _prepare_cov_input_implr  
  s.    T5::	D $#5	4 $#r&   c                 f    U R                   S:X  a!  U R                  S   S:X  a  Sn[        U5      eg g )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  
  s6    vv{qwwqzQ? 3	 '{r&   c                     U $ r-   r%   r  s    r'   r  r  
  s    qr&   c                    [         R                  n[        U [        R                  5      (       a  [        U R                  5      nU$ [        U [        R                  [        R                  45      (       a  [        U 5      nU$ [        U [        R                  [        R                  45      (       a  [        5       nU  HG  n[        US5      (       a"  U Vs/ s H  oBR                  U5      PM       nM6  UR                  U5        MI     [        U5      S:  a/  [         R                  " U Vs/ s H  n[        U5      PM     sn6 nU$ [        U5      S:X  a  [        UR!                  5       5      nU$ s  snf s  snf )Nr*  r*   )rf   r   rY   r   r   r	   r   r  r  rI   r\   setr  addrH   r  r   )
array_likearray_like_dtcoltypesr   rk   tys         r'   r  r  
  s(   JJM*ekk** !1!12  
Ju}} =	>	> ,  
J =	>	>5CsG$$*-.#Qa#.S!	 
 x=1,,h.Ohx|h.OPM  ]a$X\\^4M / /Ps   E1,E6c                    [        U [        R                  5      (       a+  U R                  S:  a  [	        SR                  U5      5      eg [        U [        R                  5      (       a  [        U R                  S   [        R                  5      (       aV  [        U R                  S   R                  S   [        R                  5      (       a  SR                  U5      n[	        U5      eg g g )Nr   z{0} has more than 2 dimensionsr   )rY   r   r   r   r   formatr  r  )r  namer   s      r'   check_dimensionsr%  
  s    *ekk**??Q !A!H!H!NOO 	J	/	/jnnQ'88*..+//2ENNCC6==dC$S)) D 9 
0r&   c                     [         R                  " U 5      (       d  [        S5      eU [        U 5      -
  S:w  a  [        S5      eg )Nz)Cannot convert non-finite ddof to integerr   zddof must be integral value)rf   r  r   r  )r  s    r'   _handle_ddofr'  
  s?    ;;tDEEc$i1677 r&   c                     U $ r-   r%   r  s    r'   r  r  
  s    ar&   c                 :    U" U 5        U" U5        [        XX#5      $ r-   )r
  )r   r  r  r   r  _DDOF_HANDLER_M_DIM_HANDLERs          r'   _prepare_cov_inputr,  
  s!     1$#A&88r&   c                    US [         R                  4;   n[        U [         R                  5      (       a  U R                  S:X  a  U$ [        U [         R
                  5      (       aj  [        S U R                    5       5      (       a  U$ [        U R                   5      S:X  a.  [        U R                   S   [         R
                  5      (       a  U$ [        U [         R                  [         R                  45      (       a  U$ [        U [         R                  5      (       a4  [        U R                  S   [         R                  5      (       d  U(       a  gg)Nr*   c              3   v   #    U  H/  n[        U[        R                  [        R                  45      v   M1     g 7fr-   )rY   r   r  r  ).0r  s     r'   	<genexpr>)scalar_result_expected.<locals>.<genexpr>  s.      /-1 !ellEMM:;;-s   79r   TF)r   r  rY   r   r   	BaseTuplerg  rH   r  r  r  r  )mandatory_inputoptional_inputopt_is_nones      r'   scalar_result_expectedr6  
  s     T5::$66K/5;;//O4H4HA4M/5??33 /'--/ / /O))*a/44Q7II""/ELL%--#@AA/5>>22?..q15>>BBr&   c                     [         R                  " [         R                  " U 5      S:  [         R                  " U 5      U 5      $ r  )rf   r2  fabssignr  s    r'   
_clip_corrr:    s)    88BGGAJNBGGAJ22r&   c                 f    [        U R                  5      n[        U R                  5      nUSU-  -   $ )Nrv  )r:  r   r  )r  r   r  s      r'   _clip_complexr<    s-    affDaffD"t)r&   c                 `  ^	^
^ [        U S5        [        US5        US [        R                  4;   a  [        m	Og[	        U[        R
                  [        R                  45      (       a  [        m	O1[	        U[        R                  5      (       a  [        m	O[        S5      e[        m
[	        U [        R                  5      (       a  [        m
[        U 5      n[        U5      n[        R                  " XV[        R                   5      mSU	U
U4S jjn  SU	U
U4S jjn[#        X5      (       a  U$ U$ )Nr   r  z)ddof must be a real numerical scalar typec           	      R  > [        XUTUTT5      R                  T5      n[        R                  " [        R                  " UR
                  5      S:H  5      (       a@  [        R                  " UR
                  S   UR
                  S   4[        R                  TS9$ [        XSU5      $ )Nr   r  )	r,  r  rf   r  r{  r   r   rw  r  )	r   r  r  r  r  r  r*  r+  r   s	         r'   np_cov_implnp_cov.<locals>.np_cov_implC  s    qVUD--//5ve} 	
 66"((177#q())77AGGAJ
3!&( ( %Qd33r&   c           	      8  > [        XX$T	TT5      R                  T	5      n[        R                  " [        R                  " UR
                  5      S:H  5      (       a  [        R                  nO[        XSU5      R                  S   n[        R                  " U5      $ r   )	r,  r  rf   r  r{  r   rw  r  r   )
r   r  r  r  r  r  variancer*  r+  r   s
          r'   np_cov_impl_single_variable+np_cov.<locals>.np_cov_impl_single_variableM  sv    qV5--//5ve} 	
 66"((177#q())vvH($7<<Q?Hxx!!r&   NTFN)r%  r   r  _handle_ddof_noprY   r@  r  r   r'  r   _handle_m_dim_nopr   r  r  rf   r  r   r6  )r   r  r  r  r  m_dty_dtr?  rC  r*  r+  r   s            @@@r'   np_covrJ  $  s     QQ ejj!!(dU]]EMM:;;,Mekk**(MIJJ
 'N!U[[!!- 1D1DNN4rzz2E4 4 BG)-
" 
" a##**r&   c                    ^ [        U 5      n[        U5      n[        R                  " X4[        R                  5      nU[        R                  :X  a  [
        mO[        mSU4S jjnSS jn[        X5      (       a  U$ U$ )Nc                 .  > [         R                  " XU5      n[         R                  " U5      n[         R                  " UR                  5      n[        UR                  S   5       H$  nX6S S 24==   U-  ss'   US S 2U4==   U-  ss'   M&     T" U5      $ r   )rf   covdiagsqrtr   r4   r   )r  r  r  rj   r  stddevr/   clip_fns          r'   np_corrcoef_impl%np_corrcoef.<locals>.np_corrcoef_implk  sv    FF1 GGAJqwwqz"AdGvGadGvG # qzr&   c                 8    [         R                  " XU5      nX3-  $ r-   )rf   rM  )r  r  r  rj   s       r'    np_corrcoef_impl_single_variable5np_corrcoef.<locals>.np_corrcoef_impl_single_variablev  s    FF1 ur&   NT)r  rf   r  r   
complex128r<  r:  r6  )	r  r  r  r  rI  r   rR  rU  rQ  s	           @r'   np_corrcoefrY  _  sf     1D1DNN4rzz2E	 a##//r&   c                    ^^ [        U [        R                  [        R                  45      n[	        U 5      (       a  U(       d  S nU$ SmSmUU4S jnU$ )Nc                    [         R                  " U 5      nUR                  S:X  a#  [         R                  " S[        R
                  S9$ [         R                  " [         R                  " [         R                  " U5      5      5      $ )Nr%   )r   r*   r  )	rf   r  r   r  r   r6   rV  vstackrL  rZ  s     r'   r^  np_argwhere.<locals>.impl  sO    **Q-CyyBxxejj99<<		"**S/ :;;r&   )r   r   )r*   r   c                    > U b3  [        U 5      (       a#  [        R                  " T[        R                  S9$ [        R                  " T[        R                  S9$ r  )r  rf   r  r   r6   )r.   falseishtrueishs    r'   r^  r]    s:    }axxuzz::xx

;;r&   )rY   r   r  r  r
   )r.   
use_scalarr^  r_  r`  s      @@r'   np_argwhererb    sO    
 Aemm<=J:	< K 	< Kr&   c                 6    [        U 5      (       a  S nU$ S nU$ )Nc                     [         R                  " U 5      n[         R                  " [         R                  " U5      5      S   $ r   )rf   r  rL  rW  rZ  s     r'   r^  np_flatnonzero.<locals>.impl  s+    **Q-C::bhhsm,Q//r&   c                     U b  [        U 5      (       a  S/nO[        S5       Vs/ s H  o"PM     nn[        R                  " U[        R
                  S9$ s  snf )Nr   r  )r  r4   rf   r{  r   r6   )r.   rB   r  s      r'   r^  re    sH    }as#(8,8a8,88D

33 -s   Ar  )r.   r^  s     r'   np_flatnonzerorg    s'     	0 K	4 Kr&   c                    U R                   S:X  aC  U R                  S   nU R                  S   nSU-   nU(       a  X2-  nXT4$ U[        X#5      -  n XT4$ [        R                  " U R                  5      n[        R
                  " [        R                  " U5      S:H  5      (       d  [        S5      eS[        R                  " US S 5      R                  5       -   nUR                  5       nXT4$ )Nr   r   r*   z/All dimensions of input must be of equal lengthrU  )r   r   r	  rf   r{  rg  r  r   r   r  r   )r.   wrapr   r  stepr  r   s          r'   _fill_diagonal_paramsrk    s    vv{GGAJGGAJ1u%C 9 c!i-C 9 !vvbggen)**NOOBJJuSbz*//11jjl9r&   c                 `    [        X5      u  p4[        SX45       H  nXR                  U'   M     g r   )rk  r4   r   )r.   r   ri  r  rj  r/   s         r'   _fill_diagonal_scalarrm    s*    %a.IC1c q	 !r&   c                     [        X5      u  p4Sn[        U5      n[        SX45       H  nX   U R                  U'   US-  nXV-  nM     g r  )rk  rH   r4   r   )r.   r   ri  r  rj  ctrv_lenr/   s           r'   _fill_diagonalrq    sL    %a.IC
CHE1c Hq	qk !r&   c                 ^   [         R                  " U R                  5      nUR                  nUR                  n[         R
                  " [         R                  " U5      ) 5      (       d:  [         R
                  " X:  5      (       d  [         R
                  " X:  5      (       a  [        S5      eg Nz'Unable to safely conform val to a.dtype)rf   iinfor   r	  r$  r  r  r   )r.   r   rt  v_minv_maxs        r'   _check_val_intrw    su    HHQWWEIIEIIE 
vvr{{3  BFF3;$7$7266#+;N;NBCC <Or&   c                 0   [         R                  " U R                  5      nUR                  nUR                  nU[         R
                  " U5         n[         R                  " XS:  5      (       d  [         R                  " XT:  5      (       a  [        S5      eg rs  )rf   finfor   r	  r$  r  r  r   )r.   r   ry  ru  rv  finite_valss         r'   _check_val_floatr{    sp    HHQWWEIIEIIE bkk#&'K	vvk!""bff[-@&A&ABCC 'Br&   c                     U $ r-   r%   r  r  s     r'   r  r    s    1r&   c                     g r-   r%   r  s    r'   rY  rY    rf  r&   c                 .  ^ [        U [        R                  5      (       a  S $ [        U [        R                  [        R                  45      (       a  S $ [        U [        R
                  [        R                  45      (       a  [        U 5      mU4S j$ g )Nc                     U $ r-   r%   r  s    r'   r  _asarray_impl.<locals>.<lambda>  s    r&   c                 .    [         R                  " U 5      $ r-   rz  r  s    r'   r  r    s    !r&   c                 0   > [         R                  " U /TS9$ r  rz  r  r!  s    r'   r  r     s    1#R0r&   )rY   r   r   r  r\   r  r  r	   r  s    @r'   _asarray_implr    sh    !U[[!!	A4	5	5$$	Aemm4	5	5a[00 
6r&   c                 F  ^ U R                   S:  a  [        U R                  [        R                  5      (       a  [
        mO6[        U R                  [        R                  5      (       a  [        mO[        mSU4S jjnSU4S jjn[        U[        R                  [        R                  [        R                  45      (       a  U$ [        U[        R                  [        R                  [        R                  45      (       a  U$ g SU R                   -  n[        U5      e)Nr*   c                 `   > [        U5      R                  5       nT" X5        [        XU5        g r-   )rY  r  rm  r.   r   ri  tmpvalcheckers       r'   scalar_impl%np_fill_diagonal.<locals>.scalar_impl  s'    c]**,FA!!$/r&   c                 `   > [        U5      R                  5       nT" X5        [        XU5        g r-   )rY  r  rq  r  s       r'   non_scalar_impl)np_fill_diagonal.<locals>.non_scalar_impl  s'    c]**,FA1d+r&   z4The first argument must be at least 2-D (found %s-D)F)r   rY   r   r   r@  rw  r   r{  
_check_nopr  r\   r  r   r   )r.   r   ri  r  r  r   r  s         @r'   np_fill_diagonalr    s     	vvz aggu}}--$G--&G G	0
	,
 cEKKFGGekk5>>5;;GHH"" I EqvvM#r&   c                 "    SU R                   4-  $ )Nzllvm.rint.f%d)r   )tps    r'   _np_round_intrinsicr  $  s    bkk^++r&   c                     U" U5      nS nX#4$ )Nc                 4   Uu  nUR                   S   nU R                  U5      nUR                  n[        R                  R                  Xf/5      n[        R                  " Xx[        U5      5      n	UR                  X45      n
[        XUR                  U
5      $ r   )r<   r2   modulellvmliteirFunctionTyper   get_or_insert_functionr  callr   rt   )rw   r:   rx   r<   r   r  lltyr  fntyr  ry   s              r'   rF    _np_round_float.<locals>.codegen-  s    XXa[%%b){{''f5++F,?,CEll2v&!'COOSIIr&   r%   )	typingctxr   rx   rF   s       r'   _np_round_floatr  )  s    
c(C	J <r&   c                 H   [         R                  " U 5      (       d  [         R                  " U 5      (       a  U $ US:  aM  US:  a  SUS-
  -  nSnOSU-  nSnX-  U-  n[         R                  " U5      (       a  U $ [        U5      U-  U-  $ SU* -  nX-  n[        U5      U-  $ )Nr      g      $@gMDro  )r  rq  r!  r  )r  ndigitspow1pow2r  s        r'   round_ndigitsr  ;  s    zz!}}

1 !|R< GbL)DD7?DDX::a==H"T)T11 !Hq!D((r&   c                    [        U 5      (       d  [        S5      e[        U[        R                  5      (       d  [        U5      (       d  Sn[        U5      e[        U [        R                  [        R                  [        R                  45      (       a  [        U5      (       as  [        U [        R                  5      (       a  S	S jnU$ [        U [        R                  5      (       a  S	S jnU$ [        U [        R                  5      (       a  S	S jnU$ g S	S jnU$ [        U [        R                  5      (       a  [        U5      (       a  S	S jnU$ S	S jnU$ g )
Nz#The argument "a" must be array-likez5The argument "out" must be an array if it is providedc                 :    US:X  a  [        U 5      $ [        X5      $ r   )r  r  r.   decimalsr   s      r'   r^  impl_np_round.<locals>.implc  s    1}.q11,Q99r&   c                 :    US:X  a  U $ [        [        X5      5      $ r   )r  r  r  s      r'   r^  r  j  s    1} "=#=>>r&   c                     US:X  a+  [        U R                  5      n[        U R                  5      nO,[        U R                  U5      n[        U R                  U5      n[	        X45      $ r   )r  r   r  r  complex)r.   r  r   r   r  s        r'   r^  r  q  sP    1}.qvv6.qvv6,QVVX>,QVVX>"4..r&   c                 8    [         R                  " X5      US'   U$ r   )rf   roundr  s      r'   r^  r  {  s    !.A
r&   c                 \    [         R                  " U 5      n[         R                  " XU5      $ r-   )rf   r  r  r  s      r'   r^  r    s!    mmA&xxS11r&   c                     U R                   UR                   :w  a  [        S5      e[        R                  " U 5       H  u  p4[        R                  " XA5      X#'   M     U$ )Nzinvalid output shape)r   r   rf   r  r  )r.   r  r   r  r   s        r'   r^  r    sH    77cii'$%;<<"$.."3JE!##!8CJ #4
r&   rP  )	r
   r   rY   r   r   r   r   r@  r  )r.   r  r   r   r^  s        r'   impl_np_roundr  V  s    A?@@sEKK((K,<,<E#!ekk5==%--@AAs!U[[)):
 Au}}--?
 Au}}--/  . K	Au{{	#	#s2 K K 
$r&   c                     [        U [        R                  5      (       a  S nU$ [        U [        R                  5      (       a  S nU$ [	        S5      e)Nc                 j    U S:X  a  Sn U [         R                  -  n [         R                  " U 5      U -  $ )Nr  g#B;)rf   pisinr  s    r'   r^  impl_np_sinc.<locals>.impl  s-    DyJA66!9q= r&   c                     [         R                  " U 5      n[         R                  " U 5       H  u  p#[         R                  " U5      X'   M     U$ r-   )rf   r3  r  sinc)r  r   r  r   s       r'   r^  r    s9    --"C nnQ/
WWS\
 0Jr&   z,Argument "x" must be a Number or array-like.)rY   r   r  r   r   r  s     r'   impl_np_sincr    sH    !U\\""	!
 	Au{{	#	#	
 KLLr&   c                   ^^ [        S[        R                  -  5      m[        U [        R
                  5      (       a
  SU4S jjnU$ [        U [        R                  5      (       ae  U R                  n[        U[        R                  5      (       a  UR                  mO#[        U[        R                  5      (       a  UmOg SU4S jjnU$ [        SU  35      e)N   c                    > U(       a.  [         R                  " U R                  U R                  5      T-  $ [         R                  " U R                  U R                  5      $ r-   )rf   arctan2r  r   )rA  degdeg_mults     r'   r^  ov_np_angle.<locals>.impl  s=    zz!&&!&&1H<<zz!&&!&&11r&   c                    > [         R                  " U TS9n[         R                  " U 5       H  u  p4[         R                  " XA5      X#'   M     U$ r  )rf   r3  r  angle)rA  r  r   r  r   	ret_dtypes        r'   r^  r    s=    --3C nnQ/
XXc/
 0Jr&   z6Argument "z" must be a complex or Array[complex]. Got r  )r  rf   r  rY   r   r  r   r   r  underlying_floatr   r   )rA  r  r^  r   r  r  s       @@r'   ov_np_angler    s    S255[!H !U\\""	2
 	Au{{	#	#eU]]++..Iu{{++I	
  778c; < 	<r&   zarray.nonzeroc                    UR                   S   nUR                  nUR                  nUR                  n[	        U5      " XUS   5      n[
        R                  " XR                  5      n	[
        R                  " XR                  5      n
UR                  nUR                  nU R                  [        R                  S5      nU R                  [        R                  S5      n[
        R                  " X5      n[
        R                  " XUR                   5       n[
        R"                  " XXU
UU5      n[%        XUU5      nU R'                  XR                  U5      nUR)                  U5         UR+                  UR-                  UR/                  U5      U5      U5        S S S 5        S S S 5        UR/                  U5      4n[1        U5       Vs/ s H  n[3        XUU5      R5                  5       PM      nnU Vs/ s H  n[	        U5      " XU5      PM     nnU Vs/ s H  nUR                  PM     nn[
        R                  " X5      n[
        R                  " XUR                   5       n[
        R"                  " XXU
UU5      n[%        XUU5      nU R'                  XR                  U5      nUR)                  U5         U(       d  U4nUR/                  U5      n[1        U5       H3  n[
        R"                  " XUU   USSU/5      n[7        XUUU   U5        M5     UR+                  UR-                  UU5      U5        S S S 5        S S S 5        U R9                  XR                  U5      n[;        XUR                  U5      $ ! , (       d  f       GN= f! , (       d  f       GN= fs  snf s  snf s  snf ! , (       d  f       N|= f! , (       d  f       N= f)Nr   r*   r%   C)r<   rt   r   r*  r   r   unpack_tupler   stridesrB   layoutr5   r   r6   alloca_once_value	loop_nestr   get_item_pointer2r   is_trueif_thenstorer  loadr4   r   	_getvaluer   
make_tupler   )rw   r:   rx   r<   arytyr   outarytynoutsr  r   r  rB   r  rl   rD  r*  indicesptrr   nz	out_shaper/   outsr   outarys	out_datasr  curr>   s                                r'   array_nonzeror    s    HHQKEOOE{{HKKE
U
Gd1g
6C  ))4E""7KK8G88D\\F 

A.D


uzz1
-C%%g4E			7499	5''$w(.9%5__Wkk37__R MM'++gll5&93?G ! 
6 e$&I5\#! 7XyAKKM! 	 #FJKdsz(#Gc:dGK%,-WcWI- %%g4E			7499	5''$w(.9%5__Wkk37__R ',,u%C5\//)A,09203cU< 7Xwqz3G	 "
 MM'++c3/7 ! 
6$ 

Woot
<CGcoosCC? !  
6	5#K- !  
6	5s]   AN-2NN%N&9N+N0*AO?B N5?O
N	N
N#5
O	?O
Oc                    ^  U 4S jnU$ )Nc                    > [         R                  " U5      R                  T5      n[         R                  " U5      R                  T5      nU (       a  U$ U$ r-   )rf   r  r  )	conditionr  r  x_y_r   s        r'   r^  )_where_zero_size_array_impl.<locals>.impl  s@    ZZ]!!%(ZZ]!!%(r&B&r&   r%   )r   r^  s   ` r'   _where_zero_size_array_implr    s    ' Kr&   c                 f    [         R                  " U 5       H  u  pEU(       a  X   OX$   X4'   M     U$ r-   )rf   r  )condr  r  ry   r   rj   s         r'   _where_generic_inner_implr  
  s+    ..&16AF 'Jr&   c                     U R                   nUR                   nUR                   nUR                   n[        U R                  5       H  nXH   (       a  XX   OXh   Xx'   M     U$ r-   )r   r4   r   )	r  r  r  ry   cfxfyfrfr/   s	            r'   _where_fast_inner_implr    sO    	B	
B	
B	B499BE Jr&   c                 .   ^ ^^ TS1S14;   mU UU4S jnU$ )Nr  Fc                 6  > [         R                  " U 5      [         R                  " U5      [         R                  " U5      pTn[         R                  " UR                  UR                  UR                  5      n[         R                  " X65      n[         R                  " XF5      n[         R                  " XV5      n	TS:X  a&  [         R
                  " US S S2   TS9R                  n
O[         R
                  " UTS9n
T(       a  [        XxX5      $ [        XxX5      $ )Nr  rU  r  )	rf   r  r  r   r  r   r  r  r  )r  r  r  cond1x1y1r   cond_r  r  ry   r   r  use_faster_impls              r'   r^  !_where_generic_impl.<locals>.impl  s    

9-rzz!}bjjm2##EKK288D-__R'__R'S=((52;e466C((5.C)%R==,U@@r&   r%   )r   r  r^  r  s   `` @r'   _where_generic_implr    s"    #.OA" Kr&   c                 F    [        U 5      (       d  Sn[        U5      eS nU$ )N+The argument "condition" must be array-likec                 J    [         R                  " U 5      R                  5       $ r-   )rf   r  rL  )r  s    r'   where_cond_none_none)ov_np_where.<locals>.where_cond_none_none9  s    zz)$,,..r&   )r
   r   )r  r   r  s      r'   ov_np_wherer  3  s(    I&&;S!!/r&   c                 `   [        U 5      (       d  Sn[        U5      e[        U5      (       d  [        U5      (       a  [        S5      e[        X4S5       H1  u  pE[        U5      (       a  M  Sn[        UR	                  U5      5      e   [        U [        R                  5      n[        U[        R                  5      n[        U[        R                  5      nU(       a  [        U5      n	[        U5      n
[        R                  " X5      nS n[        XU4 Vs/ s H
  o" U5      PM     sn5      nU(       a  [        U5      $ U R                  nU(       aD  U(       a=  UR                  UR                  s=:X  a  U R                  :X  a  O  OUR                  nOSn[        X5      $ S nU$ s  snf )Nr  z"Argument "x" or "y" cannot be Noner}  z0The argument "{}" must be array-like if providedc                     [        U [        R                  5      =(       d0    [        U [        R                  5      =(       a    U R                  S:H  $ r   )rY   r   r  r   r   )args    r'   check_0_dim$ov_np_where_x_y.<locals>.check_0_dim`  s7    c5<<0 @3,>Q@r&   r  c                     [         R                  " [         R                  " U 5      [         R                  " U5      [         R                  " U5      5      $ r-   )rf   r2  r  )r  r  r  s      r'   r^  ov_np_where_x_y.<locals>.implo  s.    88BJJy12::a="**Q-PPr&   )r
   r   r   zipr#  rY   r   r   r  rf   r  rg  r  r  r  )r  r  r  r   r  r$  cond_arrr  r  r  rI  r   r  r.   special_0_caser  r^  s                    r'   ov_np_where_x_yr  >  s]   I&&;S!! 1~~QABB!,	$$DC D!122 -
 )U[[1Hq%++&Eq%++&Eq!q!  ,	@ yQ6GH6Gk!n6GHI.u55!!Uxx1887y'7'77"511	Q Is   F+c                     S nU$ )Nc                     U R                   $ r-   )r   rr  s    r'   np_real_implnp_real.<locals>.np_real_implv      xxr&   r%   )r   r  s     r'   np_realr  t       r&   c                     S nU$ )Nc                     U R                   $ r-   )r  rr  s    r'   np_imag_implnp_imag.<locals>.np_imag_impl~  r  r&   r%   )r   r  s     r'   np_imagr  |  r  r&   c                 L    [        U [        R                  5      (       d  g S nU$ )Nc                 L    [         R                  " U 5       H
  nX!:X  d  M
    g   gr  )rf   rg   )ri   r  r  s      r'   np_contains_impl%np_contains.<locals>.np_contains_impl  s!    3Ax   r&   r   )ri   r  r  s      r'   np_containsr    s#    c5;;'' r&   c                 t    [        U 5      (       d  [        S5      e[        U5      (       a  SS jnU$ SS jnU$ )Nz3The argument to np.count_nonzero must be array-likec                 `    [         R                  " U 5      n[         R                  " US:g  5      $ r   )rf   rW  r  r.   r^   arr2s      r'   r^  np_count_nonzero.<locals>.impl  s"    88A;D66$!)$$r&   c                 h    U R                  [        R                  5      n[        R                  " X!S9$ )N)r^   )r  rf   r   r  r"  s      r'   r^  r$    s#    88BHH%D66$**r&   r-   )r
   r   r   )r.   r^   r^  s      r'   np_count_nonzeror&    s<    AOPP4	% 	+ r&   c                     U $ r-   r%   r  s    r'   r  r    s    r&   c                 .    [         R                  " U 5      $ r-   r  r  s    r'   r  r    s    

1r&   c                 "  ^ [        U [        R                  [        R                  45      (       d  [	        S5      e[        U[        R                  [        R                  [        R
                  45      (       ah  [        U[        R
                  5      (       a  [        mO:[        UR                  [        R                  5      (       d  [	        S5      e[        mU4S jnU$ [        U[        R                  5      (       d  [	        S5      eS nU$ )Nz)arr must be either an Array or a Sequencezobj should be of Integer dtypec                    > [         R                  " [         R                  " U 5      5      n U R                  n[         R                  " U[         R
                  S9nT" U5      nSX1'   X   $ )Nr  F)rf   rW  r  r   onesr   )ri   r  r  keephandlers       r'   np_delete_impl!np_delete.<locals>.np_delete_impl  sN    ((2::c?+CA771BHH-D#,CDI9r&   c                     [         R                  " [         R                  " U 5      5      n U R                  nUnX2* :  d  X2:  a  [	        S5      eUS:  a  X2-  n[         R
                  " U S U XS-   S  45      $ )Nz"obj must be less than the len(arr)r   r*   )rf   rW  r  r   
IndexErrorconcatenate)ri   r  r  poss       r'   np_delete_scalar_impl(np_delete.<locals>.np_delete_scalar_impl  so    ((2::c?+CACbCH !EFF a>>3t9c'(m"<==r&   )
rY   r   r   r  r   	SliceTypenp_delete_handler_isslicer   r@  np_delete_handler_isarray)ri   r  r.  r4  r-  s       @r'   	np_deleter9    s    
 cEKK899EFF#U^^U__EFFcEOO--/Gcii77!"BCC/G	  #u}}-->??	> %$r&   c                 p    [        U [        R                  5      (       a  U R                  S:X  a  g SS jnU$ )Nr   c                    US:X  a  U R                  5       $ US:  a  [        S5      eU R                  S   nU R                  S S [        X!-
  S5      4-   n[        R
                  " X0R                  5      nUR                  S:X  a  U$ U R                  SU45      nUR                  SUR                  S   45      n[        R
                  " X R                  5      n[        UR                  S   5       Hk  n[        US-
  5       H  n	XXU	S-   4   XXU	4   -
  Xy'   M     [        SU5       H(  n
[        X*-
  S-
  5       H  n	XyS-      Xy   -
  Xy'   M     M*     US X!-
   Xh'   Mm     U$ )Nr   z"diff(): order must be non-negativerU  r*   )
r  r   r   r$  rf   r   r   r   rX  r4   )r.   r  r   r  r   a2out2workmajorr/   niters              r'   	diff_implnp_diff_impl.<locals>.diff_impl  sQ   6668Oq5ABBwwr{GGCRLC!$4#66	hhy''*88q=J YYDz"{{B		"./xxgg&288A;'E4!8_AE\*Rq\9 % q!t|a/0A"q5kDG3DG 1 % y/DK ( 
r&   r  )rY   r   r   r   )r.   r  rA  s      r'   np_diff_implrC    s-    a%%1> r&   c                     [        U 5      (       a  [        U5      (       d  [        S5      e[        R                  [        R                  4n[        X5      (       a  [        X5      (       a  S nU$ S nU$ )Nz3Both arguments to "array_equals" must be array-likec                 
    X:H  $ r-   r%   )a1r<  s     r'   r^  np_array_equal.<locals>.impl	  s	    8Or&   c                     [         R                  " U 5      n[         R                  " U5      nUR                  UR                  :X  a  [         R                  " X#:H  5      $ gr  )rf   r  r   rg  )rF  r<  r.   r  s       r'   r^  rG    s?    

2A

2Aww!''!vvaf~%r&   )r
   r   r   r  r  rY   )rF  r<  acceptedr^  s       r'   np_array_equalrJ     se     R  %5b%9%9OPPu||,H"Jr$<$<	 K	 Kr&   c                     [        U 5      (       d  [        U5      (       d  [        S5      e[        U[        R                  [
        45      (       d  [        S5      eSS jnU$ )Nz.intersect1d: first two args must be array-likez5intersect1d: argument "assume_unique" must be booleanc                 z   [         R                  " U 5      n [         R                  " U5      nU(       d-  [         R                  " U 5      n [         R                  " U5      nO U R                  5       n UR                  5       n[         R                  " X45      nUR                  5         USS  US S :H  nUS S U   nU$ )Nr*   rU  )rf   r  r  rW  r2  sort)ar1ar2assume_uniqueauxr5  int1ds         r'   np_intersects1d_impl0jit_np_intersect1d.<locals>.np_intersects1d_impl!  s    jjojjo))C.C))C.C))+C))+CnncZ(
12w#cr("CRr&   r  r
   r   rY   r   r  r  )rN  rO  rP  rS  s       r'   jit_np_intersect1drV    s^    
 S!!%5c%:%:JKKmemmT%:;; E F 	F   r&   c                 
   [        U[        R                  5      (       a+  UR                  S:w  a  [	        SR                  U 5      5      eg [        U[        R                  5      (       d  [	        SR                  U 5      5      eg )Nr*   z${0}(): input should have dimension 1z+{0}(): input should be an array or sequence)rY   r   r   r   r   r#  r  )	func_nameseqs     r'   validate_1d_array_likerZ  4  so    #u{{##88q= !G"(&"35 5  U^^,,J$fY/1 	1 -r&   c                   ^^^ [        SU 5        [        U R                  [        R                  5      (       d  g [        US5        US [        R                  4;  a5  [        SU5        [        R                  m[        S 5       m[        S 5       mO([        R                  m[        S 5       m[        S 5       mSUUU4S jjnU$ )	Nbincount	minlengthc                 J    [        U 5      [        U5      :w  a  [        S5      eg )Nz7bincount(): weights and list don't have the same length)rH   r   r.   r  r]  s      r'   validate_inputs$np_bincount.<locals>.validate_inputsM  s)    1vW%  "3 4 4 &r&   c                      X==   X1   -  ss'   g r-   r%   r   r   r   r  s       r'   
count_itemnp_bincount.<locals>.count_itemS  s    H$Hr&   c                     g r-   r%   r_  s      r'   r`  ra  Z  s    r&   c                     X==   S-  ss'   g r  r%   rc  s       r'   rd  re  ^  s    HMHr&   c                 \  > T
" XU5        US:  a  [        S5      e[        U 5      nUS:  a  U S   OSn[        SU5       H$  nX   S:  a  [        S5      e[        X@U   5      nM&     [        US-   U5      n[        R
                  " UT	5      n[        U5       H  nT" XuX   U5        M     U$ )Nr   z 'minlength' must not be negativerU  r*   z/bincount(): first argument must be non-negative)r   rH   r4   r$  rf   r  )r.   r  r]  r  r  r/   
out_lengthr   rd  r  r`  s           r'   bincount_impl"np_bincount.<locals>.bincount_implb  s    I.q=?@@FA!2q!Atax  "0 1 1t$E	  I.
hhz9-qAsqtW- 
r&   r   )rZ  rY   r   r   r@  r   r  rf   r   r   r6   )r.   r  r]  rj  rd  r  r`  s       @@@r'   np_bincountrl  >  s    :q)aggu}}--Y,tUZZ((z73 JJ			4 
	4
 
	% 
	% JJ			 
	 
	 
	 & r&   c                    [         R                  " U R                  5      (       a  [         R                  " UR                  5      (       a  [         R                  " U R                  5      (       a   [         R                  " UR                  5      $ [         R                  " UR                  5      (       a  gU R                  UR                  :*  $ g[         R                  " UR                  5      (       a  g[         R                  " U R                  5      (       a?  [         R                  " UR                  5      (       a  U R                  UR                  :*  $ g[         R                  " UR                  5      (       a  gU R                  UR                  :  a  gU R                  UR                  :X  a  U R                  UR                  :*  $ gr  )rf   r!  r   r  r  s     r'   less_than_or_equal_complexrn  |  s   	xx88AFFxxxx''88AFF##66QVV++ 88AFFxx88AFF##66QVV++ 88AFF##vv#166) vv// r&   c                    [        U [        5      (       d  [        U[        5      (       a  [        X5      $ [        U[        [        R
                  [        R                  45      (       a  [        R                  " U5      (       a  gX:*  $ rW  )	rY   r  rn  r  r   float32r   rf   r!  r  s     r'   _less_than_or_equalrq    sY    !WAw!7!7)!//	Au}}emm<	=	=88A;;6Mr&   c                     [        U [        5      (       d  [        U[        5      (       a  [        X5      $ [        U[        [        R
                  [        R                  45      (       a  [        X5      $ X:  $ r-   )rY   r  less_than_complexr  r   rp  r   less_than_floatr  s     r'   
_less_thanru    sT    !WAw!7!7 &&	Au}}emm<	=	=q$$5Lr&   c                 z    [         R                  " U 5      (       a  g[         R                  " U5      (       a  gX:  $ r  )rf   r  r  s     r'   _less_then_datetime64rw    s+     
xx{{	xx{{5Lr&   c                 "    [        X5      (       + $ r-   )rw  r  s     r'   _less_then_or_equal_datetime64ry    s    $Q***r&   c                    ^  U 4S jnU$ )Nc                 h   > X#:  a*  X#U-
  S-	  -   nX   nT" XQ5      (       a  US-   nOUnX#:  a  M*  X#4$ r  r%   )r.   key_valr3  rL  r  mid_valcmps         r'   r^  _searchsorted.<locals>.impl  sN    G"3!9:GjG7$$!A+!  r&   r%   )r~  r^  s   ` r'   _searchsortedr    s    	  Kr&   leftrightc                 ^   U[         ;   d   eU R                  S;   a  [        n[        nO[        n[
        nUS:X  a  [        U5      nUnOO[        R                  " U [        R                  5      (       a  [        S:  a  [        U5      nUnO[        U5      nUn[        U5      [        U5      4$ )Nr  r  )r*      )VALID_SEARCHSORTED_SIDESr  rw  ry  ru  rq  r  rf   r  inexactr   r   )np_dtypesidero  le_impl_cmps         r'    make_searchsorted_implementationr    s    ++++}}"+ v~b!==2::..=73J ""%ED!"%EDE"$4T$:::r&   c                   ^^ [        USU5      nU[        ;  a  [        SU 35      e[        U[        R
                  [        R                  45      (       a  [        UR                  5      nO[        U5      n[        R                  " [        U R                  5      U5      n[        XS5      u  mm[        U[        R
                  5      (       a  SUU4S jjnU$ [        U[        R                  5      (       a  SS jnU$ SU4S jjnU$ )Nr[   z Invalid value given for 'side': c                   > [         R                  " UR                  [         R                  S9nUR                  S   nSn[        U 5      n[        UR                  5       H^  nUR                  U   nT	" XH5      (       a  [        U 5      nO"SnU[        U 5      :  a  US-  nO[        U 5      nUnT
" XXV5      u  pVXSU'   M`     UR                  UR                  5      $ )Nr  r   r*   )	rf   r   r   r6   r   rH   r4   rX  r   )r.   rk   r  r   last_key_valr3  rL  r/   r|  r  r  s            r'   r^  searchsorted.<locals>.impl
  s    ((1661C66!9LG!fG166]&&)..!!fGGQ'1"%a&&#(W#F  A #  ;;qww''r&   c                 X    [         R                  " U5      n[         R                  " XUS9$ )Nr  )rf   r  searchsorted)r.   rk   r  s      r'   r^  r  "  s     

1A??1d33r&   c                 2   > T" XS[        U 5      5      u  p4U$ r   )rH   )r.   rk   r  rr@   r  s        r'   r^  r  &  s    q#a&)DAHr&   r  )r   r  r   rY   r   r   r  r	   r   rf   r  r  )	r.   rk   r  side_valv_dtnp_dtr^  r  r  s	          @@r'   r  r    s    t_d3H//  @
KLL!ekk5>>233 {Xagg.5E25CKE4!U[[!!	( 	(> K 
Au~~	&	&	4 K	 Kr&   c                    ^ [        U [        R                  5      (       a)  U R                  [        R                  ;   a  [        S5      e[        S 5       mSU4S jjnU$ )Nzx may not be complexc                    [        U 5      S:X  a  gU S   nSnU[        U 5      :  a&  X   U:X  a  US-  nU[        U 5      :  a
  X   U:X  a  M  U[        U 5      :X  a  gX   nX:  a-  [        US-   [        U 5      5       H  nUnX   nX:  d  M    g   g[        US-   [        U 5      5       H  nUnX   nX:  d  M    g   g)Nr   r*   rU  )rH   r4   )bins
last_valuer/   
next_values       r'   _monotonicity"np_digitize.<locals>._monotonicity2  s     t9> !W
#d)m: 5FA #d)m: 5 D	>W
"1q5#d),'
!W
*	 -
  1q5#d),'
!W
*	 -
 r&   c                 P  > T" U5      nUS:X  a  [        S5      eU(       aC  US:X  a(  [        U5      [        R                  " US S S2   U SS9-
  $ [        R                  " XSS9$ US:X  a(  [        U5      [        R                  " US S S2   U SS9-
  $ [        R                  " XSS9$ )Nr   z3bins must be monotonically increasing or decreasingrU  r  r  r  )r   rH   rf   r  )r  r  r  monor  s       r'   digitize_impl"np_digitize.<locals>.digitize_implW  s    T"19E 
 rz4y2??4":qv#NNNtV<<rz4y2??4":qw#OOOtW==r&   r  )rY   r   r   r   complex_domainr   r   )r  r  r  r  r  s       @r'   np_digitizer  ,  sS     !U[[!!agg1E1E&E011" "H>. r&   c                    ^ [        U[        [        R                  45      (       a3  US [        R                  4;   a  [        S5      mSU4S jjnU$ SS jn U$ SS jnU$ )Nr  c                    > TnT* n[         R                  " U 5       H#  nUR                  5       nX6:  a  UnXF:  d  M!  UnM%     [         R                  " XX445      $ r-   )rf   rg   rh   	histogram)r.   r  r4   bin_minbin_maxr   rk   r  s          r'   histogram_impl$np_histogram.<locals>.histogram_impl}  sV    $IIaLD		A{"#{"# ) ||Ag-?@@r&   c                    US::  a  [        S5      eUu  p4X4::  d  [        S5      e[        R                  " U[        R                  5      nXC:  a  XU-
  -  n[        R                  " U 5       Hl  nUR                  5       n[        R                  " X-
  U-  5      n	SU	s=::  a  U:  a  O  OU[        U	5      ==   S-  ss'   MV  X:X  d  M]  XQS-
  ==   S-  ss'   Mn     [        R                  " X4US-   5      n
XZ4$ )Nr   z0histogram(): `bins` should be a positive integerz;histogram(): max must be larger than min in range parameterr*   )
r   rf   r  r6   rg   rh   r  r  r  linspace)r.   r  r4   r  r  hist	bin_ratior   rk   r  
bins_arrays              r'   r  r    s    19$ &8 9 9#( )$ &> ? ? xxbgg.$ $'(9 :I "		! IIK JJy'@A=D= QLA-L\ Na/N !-  [[4!8D
''r&   c                    [        U5      S-
  n[        U5       H  nX   XS-      ::  a  M  [        S5      e   US   nX   n[        R                  " U[        R
                  5      nUS:  av  [        R                  " U 5       H\  nUR                  5       n	XYs=::  a  U::  d  O  M#  Sn
US-
  nX:  a!  X-   S-   S-	  nXU   :  a  US-
  nOUn
X:  a  M!  Xz==   S-  ss'   M^     Xq4$ )Nr*   z-histogram(): bins must increase monotonicallyr   )rH   _ranger   rf   r  r6   rg   rh   )r.   r  r4   nbinsr/   r  r  r  r   rk   lohir  s                r'   r  r    s    IMEE]w$1u+-$ &5 6 6 # 1gGkG88E277+DqyIIaLD		A"272 BB'  "w{q0Cy=!$qB!$B ' HMH! )$ :r&   r  N)rY   r  r   r@  r  r  )r.   r  r4   r  r  s       @r'   np_histogramr  t  sb    $emm,-- T5::&&,C	AN w(v C	B r&   )ibetar  machepepsnegepepsnegiexpminexpxminmaxexpxmaxirndngrdepsilontinyhuge	precision
resolutionMachAr)r  r  r  r  r$  r  r	  r  r  nexpnmantr  r  r  bitsry  )r	  r$  r  rt  c                    ^^ [         S:  a  g S m[        R                  " SS9 mSn [        R                  " SU [        SS9  [
        R                  mS S S 5        [        T5      UU4S j5       ng ! , (       d  f       N$= f)	N)r*      T)recordz(`np.MachAr` is deprecated \(NumPy 1.22\)alwaysz.*numba.*arraymath)messagecategoryr  c            	      (  >^ T" 5       n [        [         Vs/ s H  n[        X5      PM     sn5      mT(       aM  TS   n[        R                  " UR
                  R                  S   [        UR                  UR                  5        U4S jnU$ s  snf )Nr   c                     > [        T 6 $ r-   )r  )_mach_ar_datas   r'   r^  1_gen_np_machar.<locals>.MachAr_impl.<locals>.impl  s    =))r&   )
r`  _mach_ar_supportedr   warningswarn_explicitr  r<   r    filenamelineno)r  r  wmsgr^  r  	np_MachArws       @r'   MachAr_impl#_gen_np_machar.<locals>.MachAr_impl  sv    K6HI6Hwq}6HIJQ4D""4<<#4#4Q#7#:#'==#';;0
	* Js   B)r   r  catch_warningsfilterwarningsDeprecationWarningrf   r  r   )r   r  r  r  s     @@r'   _gen_np_macharr    sr    A		 	 	-9#);'<	> II	 
. i  
.	-s   .A00
A>c           	         ^^	 [        U SU 5      n[        U5      n U" U5      n[        U Vs/ s H  n[        Xg5      PM     sn5      m	[        UU	4S j5       nU$ ! [         a     g f = fs  snf )Nr   c                    > T" T6 $ r-   r%   )r  	containerrB   s    r'   r^  !generate_xinfo_body.<locals>.impl  s    $r&   )r   r	   r   r`  r   )
r  np_funcr  attrnbtyr  r  r  r^  rB   s
     `      @r'   generate_xinfo_bodyr    sw    3%D~HH .A'!-./D   K   /s   A A+
A('A(c                 \   ^ [        U [        R                  [        [        5      mU4S jnU$ )Nc                    > T" U 5      $ r-   r%   )r   r  s    r'   r^  ol_np_finfo.<locals>.impl  s    %yr&   )r  rf   ry  _finfo_supported)r   r^  r  s     @r'   ol_np_finfor    s"    	UBHHe5E	FBKr&   c                 \   ^ [        U [        R                  [        [        5      mU4S jnU$ )Nc                    > T" U 5      $ r-   r%   )int_typer  s    r'   r^  ol_np_iinfo.<locals>.impl  s    (|r&   )r  rf   rt  _iinfo_supported)r  r^  r  s     @r'   ol_np_iinfor    s"    	Xrxx8H	IBKr&   c                 "  ^ [         S 5       n[        (       d  U$ [        R                  [        R                  -  nX;   =(       a    X;   nU(       d  U$ [        U 5      n[        U5      n[        R                  " XV5      m[         U4S j5       nU$ )Nc                 X    Sn[        [        U 5      5       H  nX U   X   -  -   nM     U$ r   r4   rH   )r.   r  accr/   s       r'   
_innerprod#_get_inner_prod.<locals>._innerprod'  s0    s1vA!qt#C 
r&   c                 n   > [         R                  " U R                  T5      UR                  T5      5      $ r-   )rf   r  r  )r.   r  r  s     r'   	_dot_wrap"_get_inner_prod.<locals>._dot_wrap;  s$    66!((2,55r&   )r   
_HAVE_BLASr   real_domainr  r	   rf   r  )	dtadtbr  fltyfloatsa_dtb_dtr  r  s	           @r'   _get_inner_prodr  #  s       :u333D[(S[F}}d)		6 
	6r&   c                     [        U [        R                  5      (       a  U R                  S::  d  [	        SU-  5      eg g )Nr*   z!%s() only supported on 1D arrays )rY   r   r   r   r   )r.   rX  s     r'   
_assert_1dr  A  s9    !U[[!!vv{AIMNN  "r&   c                     g r-   r%   )ap1ap2mode	directions       r'   _np_correlate_corer  G  rf  r&   c                    ^^ [        U R                  5      n[        UR                  5      n[        R                  " XE5      m[	        U R                  UR                  5      mUU4S jnU$ )Nc                 n  > [        U 5      n[        U5      nXE:  a  [        S5      eUnUnUS:X  a  Xg-
  S-   nSnSn	O6US:X  a  US-
  n	US-
  nXg-   S-
  nOUS:X  a  US-  nXx-
  S-
  n	O[        S5      e[        R                  " UT5      n
US:X  a  SnSnOUS	:X  a  US-
  nS	nO[        S
5      e[	        U5       H  nX-   U-
  nT" U S U X* S  5      X'   X-   nM!     [	        XE-
  S-   5       H  nT" XX-    U5      X'   X-   nM     [	        U	5       H  nX}-
  S-
  nT" X* S  US U 5      X'   X-   nM!     U
$ )Nz''len(ap1)' must greater than 'len(ap2)'r  r*   r   r   samer   z1Invalid 'mode', valid are 'full', 'same', 'valid'rU  zInvalid direction)rH   r   rf   r  r4   )r  r  r  r  n1n2r  r  n_leftn_rightr  r   incr/   r  r  	innerprods                  r'   r^  %_np_correlate_core_impl.<locals>.implR  s    XX7 FGG7?Z!^FFGV^!eGUFZ!^FV^!VFj1nG4 
 hhvr">CC"_1*CC011vAA Ra#bc(3CH)C 
 rw{#A #6CH)C $ wA	A RS3r73CH)C  
 
r&   )r	   r   rf   r  r  )	r  r  r  r  r	  r
  r^  r  r  s	          @@r'   _np_correlate_core_implr  K  sP    CIIDCIID			$	%B		3995I>@ Kr&   c                 V  ^^ [        U S5        [        US5        [        S 5       n[        S 5       nU R                  [        R                  ;   a(  UR                  [        R                  ;   a  UmUmO,UmUmO'UR                  [        R                  ;   a  UmUmOUmUmSUU4S jjnU$ )Nznp.correlatec                 .    [         R                  " U 5      $ r-   )rf   r   r  s    r'   op_conj_np_correlate.<locals>.op_conj  s    wwqzr&   c                     U $ r-   r%   r  s    r'   op_nop_np_correlate.<locals>.op_nop  s    r&   c                    > [        U 5      n[        U5      nUS:X  a  [        S5      eUS:X  a  [        S5      eX4:  a  [        T" U5      T" U 5      US5      $ [        T" U 5      T" U5      US5      $ Nr   z'a' cannot be emptyz'v' cannot be emptyrU  r*   rH   r   r  )r.   rk   r  lalva_opb_ops        r'   r^  _np_correlate.<locals>.impl  sr    VV723372337%d1gtAwbAA%d1gtAwa@@r&   r  )r  r   r   r   r  )r.   rk   r  r!  r$  r^  r+  r,  s         @@r'   _np_correlater/    s    q.!q.!    	ww%&&&77e***DDDD77e***DDDDA A Kr&   c                 @    [        U S5        [        US5        SS jnU$ )Nznp.convolvec                     [        U 5      n[        U5      nUS:X  a  [        S5      eUS:X  a  [        S5      eX4:  a  [        XS S S2   US5      $ [        XS S S2   US5      $ r'  r(  )r.   rk   r  r)  r*  s        r'   r^  np_convolve.<locals>.impl  sm    VV723372337%a4R4$::%a4R4$::r&   r   )r  )r.   rk   r  r^  s       r'   np_convolver4    s"    q- q- ; Kr&   c                   ^^^ [        U 5      (       d  g [        U [        R                  5      (       a9  [	        U5      (       d  U R
                  UR
                  :X  a  S	S jnU$ S	S jn U$ [        U [        R                  [        R                  45      (       a  [	        U5      (       a  S	S jnU$ S	S jn U$ [        U [        R                  [        R                  45      (       a)  [	        U5      (       a  U OUn[        U5      mS	U4S jjnU$ [        U [        R                  R                  5      (       al  [        U R
                  [        R                  [        R                  45      (       d  [        S5      e[	        U5      (       a  U R
                  OUmS	U4S jjnU$ [        U [        R                  5      (       a*  [        R                   " U R"                  5      mS	U4S jjnU$ S nU$ )
Nc                     U $ r-   r%   r.   r   s     r'   r^  np_asarray.<locals>.impl  s    r&   c                 $    U R                  U5      $ r-   )r  r7  s     r'   r^  r8    s    xx&r&   c                 .    [         R                  " U 5      $ r-   rz  r7  s     r'   r^  r8    s    xx{"r&   c                 .    [         R                  " X5      $ r-   rz  r7  s     r'   r^  r8    s    xx))r&   c                 2   > [         R                  " U T5      $ r-   rz  )r.   r   r!  s     r'   r^  r8    s    88Ar?"r&   z?asarray support for List is limited to Boolean and Number typesc                 x   > [        U 5      n[        R                  " UTS9n[        U 5       H	  u  pEXSU'   M     U$ r  )rH   rf   r   r   )r.   r   r  r  r/   rk   target_dtypes         r'   r^  r8    s8    AA((1L1C!!A %Jr&   c                 $   > TR                  5       $ r-   )r  )r.   r   ri   s     r'   r^  r8    s    88:r&   r-   )r
   rY   r   r   r   r   r  r\   r  r  r	   
containersListTyper   StringLiteralrf   r  r[   )r.   r   r^  dt_convri   r>  r!  s       @@@r'   
np_asarrayrD    s   
 A!U[[!!uEKK!7V KQ'P KM 
A4	5	5 u#B K=*< K9 
Aemm4	5	5"5))!ug	#0 K- 
Au''00	1	1!''ELL%--#@AA./ / #.e"4"4qww%	 K 
Au**	+	+jj)	
 K Kr&   c                   ^ [        U[        R                  5      (       a  [        U5      n[        R
                  " U[        R                  5      (       d  [        R                  mOUm[        R                  4U4S jjnU$ )Nc                 2   > [         R                  " U T5      $ r-   r  )r.   r   r  s     r'   r^  np_asfarray.<locals>.impl  s    ::a$$r&   )rY   r   Typer	   rf   r  r  r   )r.   r   r^  r  s      @r'   np_asfarrayrI    sS     eUZZ((UOE}}UBJJ//BB** 	%r&   c                     S nU$ )Nc                 $   [         R                  " U 5      R                  5       n[         R                  " U5      nUR                  S:X  a  [	        S5      e[         R
                  " X#R                  S  5      (       a'  UR                  UR                  :  a  Sn[	        U5      e[        UR                  UR                  5      n[        U5       Vs/ s H  obU   (       d  M  UR                  U   PM     nn[         R                  " U5      $ s  snf )Nr   z"Cannot extract from an empty arrayz+condition shape inconsistent with arr shape)
rf   r  r  r   r   r  r	  r4   r   r{  )r  ri   r  r.   r   max_lenr   r   s           r'   np_extract_impl#np_extract.<locals>.np_extract_impl#  s    zz)$,,.JJsO66Q;ABB 66$vvw-  TYY%7?CS/! affdii(&+GnBnsS	{qvvc{nBxx} Cs   D"Dr%   )r  ri   rM  s      r'   
np_extractrO     s    ( r&   c                    SS jn[        U [        R                  [        R                  45      (       d  [	        S5      e[        U[        R                  [        R                  45      (       d  [	        S5      e[        U[
        [        R                  [        R                  45      (       d  [	        S5      e[        U S   [        R                  5      (       d  [	        S5      e[        US   [        R                  5      (       d  [	        S5      e[        U S   [        R                  5      (       a7  [        U S   R                  [        R                  5      (       d  [	        S5      e[        U S   [        R                  5      (       aR  [        U S   [        R                  5      (       a%  [        U S   S   [        R                  5      (       d  [	        S	5      e[        U S   [        R                  5      (       a+  U S   R                  US   R                  :w  a  [	        S
5      e[        U S   [        R                  5      (       a  U S   R                  S:  a  [	        S5      eU$ )Nr   c                 2   [        U 5      [        U5      :w  a  [        S5      eU[        R                  " US   R                  US   R
                  5      -  n[        [        U 5      S-
  SS5       H"  nX   nX   n[        R                  " XVU5      nM$     U$ )Nz7list of cases must be same length as list of conditionsr   r*   rU  )rH   r   rf   r+  r   r   r4   r2  )condlist
choicelistdefaultr   r/   r  choices          r'   np_select_arr_impl%np_select.<locals>.np_select_arr_impl=  s    x=C
O+ - . .
1 3 3Z]5H5HIIs8}q("b1A;D]F((4-C 2 
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 1rF  )rY   r   ListrI   r   r  r  r  r   r   r   )rR  rS  rT  rV  s       r'   	np_selectrY  :  s   
 hU^^ <==ABBj5::u~~">??CDDgU\\5==ABBKLL hqk5;;//?@@jmU[[11ABB (1+u{{++(1+++U]];; !HII(1+u~~..8A;77x{1~u}}== !MNN8A;,,QK
1 2 22 9 : 	:(1+u{{++0@0@10DNOOr&   c                 <   [        U 5      (       a  [        U5      (       d  [        S5      eSU R                  R                  ;   d  SUR                  R                  ;   a9  U R                  R                  UR                  R                  :w  a  [        S5      eS nU$ )Nz.The arguments to np.union1d must be array-likeunichrz/For Unicode arrays, arrays must have same dtypec                     [         R                  " [         R                  " U 5      5      n[         R                  " [         R                  " U5      5      n[         R                  " [         R                  " X#45      5      $ r-   )rf   rW  r  r  r2  )rN  rO  r.   r  s       r'   
union_implnp_union1d.<locals>.union_implu  sH    HHRZZ_%HHRZZ_%yy/00r&   )r
   r   r   r$  )rN  rO  r]  s      r'   
np_union1dr_  m  st    C  (8(=(=JKK	SYY^^	#x399>>'A
yy~~'KLL1
 r&   c                 2  ^ Sn[        U [        R                  [        R                  [        R                  45      (       d  [        U5      e[        U5      (       a  U R                  mO [        U5      mSU4S jjnU$ ! [         a    [        S5      ef = f)Nz7The argument to np.asarray_chkfinite must be array-likez!dtype must be a valid Numpy dtypec                    > [         R                  " U TS9n [         R                  " U 5       H)  n[         R                  " U5      (       a  M   [	        S5      e   U $ )Nr  z#array must not contain infs or NaNs)rf   r  rg   r  r   )r.   r   r/   r  s      r'   r^  "np_asarray_chkfinite.<locals>.impl  sE    JJq#1A;;q>> !FGG  r&   r-   )
rY   r   r   r  r\   r   r   r   r	   r   )r.   r   r   r^  r  s       @r'   np_asarray_chkfiniterc  }  s     DCa%++u~~u{{CDD#5WW	C%B K ( 	CABB	Cs   +B   Bc                 L  ^^^ [        U[        [        R                  45      (       d  Sn[	        U5      e[        U 5      (       d  Sn[	        U5      e[        U[        R                  [        R                  45      (       d(  [        R                  " U5      (       d  Sn[	        U5      e[        U[        [        R                  45      (       d  Sn[	        U5      e[        SS S 5      4m[        U[        R                  5      (       a4  [        R                  " [        U R                  5      [        U5      5      mO8[        R                  " [        U R                  5      [        R                   5      m[        R"                  " T[        R$                  5      mSUUU4S jjnU$ )Nz&The argument "axis" must be an integerz#The argument "p" must be array-likez'The argument "discont" must be a scalarz&The argument "period" must be a scalarr*   c                 :  > US:w  a  Sn[        U5      e[        R                  " U 5      R                  T5      nUR                  nUS   nUR                  UR                  U-  U45      nUc  US-  nT(       a  [        US5      u  pU
S:H  nOUS-  n	SnU	* n[        UR                  U-  5       GHM  nX   n[        R                  " U5      n[        R                  " X-
  U5      U-   nU(       a!  [        R                  " UU:H  US:  -  U	U5      nUU-
  n[        R                  " [        R                  " U Vs/ s H  n[        U5      PM     sn5      U:  SU5      n[        R                  " [        R                  " U Vs/ s H  n[        U5      PM     sn5      U:  SU5      n[        R
                  " UUR                  5      n[        R                  " U5      nUT   UR                  5       -   UT'   UX'   GMP     UR                  U5      $ s  snf s  snf )NrU  z*Value for argument "axis" is not supportedr   r   T)r   rf   r  r  r   rX  r   divmodr4   r  modr2  r{  rr  r  r   )pdiscontr^   periodr   p_init
init_shape	last_axisp_newinterval_highremboundary_ambiguousinterval_lowr/   rowddddmod
ph_correctr  ph_ravelupr   integer_inputslice1s                        r'   r^  numpy_unwrap.<locals>.impl  s   2:>CS/!A%%e,\\
rN	y 8)DE?qjG!'!2M!$"QJM!%%~ v{{i/0A(CBFF2,f5DE!%<"7BF!C!.7J"((B+?BqCFB+?"@7"JA",.Jxx")="Q#a&")= > H! *,HHj.>.>?JBVz'8'8'::BvJEH! 1$ }}Z(( ,@)=s   ;HHNrU  g-DT!@)rY   r  r   r@  r   r
   r   r   r   r  r  rQ   rf   r  r	   r   r   r  integer)	rh  ri  r^   rj  r   r^  r   ry  rz  s	         @@@r'   numpy_unwrapr~    s(   dS%--0116#A3#w <==''007#fuell3446#AtT"$F&%,,''x0(62BCx0"**=MM%4M') ')R Kr&   c                     [         R                  " SU -
  U S5      n[         R                  " [         R                  " US5      SXS-
  -  -   SXS-
  -  -
  5      $ )Nro  r   r   r*   )rf   r   r2  
less_equalr   r  s     r'   np_bartlett_implr    sJ    
		"q&!QA88BMM!Q'Qa%[!aq5k/JJr&   c                    [         R                  " SU -
  U S5      nSS[         R                  " [         R                  U-  U S-
  -  5      -  -   S[         R                  " S[         R                  -  U-  U S-
  -  5      -  -   $ )Nro  r   gzG?r   r*   g{Gz?r  rf   r   cosr  r  s     r'   np_blackman_implr    so    
		"q&!QA3	QU 3444266#+/QU3445 6r&   c                     [         R                  " SU -
  U S5      nSS[         R                  " [         R                  U-  U S-
  -  5      -  -   $ )Nr*   r   gHzG?gq=
ףp?r  r  s     r'   np_hamming_implr    sB    
		!a%AA$	QU 34444r&   c                     [         R                  " SU -
  U S5      nSS[         R                  " [         R                  U-  U S-
  -  5      -  -   $ )Nr*   r   r   r  r  s     r'   np_hanning_implr    sB    
		!a%AArvvbeeai1q512222r&   c                    ^  U 4S jnU$ )Nc                 h   > [        U [        R                  5      (       d  [        S5      eU4S jnU$ )NM must be an integerc                    > U S:  a#  [         R                  " S[         R                  S9$ U S:X  a#  [         R                  " S[         R                  S9$ T" U 5      $ )Nr*   r%   r  )rf   r{  r   r+  )r   funcs    r'   window_impl>window_generator.<locals>.window_overload.<locals>.window_impl  sD    1uxx"**55Avwwq

337Nr&   )rY   r   r@  r   )r   r  r  s     r'   window_overload)window_generator.<locals>.window_overload  s-    !U]]++455	 r&   r%   )r  r  s   ` r'   window_generatorr    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                 x    US   nSn[        S[        U5      5       H  nUnUnX-  U-
  X   -   nM     SUW-
  -  $ )Nr   r  r*   r   r  )r  valsb0b1r/   b2s         r'   _chbevlr  S  sQ    	aB	B1c$i Vb[47" !
 "r'?r&   c                    U S:  a  U * n U S::  a/  SU -  S-
  n[         R                  " U 5      [        U[        5      -  $ [         R                  " U 5      [        SU -  S-
  [        5      -  [         R
                  " U 5      -  $ )Nr   g       @r   r  g      @@)rf   expr  _i0A_i0BrO  r}  s     r'   _i0r  `  sm    1uBCx1WOvvay71d+++66!9wtax#~t44rwwqzAAr&   c           	      *   [         R                  " U [         R                  S9n[        [         R                  " U5      5      n[	        [        U5      5       H8  n[        U[         R                  " SX   U-
  U-  S-  -
  5      -  5      U-  X5'   M:     U$ )Nr  r*   r  )rf   r  r   r  r4   rH   rO  )r  alphabetar  tr/   s         r'   _i0nr  k  sv    
arzz*ABJJtA3q6]4"''!u'=&C"CDDEI  Hr&   c                     [        U [        R                  5      (       d  [        S5      e[        U[        R                  [        R                  45      (       d  [        S5      eS nU$ )Nr  z beta must be an integer or floatc                     U S:  a#  [         R                  " S[         R                  S9$ U S:X  a#  [         R                  " S[         R                  S9$ [         R                  " SU 5      nU S-
  S-  n[        X#U5      $ )Nr*   r%   r  r   r  )rf   r{  r   r+  r   r  )r   r  r  r  s       r'   np_kaiser_impl!np_kaiser.<locals>.np_kaiser_impl}  sc    q588Bbjj116771BJJ//IIaOQ#Ad##r&   )rY   r   r@  r   r   )r   r  r  s      r'   	np_kaiserr  u  sR    a''011dU]]EKK899<==	$ r&   c                 \   S nU" U 5      u  pEnU" U5      u  pxn	[         R                  " XY5      [         R                  " Xh5      -
  n
[         R                  " Xg5      [         R                  " XI5      -
  n[         R                  " XH5      [         R                  " XW5      -
  nXS'   XS'   XS'   g )Nc                     U S   nU S   nU R                   S   S:X  a  U S   nO0[        R                  " U R                  R	                  S5      U5      nXU4$ )N.r   .r*   rU  r   .r   r   )r   rf   r  r   r   )r  x0r  x2s       r'   _cross_preprocessing._cross_operation.<locals>._cross_preprocessing  sS    vYvY772;!6BQWW\\!_b1Brzr&   r  r  r  )rf   r  )r.   r  r   r  a0rF  r<  r  r  r  cp0cp1cp2s                r'   _cross_operationr    s     &a(JBB%a(JBB
++b
B 3
3C
++b
B 3
3C
++b
B 3
3CKKKr&   c                     g r-   r%   r  s     r'   _crossr    rf  r&   c                    ^ [         R                  " [        U R                  5      [        UR                  5      5      mU R                  S:X  a  UR                  S:X  a  U4S jnU$ U4S jnU$ )Nr*   c                 N   > [         R                  " ST5      n[        XU5        U$ )Nr   )rf   r   r  )r.   r  cpr   s      r'   r^  _cross_impl.<locals>.impl  s"    $&BQ2&Ir&   c                    > [         R                  " U S   US   5      R                  n[         R                  " US-   T5      n[	        XU5        U$ )Nr  r  )rf   r  r   r   r  )r.   r  r   r  r   s       r'   r^  r    sD    FF1V9ai066E%$,.BQ2&Ir&   )rf   r  r	   r   r   )r.   r  r^  r   s      @r'   _cross_implr    sT    Xagg.0ABEvv{qvv{	 K	
 Kr&   c                 b    [        U 5      (       a  [        U5      (       d  [        S5      eS nU$ )NInputs must be array-like.c                 4   [         R                  " U 5      n[         R                  " U5      nUR                  S   S;  d  UR                  S   S;  a  [        S5      eUR                  S   S:X  d  UR                  S   S:X  a  [	        X#5      $ [        S5      e)NrU  r  zDIncompatible dimensions for cross product
(dimension must be 2 or 3)r   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`.)rf   r  r   r   r  r.   r  r  r  s       r'   r^  np_cross.<locals>.impl  s    ZZ]ZZ]88B<v%"V)C- 
 88B<1 1">!H r&   r
   r   r.   r  r^  s      r'   np_crossr    s0    A&6q&9&9677" Kr&   c                     S nU" U 5      u  p4U" U5      u  pV[         R                  " X65      [         R                  " XE5      -
  n[         R                  " U5      $ )Nc                     U S   nU S   nX4$ )Nr  r  r%   )r  r  r  s      r'   r  0_cross2d_operation.<locals>._cross_preprocessing  s    vYvYvr&   )rf   r  r  )r.   r  r  r  rF  r  r  r  s           r'   _cross2d_operationr    sM    
 "!$FB!!$FB	R	r{{22	2B ::b>r&   c                     g r-   r%   r  s     r'   cross2dr    rf  r&   c                 b    [        U 5      (       a  [        U5      (       d  [        S5      eS nU$ )Nr  c                     [         R                  " U 5      n[         R                  " U5      nUR                  S   S:w  d  UR                  S   S:w  a  [        S5      e[	        X#5      $ )NrU  r   zRIncompatible dimensions for 2D cross product
(dimension must be 2 for both inputs))rf   r  r   r   r  r  s       r'   r^  cross2d_impl.<locals>.impl  sZ    ZZ]ZZ]88B<1 18  ""))r&   r  r  s      r'   cross2d_implr    s0    A&6q&9&9677* Kr&   c                   ^ [        U [        R                  5      (       d  [        S5      eU R                  S:  a  [        S5      e[        U[
        [        R                  45      (       d  [        S5      e[        S:  mSU4S jjnU$ )Nz#The first argument must be an arrayr*   zarray must be 1Dz$The second argument must be a string)r   r   c                 "  > [         R                  " U 5      nSnUR                  5       nSU;   a#  U H  nUS:X  d  T(       a  US:X  a  US-   nM    O   [        U 5      nSU;   a)  US S S2    H  nUS:X  d  T(       a  US:X  a  US-
  nM    O   X#U $ )Nr   r   r*   r  rU  )rf   r  r  rH   )filttrimr  firstr/   lasttrim_escapess         r'   r^  np_trim_zeros.<locals>.impl  s    ZZzz|$;6lqBw!AIE	 
 4y$;"X6lqBw!8D	 
 ~r&   fb)rY   r   r   r   r   strUnicodeTyper   )r  r  r^  r  s      @r'   np_trim_zerosr    sq    dEKK((BCCyy1}/00dS%"3"3455CDD F*L& Kr&   c                     [        U 5      (       d  [        U5      (       d  [        S5      e[        U[        R                  [
        45      (       d  [        S5      eSS jnU$ )Nz+setxor1d: first two args must be array-likez2setxor1d: Argument "assume_unique" must be booleanc                     [         R                  " U 5      n[         R                  " U5      nU(       d-  [         R                  " U5      n[         R                  " U5      nO UR                  5       nUR                  5       n[         R                  " X445      nUR                  5         [         R                  " UR                  S   S-   [         R                  S9nSUS'   SUS'   USS  US S :g  USS& XVSS  US S -     $ )Nr   r*   r  TrU  )	rf   r  r  rW  r2  rM  r   r   r   )rN  rO  rP  r.   r  rQ  flags          r'   np_setxor1d_impl)jit_np_setxor1d.<locals>.np_setxor1d_impl&  s    JJsOJJsO		!A		!A	A	A nnaV$
xx		!q(9QRWCR(Qr
8d3Bi'((r&   r  rU  )rN  rO  rP  r  s       r'   jit_np_setxor1dr    sS    S!!%5c%:%:GHH}u}}d&;<<NOO), r&   c                     [        U 5      (       d  [        U5      (       d  [        S5      e[        U[        R                  [
        45      (       d  [        S5      eSS jnU$ )Nz,setdiff1d: first two args must be array-likez3setdiff1d: Argument "assume_unique" must be booleanc                 4   [         R                  " U 5      n [         R                  " U5      nU(       a!  U R                  5       n UR                  5       nO,[         R                  " U 5      n [         R                  " U5      nU [         R                  " XSSS9   $ )NTrP  invert)rf   r  rW  r  in1d)rN  rO  rP  s      r'   np_setdiff1d_impl+jit_np_setdiff1d.<locals>.np_setdiff1d_implG  sg    jjojjo))+C))+C))C.C))C.C27734EFFr&   r  rU  )rN  rO  rP  r  s       r'   jit_np_setdiff1dr  ?  sT    S!!%5c%:%:HII}u}}d&;<<OPP	G r&   c                 &   [        U 5      (       d  [        U5      (       d  [        S5      e[        U[        R                  [
        45      (       d  [        S5      e[        U[        R                  [
        45      (       d  [        S5      eSS jnU$ )Nz'in1d: first two args must be array-likez.in1d: Argument "assume_unique" must be booleanz'in1d: Argument "invert" must be booleanc                    [         R                  " U 5      R                  5       n [         R                  " U5      R                  5       n[        U5      S[        U 5      S-  -  :  a  U(       a>  [         R                  " [        U 5      [         R
                  S9nU H
  nX@U:g  -  nM     U$ [         R                  " [        U 5      [         R
                  S9nU H
  nX@U:H  -  nM     U$ U(       d  [         R                  " U 5      nX   n[         R                  " UR                  [         R
                  S9nSUS S& USS  US S :g  USS & Xt   n [         R                  " U5      S-
  n[         R                  " UR                  [         R                  S9n	XU'   [         R                  " U5      n[         R                  " X45      n
U
R                  SS9nX   n[         R                  " UR                  [         R
                  5      nU(       a  USS  US S :g  US S& OUSS  US S :H  US S& X=SS & [         R                  " U
R                  [         R
                  S9nXU'   U(       a  US [        U 5       $ UW	   $ )	Nr  g(\?r  Tr*   rU  	mergesort)kind)rf   r  rW  rH   r+  r   r  argsortr   r   r   r6   r  r2  r   )rN  rO  rP  r  r5  r.   order1rQ  imaskinv_idxarordersarr  r  s                  r'   np_in1d_impl!jit_np_in1d.<locals>.np_in1d_impl^  s    jjo##%jjo##%
 s8b3s8u,,,wws3xrxx8AAX&D  K xxC9AAX&D K  ZZ_F+C88CIIRXX6DD!H12w#cr(*DH)CIIdOa'Ehhtzz9G#FO))C.C^^SJ' 


,ixx"((+QRCH,D"IQRCH,D"IRS	hhrxxrxx0E
 yC>!w<r&   FFrU  )rN  rO  rP  r  r  s        r'   jit_np_in1dr  U  sv    S!!%5c%:%:CDDmemmT%:;;JKKfu}}d344CDD7 r r&   c                 &   [        U 5      (       d  [        U5      (       d  [        S5      e[        U[        R                  [
        45      (       d  [        S5      e[        U[        R                  [
        45      (       d  [        S5      eSS jnU$ )Nz'isin: first two args must be array-likez.isin: Argument "assume_unique" must be booleanz'isin: Argument "invert" must be booleanc                     [         R                  " U 5      n [         R                  " XUUS9R                  U R                  5      $ )Nr  )rf   r  r  rX  r   )r  test_elementsrP  r  s       r'   np_isin_impl!jit_np_isin.<locals>.np_isin_impl  s6    **W%www]$&&-ggmm&<	=r&   r  rU  )r  r   rP  r  r  s        r'   jit_np_isinr    su    W%%)9-)H)HCDD}u}}d&;<<JKKvt455CDD= r&   r-   r  r  r  r   rF  rP  r  r  rE  rW  r  r  r  r.  r3  r|  r  r  (  __doc__r  collectionsr   rj  r  llvmlite.irr  numpyrf   
numba.corer   r   numba.core.extendingr   r   r   numba.np.numpy_supportr	   r
   r   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(   r  rM   rb   r  r   rz   r}   r   r6   	DTypeSpecIntegerLiteralr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r	  aminr"  r$  amaxr-  r4  r9  r>  r?  rH  rM  rP  rR  rG  ra  rf  rg  rm  rz  r{  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%  r1  r.  r7  r4  nanstdr:  nansumrA  nanprodrG  
nancumprodrP  	nancumsumrW  r[  rb  re  rh  rl  rp  rs  r}  r  r  r  r  r  _partition_w_nan_argpartition_w_nanr  r  r  r  r  r  medianr  r  r  r  r  r  r  r  r  r  nanpercentiler  quantiler  nanquantiler  	nanmedianr  r  r  r	  	partitionr  r  r  r"  r0  r'  r*  r6  trilrG  rW  rR  tril_indices_fromr]  ra  triuri  rq  rn  triu_indices_fromrt  rw  r  r  ediff1dr  r  r  r  r  trapzr  	trapezoidr  r  vanderr  rollr  r  r  r  r  interpr  r   r  r
  r  r  rG  r  r%  r'  rF  r,  r6  r:  r<  rM  rJ  corrcoefrY  argwhererb  flatnonzerorg  rk  rm  rq  rw  r{  r  rY  r  fill_diagonalr  r  r  r  aroundr  r  round_r  r  r  r  rL  r  r  r  r  r  r2  r  r  r   r  r  r  containsr  count_nonzeror&  r7  r8  deleter9  r  rC  array_equalrJ  intersect1drV  rZ  r\  rl  rt  rs  rn  rq  ru  rw  ry  r  r   r  r  r  digitizer  r4   r  r  r  r  r  r  ry  r  rt  r  r  r  r  r  r  r  r  	correlater/  convolver4  r  rD  asfarrayr   rI  extractrO  selectrY  union1dr_  asarray_chkfiniterc  unwrapr~  r  r  r  r  r  bartlettblackmanhamminghanningr{  r  r  r  r  r  kaiserr  r  r  r  crossr  r  r  r  
trim_zerosr  setxor1dr  	setdiff1dr  r  r  isinr  r%   r&   r'   <module>rO     s  
  "     % L LM M MG G/ / ' *H H 5 ]
 %! %!P E! E!V rvvu{{#{EKK(E ) $E  >B rvvu{{EJJ@rvvu{{E$8$8%//J{EKKU__E{EKK)=)=uO$D P F K A$DN rvvu{{U__5{EKK9E : 6E rvvu{{EJJ/rvvu{{E$8$89{EKK4{EKK)=)=>%D ? 5 : 0%DP 
"''f% &  
"))h'! ( !. 
"**i(" ) ". 
"''f% & * 
"&&e$ %   
"&&e$ %        
"&&	"''e$, %  ,^ 
"&&	"''e$, %  ,^  *  *  & 
"))h' ( $  *  *  ")X 
"))h' ( $ 
"&&e$ %   2 
"++j)?, * ?,D 
"&&e$ %  
"** >
 
",,  
"))  
"// & 
",,  
"++ 
 
"++& &
 
"++& &
     P P
D 	E: u= "	D9 "t<
 2 2 
"**5 5p 
"))  
"))  
"** & 
")) 0 
"))  
")) * 
"** * 
"-- 0 
",, 0  (		 
.H H 
.H H	 
- . 
"&& 6 6EKK'/  .b 0;<
#$67J$KL &'9(  " ?:6
7 1A!BC$_5H%IJ     0 3 3 
")) " 1 1h       F F
 B B
  ""4 
"--  
"

  
"++  
"..  
",, 0  (  *  D 
",, : 
"//   @ 	 	 
"&&
 
    > >
 
"''" "4 
"//
  
  
"


%  
% > >
 
"''" "2 
"//
  
  
"


%  
%	 
.1 1 " 
"**4 4n	 
/ 	 
&  
"(( , FR\\8$ < <6 @ @ 
"))$" $"N 
"'' 2   A AH j jZ U Up 
"))% %V 	 	  0	 

"#$$ $$$N     %[1 ** 8 8 $K0  9 94 3 3   
"&&7 7t 
"++   H 
"++ 0 
".. "  *     D D D D n-
	 
(1 1 
"

 @,
  " ) )4 
"))	"((4  4n 6RYY& 
"''M M& 
"((< <@ rzz5;;',5D - (5Dp    . 
"((    
"((2 2j 
"''  
"''  
(


 
 
"

   -\: ,-EF  
"))+% +%\ 
"''# #L 
".. * 
"..   :1 
"++6 6r #9-$Z0  ! !B     	 	 + +$ %fg%67 ;8 
"//0 0f 
"++A AH 
 
",,O Oh%  
H0	13 
 	7,- + 7,-
<    
"((  
"(( <O	 

F FR 
",,) )X 
"++ * 
"**4 4n 6bkkZZ   
"** 2 
"))/ /d 
"**  
"

  0 
"))C C\ K K
 6 6 5 5
 3 3
" 	 &'78 9  &'78 9  %o6 7  %o6 7 
xx  B 
xx  : 	 	 B B   
")) *  .	 
&   
"(( 0  &	 
' " 
"-- D 
"++ @ 
",, * 
"''A AH 
"'' r&   