
    GJj:j             	       &   d Z ddlZddlmZ ddlZddlZddlZddlm	Z	m
Z
 ddlZddlmZmZ ddlmZmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZm Z m!Z! dd	l"m#Z#m$Z$m%Z%m&Z& dd
l'm(Z( ddlm)Z) ddl*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0 ddl1m2Z2 ddl3mZ4 d Z5 e5       Z6e)d        Z7e)d        Z8 eejr                  ejt                         edejt                        d               Z;ed        Z<d Z= eejr                  ejt                  ej|                  ej~                         eejr                  ejt                  ej                  ej~                         edejt                  ej|                  ej~                         edejt                  ej                  ej~                        d                             ZA eejr                  ejt                  ej~                         edejt                  ej~                        d               ZB eejr                  ejt                  ej|                         eejr                  ejt                  ej                         edejt                  ej|                         edejt                  ej                        d                             ZCd ZD eej                         eejt                  d      d               ZF eej                         eejt                  d      d               ZH eej                         eejt                  d      d               ZJ eej                         eejt                  d       d!               ZL eej                         eejt                  d"      d#               ZN eej                         eejt                  d$      d%               ZPed&        ZQed'        ZRed(        ZS eej                         eej                         eejt                  d)      d*                      ZV eej                         eej                         eejt                  d+      d,                      ZYed-        ZZed.        Z[ed/        Z\ eej                         eejt                  d0      dd1              Z^ed2        Z_ed3        Z`ed4        Zad5 Zb eej                         eejt                  d6      dd7              Zd eej                         eejt                  d8      d9               Zfedd;       Zg eej                         eejt                  d<      dd=              Zi eej                         eejt                  d>      d?               Zk eej                        dd@       ZmdA Zn eej                        dB        Zp eej                        dC        Zr eej                        dD        Zs eej                        dE        Zt eej                        dF        ZvdG Zw eej                        ddH       Zx eej                        ddI       ZyedJ        ZzedK        Z{edL        Z|dM Z} e e}ezd:N            Z~ e e}e{d:N            Z e e}ezdON            Z e e}e{dON            ZedP        Z eej                        ddQ       Z eej                        dR        Z eej                        dS        Z eej                        dT        Z eej                        dU        Z eej                        dV        Z eej                        dW        Z eej                         dX        Z eej$                        dY        Z eej(                        dZ        Zed[        Zd\ Zd] Zd^ Z ee      d_        Z ee      d`        Zda Z ee      db        Z eej<                        dc        Zeddk  r  eejt                  de      e       edf        ZddgZ e eez            Z e ee            Z e eedOh            Zdi Z e ee            Z e ee            Z e ee            Zedj        Zedk        Z eejV                        dl        Zedm        Zedn        Zedo        Zedp        Zedq        Zedr        Zds Z eejh                        dt        Z eejl                        du        Z eejp                        dv        Z eejt                        dw        Z eejx                        dx        Zedy        Zedz        Zed{        Z eej                        d|        Z eej                        d}        Zed~        Z eej                        dd       Zed        Zedd       Z eej                        dd       Z eej                        dd       Z eej                        dd       Zedd       Z eej                        dd       Z eej                        dd       Z eej                        dd       Zd Z ee׫      d        Zd Z eej                        dd       Zd Z eeܫ      d        Zd Z eeޫ      d        ZߐddZedk  r eej                        dd       Zeddk\  r eej                        dd       Zed        Zed        Z eej                        dd       Z eej                        d        ZdZed        Zed        Zed        Z eej                        d        Zed        Zed        Zd Z ee      d        Zed        Z ed       Zd Zd Zed        Z ed       Zed        Zd Zed        Zed        Z eej                        dd       Z  eej                        dd       Z eej                        d        Z eej
                        d        Zed        Zed        Zed        Z	ed        Z
ed        Z ed       Zd Z ee      d        Z eej                        dd       Zd Ze)d        Zed        Z eej(                         eej*                        dd              Zeddk  r  eej.                        e        eej0                        d        Z eej4                        dd       Z eej8                  ejt                         edejt                        d               Zd Zed        ZedÄ        Z dĄ Z! eejD                        dń        Z# eejD                        dƄ        Z$ eejJ                        dǄ        Z& eejN                        dȄ        Z( eejR                        dɄ        Z* eejV                        ddʄ       Z, ed˄       Z- ed̄       Z. eej^                        d̈́        Z0 eejb                        dd΄       Z2 eejf                        dτ        Z4 eejj                        ddЄ       Z6dф Z7 eejp                        dd҄       Z9 ee      Z: ee      Z;edӄ        Z<edԄ        Z=edՄ        Z>edք        Z?edׄ        Z@d؄ ZA eBddh      ZCdۄ ZD eej                        dd܄       ZE eej                        dd݄       ZGeHZI eej                        ddބ       ZKdߐZL edeL      ZMdZN edeN      ZOdZP edeP      ZQd ZR eR        d ZS eej                        d        ZT eej                        d        ZUd ZVd ZWd ZX eeX      d        ZY eej                        dd       Z[ eej                        dd       Z] eej                        dd       Z_eddk  r' eej                        ej                  fd       Zb eej                        d        Zd eej                        dd       Zf eej                        d        Zh eej                        dd       Zj eej                        dd       Zled        Zmed        Zned        Zoed        Zpd Zq  eej                         eqem               eej                         eqen               eej                         eqeo               eej                         eqep              ej                  g d      Zw ej                  g d      Zxed        Zyed        Zzed        Z{ eej                        d         Z}ed        Z~d Z ee      d        Z eej                        d        Zed        Zd Z ee      d        Z eej                        dd       Z eej                        dd	       Zed d
       Z eej                        dd       Zd dZedk  r  eej                        e        eej                        d d       Zy(!  z5
Implementation of math operations on Array objects.
    N)
namedtuple)
NPDatetimeNPTimedelta)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_setitem)r   c                  8    	 t                y# t        $ r Y yw xY wNFT)r   ImportError     \/Users/ahmed/devFolder/claude-voice/.venv/lib/python3.12/site-packages/numba/np/arraymath.py_check_blasr*   "   s%       s   
 	c                     t        |      dz
  t        j                  t        j                         |      }fd}||fS )a  
    This routine converts shape list where the axis dimension has already
    been popped to a tuple for indexing of the same size.  The original shape
    tuple is also required because it contains a length field at compile time
    whereas the shape list does not.
       c           	      Z   | j                        }t        j                  |      }|\  }}d }t              D ]m  }	| j	                  t
        j                  |	      }
| j                  ||t        j                  t
        j                        ||
g      }|j                  |||	      }o |S )Nc                     | |   S Nr'   )ais     r)   array_indexerzB_create_tuple_result_shape.<locals>.codegen.<locals>.array_indexerG   s    Q4Kr(   )	get_value_typer   get_null_valuerangeget_constantr   intpcompile_internalinsert_value)cgctxbuilder	signatureargslltuptytupin_shape_r2   r1   dataidxdatand
shape_listtuptys               r)   codegenz+_create_tuple_result_shape.<locals>.codegen?   s    &&u-$$W- 1	 rA((Q7G))'=*/**Z*L+3W*=?D &&sD!4C  
r(   )lenr   UniTupler7   )tyctxrE   shape_tuplefunction_sigrG   rD   rF   s    `   @@r)   _create_tuple_result_shaperM   .   sF     
[	A	BNN5::r*E[1L*   r(   c                 ~  	
 t        |t        j                        st        d      |j                  	t        |      
	
k\  rd		}
|z
  dz
  }g }|t        j                  g|z  z  }|t        j                  gz  }|t        j                  g|z  z  }t        j                  |       |||      }	
fd}||fS )aH  
    Generates a tuple that can be used to index a specific slice from an
    array for sum with axis.  shape_tuple is the size of the dimensions of
    the input array.  'value' is the value to put in the indexing tuple
    in the axis dimension and 'axis' is that dimension.  For this to work,
    axis has to be a const.
    z axis argument must be a constantr   r,   c                 n   | j                        }t        j                  |      }|\  }}}d }| j                  ||t	        j
                         g       }	t        d      D ]  }
|j                  ||	|
      } |j                  ||      }t        dz         D ]  }
|j                  ||	|
      } |S )Nc                      t        d d       S r/   )slicer'   r(   r)   create_full_slicez<_gen_index_tuple.<locals>.codegen.<locals>.create_full_slice   s    t$$r(   r   r,   )r3   r   r4   r8   r   slice2_typer5   r9   )r:   r;   r<   r=   r>   r?   rA   	value_argrR   
slice_datar1   
axis_valuerD   rF   s              r)   rG   z!_gen_index_tuple.<locals>.codegen~   s    &&u-$$W- !Iq	% ++G5F,1,=,=,?,.0
 q*%A&&sJ:C & ""3	:> zA~r*A&&sJ:C +
r(   )	
isinstancer   Literalr   literal_valuerH   rS   r7   Tuple)rJ   rK   valueaxisbeforeafter
types_listrL   rG   rV   rD   rF   s            @@@r)   _gen_index_tupler`   W   s     dEMM*!"DEE##J	[	B R
 FK!OEJ5$$%..J5::,J5$$%--J KK
#EeT2L>   r(   z	array.sumc           	          |j                  d      fd}| j                  ||||t        |j                               }t        | ||j                   |      S )Nr   c                 f    }t        j                  |       D ]  }||j                         z  } |S r/   npnditeritem)arrcvzeros      r)   array_sum_implz!array_sum.<locals>.array_sum_impl   .    3AMA  r(   rh   localsreturn_typer8   dictr   contextr;   sigr=   rk   resrj   s         @r)   	array_sumrw      Y     ??1D 
"
"7NC*.*A # CCWgsDDr(   c                     | S r/   r'   )rg   ri   s     r)   _array_sum_axis_noprz      s    Jr(   c                       fd}|S )Nc                    | j                   }s|dk  s|dkD  rt        d      ||k\  rt        d      t        | j                        }||   }|j	                  |       t        || j                        }t        j                  |t                    }t        |      D ]  }r t        | j                  |      }|| |   z  }%|dk(  r t        | j                  |d      }	|| |	   z  }J|dk(  r t        | j                  |d      }
|| |
   z  }o|dk(  r t        | j                  |d      }|| |   z  }|dk(  st        | j                  |d      }|| |   z  }  |d      S )a(  
        function that performs sums over one specific axis

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

        typing/arraydecl.py:sum_expand defines the return type for sum with
        axis. It is one dimension less than the input array.
        r      zHNumba does not support sum with axis parameter outside the range 0 to 3.zaxis is out of bounds for arrayr,      )ndim
ValueErrorlistshapepoprM   rd   fulltyper5   r`   )rg   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oprj   s                r)   innerz gen_sum_axis_impl.<locals>.inner   s~    xxax4!8  "G H H
 4<>?? cii$<

48K,dDJ?  /J&6syy*7E'G##122
 19#3CIIz1#MLc,//FQY#3CIIz1#MLc,//FQY#3CIIz1#MLc,//FQY#3CIIz1#MLc,//F+ *, &!}r(   r'   )r   r   r   rj   r   s   ```` r)   gen_sum_axis_implr      s    <z Lr(   c                    |j                   } t        |d|      d      }t        |dd       t        j                  }nt        }|j
                  \  }}}	d}
d}t        |t        j                        r|j                  }|dk  r|j                  |z   }|dk  s||j                  kD  rt        d      | j                  j                  |      }| j                  ||      }|d   ||d   f}|j                  |||	g      }d}
t!        |
|||      }t#        |      fd	}| j%                  ||||      }t'        | ||j                   |      S )
Ndtyper   r   Fz'axis' entry is out of boundsr~   r=   Tc                      | |      S r/   r'   )rg   r\   r   compileds      r)   array_sum_impl_axisz1array_sum_axis_dtype.<locals>.array_sum_impl_axis      T""r(   )rq   getattrrd   takerz   r=   rW   r   rX   rY   r   r   typing_contextresolve_value_typer6   replacer   r
   r8   r   )rt   r;   ru   r=   rettyrj   r   ty_arrayty_axisty_dtyper   r   axis_valgen_implr   rv   r   s                   @r)   array_sum_axis_dtyper      sO   
 OOE)75'5)!,D ufd#+WW $'HH!XwMN'5==) ..A%]]^;NA(--!?<==((;;NK''@Aw$q')kk'8<k= DIH)H# 
"
"7,?d
KCGWcoosCCr(   c           	          |j                  d      fd}| j                  ||||t        |j                               }t        | ||j                   |      S )Nr   c                 f    }t        j                  |       D ]  }||j                         z  } |S r/   rc   )rg   r   rh   ri   rj   s       r)   rk   z'array_sum_dtype.<locals>.array_sum_impl)  rl   r(   rm   rn   rp   rs   s         @r)   array_sum_dtyper   $  rx   r(   c                    |j                   } t        |d|      d      }t        |dd       t        j                  }nt        }|j
                  \  }}d}	d}
t        |t        j                        r|j                  }
|
dk  r|j                  |
z   }
|
dk  s|
|j                  kD  rd|
 d}t        |      | j                  j                  |
      }| j                  ||
      }|d   |f}|j                  ||g      }d}	t!        |	|
||      }t#        |      fd	}| j%                  ||||      }t'        | ||j                   |      S )
Nr   r   r   Fz'axis' entry (z) is out of boundsr   Tc                      | |      S r/   r'   )rg   r\   r   s     r)   r   z+array_sum_axis.<locals>.array_sum_impl_axisY  r   r(   )rq   r   rd   r   rz   r=   rW   r   rX   rY   r   r   r   r   r6   r   r   r
   r8   r   )rt   r;   ru   r=   r   rj   r   r   r   r   r   msgr   r   r   rv   r   s                   @r)   array_sum_axisr   4  sT   
 OOE)75'5)!,D ufd#+WW ((XwMN'5==) ..A%]]^;NA(--!?">"22DEC!#&&((;;NK''@Aw kk'2k3 DIH)H# 
"
"7,?d
KCGWcoosCCr(   c                     | j                   t        j                  k(  r&t        j                  |      j	                  |       }|S | j                  |      }|S r/   )r   rd   timedelta64int64view)r   r[   acc_inits      r)   get_accumulatorr   `  sF    zzR^^#88E?''. O ::e$Or(   prodc                     t        | t        j                        r(t        | j                        }t        |d      fd}|S t        | t        j                  t        j                  f      r!t        |       j                  d      fd}|S y )Nr,   c                 f    }t        j                  |       D ]  }||j                         z  } |S r/   rc   r0   rh   ri   r   s      r)   array_prod_implz#array_prod.<locals>.array_prod_implp  s.    AYYq\QVVX "Hr(   c                     | z  S r/   r'   )r0   r   s    r)   scalar_prod_implz$array_prod.<locals>.scalar_prod_implz  s    a<r(   )	rW   r   Arrayr   r   r   NumberBooleanr   )r0   r   r   r   r   s       @r)   
array_prodr   h  sw     !U[[!!"5!,	 	Aemm4	5A;##A&	    
6r(   cumsumc                    t        | t        j                        r| j                  t        j                  v }| j                  t        j
                  k(  }|r1| j                  j                  t        j                  j                  k  s|rt        t        j                        nt        | j                        t        d      fd}|S y )Nr   c                     t        j                  | j                        }}t        | j                        D ]  \  }}||z  }|||<    |S r/   rd   emptysize	enumerateflatr0   outrh   idxri   r   r   s        r)   array_cumsum_implz'array_cumsum.<locals>.array_cumsum_impl  L    ((1665)CA#AFF+QQC , Jr(   
rW   r   r   r   signed_domainbool_bitwidthr7   r   r   )r0   
is_integeris_boolr   r   r   s       @@r)   array_cumsumr     s     !U[[!WW 3 33
''U[[(177++ejj.A.AAUZZ(EQWW%E"5!,	 ! ' "r(   cumprodc                    t        | t        j                        r| j                  t        j                  v }| j                  t        j
                  k(  }|r1| j                  j                  t        j                  j                  k  s|rt        t        j                        nt        | j                        t        d      fd}|S y )Nr,   c                     t        j                  | j                        }}t        | j                        D ]  \  }}||z  }|||<    |S r/   r   r   s        r)   array_cumprod_implz)array_cumprod.<locals>.array_cumprod_impl  r   r(   r   )r0   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                   	
 t        | t        j                  t        j                  f      rd }|S t        | t              rd }|S t        | t        j
                  t        j                  f      r!t        |       j                  d      

fd}|S t        | t        j                        r| j                  t        j                  t        t        j                  g      z  v }|rt        t        j                        nt        | j                        t        d      t        | j                  t        j                   t        j                  f      }t        | j                  t        j                        }|sE|rj                  t#        d            	nj                  t$        j&                        		fd}|S fd}|S y )Nc                 2    t        j                  |       dz   S N        rd   float64r0   s    r)   _scalar_meanz array_mean.<locals>._scalar_mean  s    ::a=3&&r(   c                     | S r/   r'   r   s    r)   _temporal_scalar_meanz)array_mean.<locals>._temporal_scalar_mean      Hr(   r   c                     | z   S r/   r'   )r0   
typed_zeros    r)   r   z array_mean.<locals>._scalar_mean  s    z>!r(   znan+nanjc                     | j                   dk(  rS }t        j                  |       D ]  }||j                         z  } j	                  || j                   z        S Nr   )r   rd   re   rf   r   )r0   rh   ri   r   r   	nan_values      r)   array_mean_implz#array_mean.<locals>.array_mean_impl  sU     66Q;$$ 1AMA &zz!aff*--r(   c                     }t        j                  |       D ]  }||j                         z  } || j                  z  S r/   )rd   re   rf   r   r   s      r)   r   z#array_mean.<locals>.array_mean_impl  s7    1AMA &166z!r(   )rW   r   Integerr   r   FloatComplexr   r   r   r   integer_domain	frozensetr   r   r   r   complexrd   nan)r0   r   r   	is_numberis_datetime_like
is_complexr   r   r   r   r   s          @@@@r)   
array_meanr     sX    !emmU]]34	'	A{	#	$$	AU]]3	4a[%%a(
	"	Au{{	#GGu33i6NNN	U]]+EQWW%E"5!, &agg0@0@050A0A0C D  7
!JJwz':;	!JJrvv.	
.* " r(   varc                 B    t        | t        j                        rd }|S y )Nc                     | j                         }d}t        j                  |       D ]C  }|j                         |z
  }|t        j                  |t        j
                  |      z        z  }E || j                  z  S r   )r   rd   re   rf   realconjr   )r0   mssdri   vals        r)   array_var_implz!array_var.<locals>.array_var_impl  se    A CYYq\vvx!|rwwsRWWS\122 " <r(   rW   r   r   )r0   r   s     r)   	array_varr    s$     !U[[!		   "r(   stdc                    t        | t        j                        rd }|S t        | t        j                  t        j                  f      rd }|S t        | t        j
                  t        j                  f      rNt        t        | d|             }|j                  d      |j                  t        j                        fd}|S y )Nc                 (    | j                         dz  S N      ?)r   r   s    r)   array_std_implz!array_std.<locals>.array_std_impl
  s    557c>!r(   c                 ,    t        j                  d      S r   r   r   s    r)   std_scalar_integer_implz*array_std.<locals>.std_scalar_integer_impl  s    ::c?"r(   underlying_floatr   c                 6    t        j                  |       sS S r/   )rd   isfinite)r0   nan_valrj   s    r)   std_scalar_float_implz(array_std.<locals>.std_scalar_float_impl  s    ;;q>Kr(   )rW   r   r   r   r   r   r   r   r   r   rd   r   )r0   r  r	  	out_dtyper  r  rj   s        @@r)   	array_stdr    s     !U[[!	"  
Au}}5	6	#&& 
AU]]3	4WQ'9!<=	~~a ..(	 %$ 
5r(   c                     | |k  S r/   r'   r0   min_vals     r)   min_comparatorr  #      w;r(   c                     | |kD  S r/   r'   r  s     r)   max_comparatorr  (  r  r(   c                      yNFr'   r   s    r)   return_falser  -  s    r(   minc                 T   t        | t        j                  t        j                  t        t
        f      rd }|S t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rt        j                  t        nt        | j                  t        j                        rt        d }t        |      nGt        | j                  t        j                        rt        j                   t        nt        t        fd}|S )Nc                     | S r/   r'   r   s    r)   
scalar_minznpy_min.<locals>.scalar_min9  r   r(   c                     | j                   |j                   k  ry| j                   |j                   k(  r| j                  |j                  k  ryyNTFr   imagr  s     r)   	comp_funcznpy_min.<locals>.comp_funcF  ;    vv$7<<'66GLL(r(   c                    | j                   dk(  rt        d      t        j                  |       }t	        |      j                  d      } |      r|S |D ]*  }|j                         } |      r|c S  ||      s)|}, |S )Nr   zDzero-size array to reduction operation minimum which has no identityr   r   rd   re   nextr   rf   )r0   it	min_valuer   ri   
comparatorpre_return_funcs        r)   impl_minznpy_min.<locals>.impl_minV      66Q; = > > YYq\HMM!$	9%D		Aq!!Y'	  r(   )rW   r   r   r   r   r   r   r   	npy_typesrd   isnatr  r   r  r
   r   isnan)r0   r  r#  r,  r*  r+  s       @@r)   npy_minr1  2      
 !ellEMM +/ 0	a%!''I00)2G2GHI((#
	AGGU]]	+&	 &i0
	AGGU[[	)((#
&#
$ Or(   maxc                 T   t        | t        j                  t        j                  t        t
        f      rd }|S t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rt        j                  t        nt        | j                  t        j                        rt        d }t        |      nGt        | j                  t        j                        rt        j                   t        nt        t        fd}|S )Nc                     | S r/   r'   r   s    r)   
scalar_maxznpy_max.<locals>.scalar_maxr  r   r(   c                     | j                   |j                   kD  ry| j                   |j                   k(  r| j                  |j                  kD  ryyr   r!  )r0   max_vals     r)   r#  znpy_max.<locals>.comp_func  r$  r(   c                    | j                   dk(  rt        d      t        j                  |       }t	        |      j                  d      } |      r|S |D ]*  }|j                         } |      r|c S  ||      s)|}, |S )Nr   zDzero-size array to reduction operation maximum which has no identityr&  )r0   r(  	max_valuer   ri   r*  r+  s        r)   impl_maxznpy_max.<locals>.impl_max  r-  r(   )rW   r   r   r   r   r   r   r   r.  rd   r/  r  r   r  r
   r   r0  )r0   r6  r#  r;  r*  r+  s       @@r)   npy_maxr<  k  r2  r(   c                 J   | j                   dk(  rt        d      t        j                  |       }t	        |      j                  d      }d}t        j                  |      r|S d}|D ]9  }|j                         }t        j                  |      r|c S ||k  r|}|}|dz  }; |S Nr   *attempt to get argmin of an empty sequencer,   r   r   rd   re   r'  r   r/  rf   )arryr(  r)  min_idxr   r   ri   s          r)   array_argmin_impl_datetimerC        yyA~EFF	4BRa IG	xx	
CIIK88A;Jy=IGq  Nr(   c                    | j                   dk(  rt        d      | j                  D ]  }|}d} n t        j                        rS d}| j                  D ])  }t        j                  |      r|c S ||k  r|}|}|dz  }+ S r>  r   r   r   rd   r0  rA  ri   r)  rB  r   s        r)   array_argmin_impl_floatrH        yyA~EFFYY	  
xx	
CYY88A;Jy=IGq  Nr(   c                     | j                   dk(  rt        d      | j                  D ]  }|}d} n t        d      d}| j                  D ]  }||k  r|}|}|dz  } |S )Nr   r?  unreachabler,   )r   r   r   RuntimeErrorrG  s        r)   array_argmin_impl_genericrM    su    yyA~EFFYY	 
 =))
CYYy=IGq	 
 Nr(   argminc                     t        | j                  t        j                  t        j                  f      rt
        n1t        | j                  t        j                        rt        nt        t        |      rdfd	}|S t        | |      }|S )Nc                      |       S r/   r'   r0   r\   flatten_impls     r)   array_argmin_implz'array_argmin.<locals>.array_argmin_impl      ?"r(   r/   )rW   r   r.  r   r   rC  r   r   rH  rM  r   %build_argmax_or_argmin_with_axis_impl)r0   r\   rS  rR  s      @r)   array_argminrV    w     !''I00)2G2GHI1	AGGU[[	).04	#  Bt\
 r(   c                 J   | j                   dk(  rt        d      t        j                  |       }t	        |      j                  d      }d}t        j                  |      r|S d}|D ]9  }|j                         }t        j                  |      r|c S ||kD  r|}|}|dz  }; |S Nr   z*attempt to get argmax of an empty sequencer,   r@  )rA  r(  r:  max_idxr   r   ri   s          r)   array_argmax_impl_datetimer[    rD  r(   c                    | j                   dk(  rt        d      | j                  D ]  }|}d} n t        j                        rS d}| j                  D ])  }t        j                  |      r|c S ||kD  r|}|}|dz  }+ S rY  rF  rA  ri   r:  rZ  r   s        r)   array_argmax_impl_floatr^    rI  r(   c                     | j                   dk(  rt        d      | j                  D ]  }|}d} n d}| j                  D ]  }|kD  r|}|}|dz  } S rY  )r   r   r   r]  s        r)   array_argmax_impl_genericr`  $  sj    yyA~EFFYY	 
 CYYy=IGq	 
 Nr(   c                     t        |d       t        j                  t        t	        | j
                              dfd	}|S )z|
    Given a function that implements the logic for handling a flattened
    array, return the implementation function.
    r\   c                    |dk  r| j                   |z   }|dk  s|| j                   k\  rt        d      | j                   dk(  r 	|       S }t        || j                   dz
        D ]  }t        |||dz         } t        || j                   dz
  |      }| j	                  |      }|j
                  d   }|j                         }|j                  | j                  k(  sJ |j                  |z  dk(  sJ t        j                  |j                  |z  
      }t        |j                        D ]  } 	|||z  |dz   |z         ||<    |j                  |j
                  d d       S )Nr   zaxis is out of boundsr,   )r   r   r5   r#   	transposer   ravelr   rd   r   reshape)r0   r\   tmpr1   transpose_indextransposed_arrr   raveledr   rR  r   tuple_buffers            r)   implz3build_argmax_or_argmin_with_axis_impl.<locals>.impl@  s\   !866D=D!8tqvv~455 66Q;?" tQVVaZ(AQA.C )'QVVaZ>_5   $ &&(||qvv%%%""Q&!+++hh~**a/7sxxA!'!a%Q!"<=CF ! {{>//455r(   r/   )r   r   r7   tupler5   r   )r0   r\   rR  rl  r   rk  s     ` @@r)   rU  rU  6  s6    
 T6"JJEqvv'L6> Kr(   argmaxc                     t        | j                  t        j                  t        j                  f      rt
        n1t        | j                  t        j                        rt        nt        t        |      rdfd	}|S t        | |      }|S )Nc                      |       S r/   r'   rQ  s     r)   array_argmax_implz'array_argmax.<locals>.array_argmax_implm  rT  r(   r/   )rW   r   r.  r   r   r[  r   r   r^  r`  r   rU  )r0   r\   rq  rR  s      @r)   array_argmaxrr  b  rW  r(   allc                     t        | t        j                  t        j                  f      rd }|S t        | t        t
        f      rd }|S t        | t        j                        rd }|S y )Nc                     t        |       S r/   boolr   s    r)   
scalar_allznp_all.<locals>.scalar_all|      7Nr(   c                 2    t        j                  |       dk7  S r   rd   r   r   s    r)   temporal_scalar_allz#np_all.<locals>.temporal_scalar_all      88A;!##r(   c                 \    t        j                  |       D ]  }|j                         r y yr%   rc   r0   ri   s     r)   flat_allznp_all.<locals>.flat_all  s%    YYq\vvx  " r(   rW   r   r   r   r   r   r   )r0   rx  r|  r  s       r)   np_allr  v  s_    
 !ellEMM23	!j+./	$"" !U[[!	
 r(   Fc                 H   t        j                  |       }t        j                  |      }|s|s|r|sy|r|r|syyt        j                  |       st        j                  |      r| |k(  S t        j                  | |z
        ||t        j                  |dz        z  z   kD  ryy)NF      ?Trd   r0  isinfabs)a_vb_vrtolatol	equal_nan	a_v_isnan	b_v_isnans          r)   _allclose_scalarsr    s    II Iy Y  88C=BHHSM#:66#)tdRVVC#I->&>>>r(   allclosec                 (   t        |       st        d      t        |      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j                  f      st        d      t        | t        j                        }t        |t        j                        }|r
|r	 	 d
d}|S |r
|s	 	 d
d}|S |s
|r	 	 d
d}	|	S |s|s	 	 d
d	}
|
S y y )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                 "    t        | ||||      S )Nr  r  r  )r  r0   br  r  r  s        r)   np_allclose_impl_scalar_scalarz3np_allclose.<locals>.np_allclose_impl_scalar_scalar  s    $Q4/8: :r(   c                     t        j                  |      }t        j                  |      D ]"  }t        | |j	                         |||      r" y yNr  FTrd   asarrayre   r  rf   )r0   r  r  r  r  bvs         r)   np_allclose_impl_scalar_arrayz2np_allclose.<locals>.np_allclose_impl_scalar_array  sB    

1Aiil(BGGIDt3<>  # r(   c                     t        j                  |       } t        j                  |       D ]"  }t        |j	                         ||||      r" y yr  r  )r0   r  r  r  r  avs         r)   np_allclose_impl_array_scalarz2np_allclose.<locals>.np_allclose_impl_array_scalar  sB    

1Aiil(ADt3<>  # r(   c                 $   t        j                  |       } t        j                  |      }t        j                  | |      \  }}t        j                  ||f      D ]3  \  }}t	        |j                         |j                         |||      r3 y yr  )rd   r  broadcast_arraysre   r  rf   )	r0   r  r  r  r  a_ab_br  r  s	            r)   np_allclose_impl_array_arrayz1np_allclose.<locals>.np_allclose_impl_array_array  su    

1A

1A**1a0HC))S#J/B(BGGID.2iI  0
 r(   gh㈵>g:0yE>F)	r   r   rW   floatr   r   rw  r   r   )r0   r  r  r  r  is_a_scalaris_b_scalarr  r  r  r  s              r)   np_allcloser    s(    AEFFAFGGdUEKK01 + , 	, dUEKK01 + , 	, i$!67 $ % 	% Q-KQ-K{BG5:	: .-	[AF49	 -,[AF49	 -,@E38	 ,+ "-[r(   anyc                     t        | t        j                  t        j                  f      rd }|S t        | t        t
        f      rd }|S t        | t        j                        rd }|S y )Nc                     t        |       S r/   rv  r   s    r)   
scalar_anyznp_any.<locals>.scalar_any  ry  r(   c                 2    t        j                  |       dk7  S r   r{  r   s    r)   temporal_anyznp_any.<locals>.temporal_any  r}  r(   c                 \    t        j                  |       D ]  }|j                         s y yr   rc   r  s     r)   flat_anyznp_any.<locals>.flat_any  s%    YYq\668 " r(   r  )r0   r  r  r  s       r)   np_anyr    sa     !ellEMM23	 !j+./	$ !U[[!	
 r(   c                     | t        |t        j                        sdd}|S |t        |t        j                        rdd}|S dd}|S )Nc                     t        d      )Nz)Numba does not support average with axis.)	TypeError)r0   r\   weightss      r)   np_average_implz#np_average.<locals>.np_average_impl  s    GHHr(   c                 V    t        j                  |       }t        j                  |      S r/   )rd   r  r   )r0   r\   r  rg   s       r)   r  z#np_average.<locals>.np_average_impl  s    jjmwws|#r(   c                 b   t        j                  |       }t        j                  |      }|j                  |j                  k7  r|j                  dk7  rt	        d      t        j
                  |      }|dk(  rt        d      t        j
                  t        j                  ||            |z  }|S )Nr,   z81D weights expected when shapes of a and weights differ.r   z)Weights sum to zero, can't be normalized.)rd   r  r   r   r  sumZeroDivisionErrormultiply)r0   r\   r  rg   sclavgs         r)   r  z#np_average.<locals>.np_average_impl  s    jjm**W-99-||q('45 5 ffWo#:+CE E ffR[[g67#=
r(   NN)rW   r   NoneType)r0   r\   r  r  s       r)   
np_averager    sQ    
4 @	I4 / ?j%..A$, %$ r(   c                     t        | t        j                  t        j                  f      rt        j
                  S t        d        }|S )z$
    A generic isnan() function
    c                      yr  r'   xs    r)   _trivial_isnanz!get_isnan.<locals>._trivial_isnan2  s    r(   )rW   r   r   r   rd   r0  r
   )r   r  s     r)   	get_isnanr  +  s<     %%++u}}56xx		 
	r(   c                      t        |       rd S y )Nc                 F    t        j                  |       j                  dk7  S r   rd   r  r"  r  s    r)   <lambda>znp_iscomplex.<locals>.<lambda><      A++q0r(   r   r  s    r)   np_iscomplexr  8      00r(   c                      t        |       rd S y )Nc                 F    t        j                  |       j                  dk(  S r   r  r  s    r)   r  znp_isreal.<locals>.<lambda>D  r  r(   r  r  s    r)   	np_isrealr  @  r  r(   c                    t        |       }t        | t        j                        rt        | j                        }t        j                  |t
        j                        t        | t        j                        rfd}|S fd}|S )Nc                     | yS r  r'   r  iscmplxs    r)   rl  ziscomplexobj.<locals>.implR  s    yNr(   c                     S r/   r'   r  s    r)   rl  ziscomplexobj.<locals>.implW  s    Nr(   )determine_dtyperW   r   Optionalr   rd   
issubdtypecomplexfloating)r  dtrl  r  s      @r)   iscomplexobjr  H  se     
	B!U^^$QVV$mmB 2 23G!U^^$	 K	Kr(   c                     d }|S )Nc                 .    t        j                  |        S r/   )rd   r  r  s    r)   rl  zisrealobj.<locals>.impla  s    ??1%%%r(   r'   r  rl  s     r)   	isrealobjr  \  s    
&Kr(   c                 (    t        |       fd}|S )Nc                     S r/   r'   )elementrv   s    r)   rl  znp_isscalar.<locals>.implj  s    
r(   )r   )r  rl  rv   s     @r)   np_isscalarr  f  s    

!CKr(   c                 :    t        |      rdfd	}|S dfd	}|S )Nc                     t        j                  t        j                  |        t        j                  |                   S r/   rd   logical_andr  signbitr  r   fns     r)   rl  zis_np_inf_impl.<locals>.impls  s)    >>"((1+r"**Q-/@AAr(   c                     t        j                  t        j                  |        t        j                  |             |      S r/   r  r  s     r)   rl  zis_np_inf_impl.<locals>.implv  s+    >>"((1+r"**Q-/@#FFr(   r/   r   )r  r   r  rl  s     ` r)   is_np_inf_implr  o  s'     3	B K	G Kr(   c                 4    t        d       }t        | ||      S )Nc                     | S r/   r'   r  s    r)   r  zisneginf.<locals>.<lambda>~  s    Ar(   r
   r  r  s      r)   isneginfr  |  s    	+	&B!S"%%r(   c                 4    t        d       }t        | ||      S )Nc                     |  S r/   r'   r  s    r)   r  zisposinf.<locals>.<lambda>  s    QBr(   r  r  s      r)   isposinfr    s    	,	'B!S"%%r(   c                     | |k  S r/   r'   r0   r  s     r)   	less_thanr        q5Lr(   c                     | |kD  S r/   r'   r  s     r)   greater_thanr    r  r(   c                 8    | j                   dk(  rt        d      y )Nr   z3zero-size array to reduction operation not possible)r   r   r   s    r)   check_arrayr    s    vv{NOO r(   c                 $     |r fd}|S  fd}|S )Nc                 
   t        j                  |       }t        |       t        j                  |      }t	        |      j                  d      }|D ]  }|j                         }t        j                  |j                        r"t        j                  |j                        s|}T |j                  |j                        r|}t|j                  |j                  k(  s |j                  |j                        s|} |S r   )
rd   r  r  re   r'  r   rf   r0  r   r"  r0   rg   r(  
return_valr   ri   comparison_ops         r)   rl  z!nan_min_max_factory.<locals>.impl  s    **Q-C3Bbq)JIIK88JOO,RXXaff5E!"J$QVVZ__=%&
:??2(A)*J  r(   c                    t        j                  |       }t        |       t        j                  |      }t	        |      j                  d      }|D ]4  }|j                         }t        j                  |      r) ||      r3|}6 |S r   )rd   r  r  re   r'  r   rf   r0  r  s         r)   rl  z!nan_min_max_factory.<locals>.impl  sn    **Q-C3Bbq)JIIKxx{(Q7%&
	 
 r(   r'   )r  is_complex_dtyperl  s   `  r)   nan_min_max_factoryr    s    	: K
	 Kr(   )r
  Tc                 Z   t        j                  |       rt        j                  |      r|S t        j                  |       r t        j                  |      r| dkD  |dkD  k(  S t        j                  |       st        j                  |      ryt        | |z
        ||t        |      z  z   k  S )Nr   Fr  )r  yr  r  r  s        r)   _isclose_itemr    s}    	xx{rxx{	!!A1q5!!	!1q5zTD3q6M111r(   c                    t        |       st        d      t        |      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j                  f      st        d      t        | t        j                        r t        |t        j                        rd
d}|S t        | t        j                        r t        |t        j                        rd
d}|S t        | t        j                        r t        |t        j                        rd
d}|S d
d	}|S )Nr  r  r  r  r  c                    | j                  d      }|}t        j                  t        |      t        j                        }t        t        |            D ]  }t        ||   ||||      ||<    |j                  | j                        S Nrc  rf  rd   zerosrH   r   r5   r  r   	r0   r  r  r  r  r  r  r   r1   s	            r)   isclose_implzisclose.<locals>.isclose_impl  sk    		"AA((3q6288,C3s8_&qtQdIFA %;;qww''r(   c                    | }|j                  d      }t        j                  t        |      t        j                        }t        t        |            D ]  }t        |||   |||      ||<    |j                  |j                        S r  r  r  s	            r)   r  zisclose.<locals>.isclose_impl  sk    A		"A((3q6288,C3s8_&q!A$dIFA %;;qww''r(   c                    t        j                  | j                  |j                        }t        j                  | |      }t        j                  ||      }t        j                  t        |      t         j                        }t        t        j                  ||f            D ]6  \  }	\  }
}t        |
j                         |j                         |||      ||	<   8 t        j                  ||      S Nr   )rd   broadcast_shapesr   broadcast_tor  rH   r   r   re   r  rf   )r0   r  r  r  r  r   a_b_r   r1   r  r  s               r)   r  zisclose.<locals>.isclose_impl  s    ''9EE*BE*B((3r7"((3C(B8)<=8B&rwwy"'')T4'02A  > ??3..r(   c                      t        | ||||      S r/   )r  r  s        r)   r  zisclose.<locals>.isclose_impl  s     AtT9==r(   r  )
r   r   rW   r  r   r   rw  r   r   r   )r0   r  r  r  r  r  s         r)   iscloser    s)   AEFFAFGGdUEKK01 + , 	, dUEKK01 + , 	, i$!67 $ % 	% !U[[!jELL&A	(B 3 
Au||	$Au{{)C	(0 ! 
Au{{	#
1ekk(B		/ 	> r(   c                 x    t        |       }t        j                  |t        j                        rt        S t
        S r/   )r  rd   r  r  complex_nanminreal_nanminr0   r  s     r)   	np_nanminr$    ,    		B	}}R++,r(   c                 x    t        |       }t        j                  |t        j                        rt        S t
        S r/   )r  rd   r  r  complex_nanmaxreal_nanmaxr#  s     r)   	np_nanmaxr)    r%  r(   c                 r    t        | t        j                        sy t        | j                        fd}|S )Nc                     d}d}t        j                  |       D ]3  }|j                         } |      r||j                         z  }|dz  }5 t        j                  ||      S Nr   r   r,   )rd   re   rf   divide)r0   rh   countr   ri   r0  s        r)   nanmean_implz np_nanmean.<locals>.nanmean_impl%  s\    IIaLD		A8QVVX
	 ! yyE""r(   rW   r   r   r  r   )r0   r/  r0  s     @r)   
np_nanmeanr1    s/    a%aggE	# r(   c                 r    t        | t        j                        sy t        | j                        fd}|S )Nc                 T   t        j                  |       }d}d}t        j                  |       D ]a  }|j                         } |      r|j                         |z
  }|t        j                  |t        j
                  |      z        z  }|dz  }c t        j                  ||      S r,  )rd   nanmeanre   rf   r   r   r-  )r0   r   r   r.  r   ri   r   r0  s          r)   nanvar_implznp_nanvar.<locals>.nanvar_impl9  s    JJqM IIaLD		A8vvx!|rwwsRWWS\122
 ! yye$$r(   r0  )r0   r5  r0  s     @r)   	np_nanvarr6  3  s/    a%aggE%  r(   c                 B    t        | t        j                        sy d }|S )Nc                 2    t        j                  |       dz  S r  )rd   nanvarr   s    r)   nanstd_implznp_nanstd.<locals>.nanstd_implQ  s    yy|s""r(   r   )r0   r:  s     r)   	np_nanstdr;  L  s     a%# r(   c                    t        | t        j                        sy t        | j                  t        j                        rt        j
                  }n| j                  } |d      t        | j                        fd}|S )Nr   c                 |    }t        j                  |       D ]   }|j                         } |      r||z  }" |S r/   rc   )r0   rh   r   ri   r0  rj   s       r)   nansum_implznp_nansum.<locals>.nansum_implb  s<    IIaLD		A8Q ! r(   rW   r   r   r   r   r7   r  )r0   r   r>  r0  rj   s      @@r)   	np_nansumr@  W  s\    a%!''5==)

8DaggE r(   c                    t        | t        j                        sy t        | j                  t        j                        rt        j
                  }n| j                  } |d      t        | j                        fd}|S )Nr,   c                 |    }t        j                  |       D ]   }|j                         } |      r||z  }" |S r/   rc   )r0   rh   r   ri   r0  ones       r)   nanprod_implz np_nanprod.<locals>.nanprod_implx  s<    IIaLD		A8Q ! r(   r?  )r0   r   rD  r0  rC  s      @@r)   
np_nanprodrE  m  s\    a%!''5==)


(CaggE r(   c                     t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rd S | j                  t               d      fd}|S )Nc                 ,    t        j                  |       S r/   )rd   r   r   s    r)   r  znp_nancumprod.<locals>.<lambda>  s    Ar(   r,   c                     t        j                  | j                        }}t        | j                        D ]  \  }} |       r||z  }|||<    |S r/   r   )r0   r   rh   r   ri   is_nanrC  r   s        r)   nancumprod_implz&np_nancumprod.<locals>.nancumprod_impl  sU    ((1665)CA#AFF+Q1I:FAC , Jr(   rW   r   r   r   r   r   r  )r0   rJ  rI  rC  r   s     @@@r)   np_nancumprodrL    s^    a%!''EMM5==9:&&5!Ah	 r(   c                     t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rd S | j                  t               d      fd}|S )Nc                 ,    t        j                  |       S r/   )rd   r   r   s    r)   r  znp_nancumsum.<locals>.<lambda>  s    1r(   r   c                     t        j                  | j                        }}t        | j                        D ]  \  }} |       r||z  }|||<    |S r/   r   )r0   r   rh   r   ri   rI  r   rj   s        r)   nancumsum_implz$np_nancumsum.<locals>.nancumsum_impl  sU    ((1665)CA#AFF+Q1I:FAC , Jr(   rK  )r0   rP  rI  r   rj   s     @@@r)   np_nancumsumrQ    s^    a%!''EMM5==9:%%5!Qx	 r(   c                 N    t        |       }t        |      dk(  rt        d      |S )Nr   z&zero-size array reduction not possible)_asarrayrH   r   r0   rg   s     r)   prepare_ptp_inputrU    s'    
1+C
3x1}ABB
r(   c                 T     t        |t        j                        r fd}|S  fd}|S )Nc                      |j                   | j                         r|S |j                   | j                   k(  r |j                  | j                        r|S | S r/   r!  current_valr   r   s     r)   rl  z+_compute_current_val_impl_gen.<locals>.impl  sM    #((K,,-
((k...388[%5%56
r(   c                      ||       r|S | S r/   r'   rX  s     r)   rl  z+_compute_current_val_impl_gen.<locals>.impl  s    S+.3?K?r(   )rW   r   r   )r   rY  r   rl  s   `   r)   _compute_current_val_impl_genr[    s(    +u}}-	 K	@Kr(   c                      y r/   r'   rY  r   s     r)   _compute_a_maxr^        r(   c                      y r/   r'   r]  s     r)   _compute_a_minra    r_  r(   c                 8    t        t        j                  | |      S r/   )r[  operatorgtr]  s     r)   _compute_a_max_implre        (k3GGr(   c                 8    t        t        j                  | |      S r/   )r[  rc  ltr]  s     r)   _compute_a_min_implri    rf  r(   c                      y r/   r'   r   s    r)   _early_returnrl    r_  r(   c                     dt        | t        j                        rfd}|S t        | t        j                        rfd}|S fd}|S )Nr   c                     t        j                  | j                        rZt        j                  | j                        r&dt         j                  t         j                  dz  z   fS dt         j                  dz   fS dfS )NT              ?y                F)rd   r0  r   r"  r   r   UNUSEDs    r)   rl  z _early_return_impl.<locals>.impl  s\    xx!88CHH%"&&2+!555",,f}$r(   c                 Z    t        j                  |       rdt         j                  fS dfS r   )rd   r0  r   rp  s    r)   rl  z _early_return_impl.<locals>.impl  s&    xx}RVV|#f}$r(   c                     dfS r  r'   rp  s    r)   rl  z _early_return_impl.<locals>.impl  s    &= r(   )rW   r   r   r   )r   rl  rq  s     @r)   _early_return_implrt    sH    F#u}}%	%" K 
C	%	% K	!Kr(   c                     t        | d      r/t        | j                  t        j                        rt        d      d }|S )Nr   +Boolean dtype is unsupported (as per NumPy)c                     t        |       }|j                  }|d   }|d   }t        |j                        D ]3  }||   }t	        |      \  }}|r|c S t        ||      }t        ||      }5 ||z
  S r   )rU  r   r5   r   rl  r^  ra  )	r0   rg   a_flata_mina_maxr1   r   take_branchretvals	            r)   np_ptp_implznp_ptp.<locals>.np_ptp_impl  s}    "q	q	sxxA)C"/"4K"5#.E"5#.E ! u}r(   )hasattrrW   r   r   r   r   )r0   r}  s     r)   np_ptpr     s9     q'aggu}}-KLL" r(   )r~   r   ptpc                 d    t        j                  |       ryt        j                  |      ry| |k  S r%   )rd   r0  r  s     r)   nan_aware_less_thanr  #  s'    	xx{88A;q5Lr(   c                      d fd	}|S )Nc                    ||z   dz	  } 	| |   | |         r$| |   | |   c| |<   | |<   r||   ||   c||<   ||<    	| |   | |         r$| |   | |   c| |<   | |<   r||   ||   c||<   ||<    	| |   | |         r$| |   | |   c| |<   | |<   r||   ||   c||<   ||<   | |   }| |   | |   c| |<   | |<   r||   ||   c||<   ||<   |}|dz
  }	 ||k  r# 	| |   |      r|dz  }||k  r 	| |   |      r||k\  r# 	|| |         r|dz  }||k\  r 	|| |         r||k\  rn/| |   | |   c| |<   | |<   r||   ||   c||<   ||<   |dz  }|dz  }| |   | |   c| |<   | |<   r||   ||   c||<   ||<   |S Nr,   r'   )
AlowhighImidpivotr1   jargpartition	pivotimpls
           r)   
_partitionz&_partition_factory.<locals>._partition/  sG   Tza QsVQsV$sVQsVNAcFAcF!"33##QtWaf%fagOAdGQsV"#C&!D'$3QsVQsV$sVQsVNAcFAcF!"33###C&!D'$3fagOAdGQsV1Hd(y1u5Q d(y1u5s(y!5Q s(y!5Av1qtJAaD!A$qT1Q4
!adFAFA  $1!agdGQqTMAaD!D'r(   r/   r'   )r  r  r  s   `` r)   _partition_factoryr  .  s    ,Z r(   )r  c                      d fd	}|S )Nc                      | |||      }||k7  r,||k  r|dz   } | |||      }n|dz
  } | |||      }||k7  r,| |   S )zJ
        Select the k'th smallest element in array[low:high + 1].
        r,   r'   )rA  kr  r  r   r1   partitionimpls         r)   _selectz _select_factory.<locals>._selecth  si     $T3/1f1u!e!$T371u!$T37 1f Awr(   r/   r'   )r  r  s   ` r)   _select_factoryr  g  s     Nr(   c                     	 ||kD  sJ t        | ||      }||k  r|dz   }n:||dz   kD  r|dz
  }n,||k(  rt        | |dz   |dz   |       nt        | |||dz
         nZ| |   | |dz      fS )z
    Select the k'th and k+1'th smallest elements in array[low:high + 1].

    This is significantly faster than doing two independent selections
    for k and k+1.
    r,   )r  r  )rA  r  r  r  r1   s        r)   _select_twor  }  s     czztS$'q5a%CQYq5D!VD!a%Q-D!S!a%(  7DQKr(   c                 ~    d}|dz
  }|dz	  }|dz  dk(  rt        | |dz
  ||      \  }}||z   dz  S t        | |||      S )zt
    The main logic of the median() call.  *temp_arry* must be disposable,
    as this function will mutate it.
    r   r,   r~   )r  r  )	temp_arrynr  r  halfr0   r  s          r)   _median_innerr    s]     Cq5D6D1uz9dQhT:1A{y$T22r(   c                     t        | t        j                        sy t        | j                        j
                  dv fd}|S )NmMc                     | j                         }|j                  d   }s|dk(  rt        j                  S t	        ||      S r   )flattenr   rd   r   r  )r0   r  r  is_datetimes      r)   median_implznp_median.<locals>.median_impl  s=     IIK	OOAqAv66MY**r(   )rW   r   r   r   r   char)r0   r  r  s     @r)   	np_medianr    s:    a%177#((D0K+ r(   c                    t        |       }|dk(  r4t        j                  t        |      | d   t        j                        }|S t        j                  t        |      t        j                        }t        t        |            D ]  }||   }|dk(  rht        j                  |       }t        j                  t        j                  |              rt        j                  |       rwt        j                  }ne|dk(  rt        j                  |       }t        j                  t        j                  |              r!t        j                  | t        j                  k(        }t        j                  | t        j                   k(        }|||z   z
  }	|	dk(  rt        j                  }|dk(  r|dk(  rt        j                  }|dkD  rt        j                  }|	dk(  r|dkD  r~|dk7  ryt        j                  }nhd|dz
  t        j                  |d      z  z   }
t        j                  |
      }|
|z
  }t!        | t#        |dz
        d|dz
        \  }}|d|z
  z  ||z  z   }|||<    |S )Nr,   r   r  d   r~         Y@)r  r  r  )rH   rd   r   r   r   r5   r3  rs  r  r   r  r  inftrue_dividemathfloorr  int)r0   qr  r   r1   
percentiler   num_pos_infnum_neg_inf
num_finiterankfr   loweruppers                  r)   _collect_percentiles_innerr    s    	AAAvggc!fad"**5T JQ hhs1vRZZ0s1vA1J S ffQiFF2;;q>**C(( ff qffQiFF2;;q>**"$&&bff"5K"$&&rvvg"6K!"kK&?!@J!Q ff"a'AF ff"Q ff!Q&?*a/&(ff AER^^J%FFFJJt$1H*1AE
QPuq1uo	1CFK N Jr(   c                     |r| |    } t        |       dk(  ryt        j                  |      ryt        |       dk(  r| d   }t        j                  |      S y)Nr   Fr,   T)rH   rd   r  r  )r0   nan_maskskip_nanr   s       r)   _can_collect_percentilesr    sS    xiLq6Q;66(
1v{d{{3r(   c                    d}| j                   dk(  rX| j                  dk  rIt        | j                        D ]/  }| |   dk  s!| |   |kD  st        j                  | |         s,d} |S  |S t        j
                  t        j                  |             s0t        j
                  | dk        st        j
                  | |kD        rd}|S )NTr,   
   r   F)r   r   r5   rd   r0  r  )r  q_upper_boundvalidr1   s       r)   check_validr    s    E 	vv{qvv{qvvAtczQqTM1RXXad^
 L  L 66"((1+"&&S/RVVA<M5NELr(   c                 4    t        | d      st        d      y )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                 4    t        | d      st        d      y )Nr  r  z%Quantiles must be in the range [0, 1]r  r  s    r)   quantile_is_validr    s    q,@AA -r(   c                    t        j                  |t         j                        j                         } ||       ||z  }t        j                  | t         j                        j                         }t        j                  |      }t        |||      r||    }t        ||      }|S t        j                  t        |      t         j                        }|S r  )
rd   r  r   r  r0  r  r  r   rH   r   )r0   r  check_qfactorr  r  r  r   s           r)   _collect_percentilesr    s    


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

1BJJ/779Ixx	"H	8X>xi(	(A6 J ggc!fbff%Jr(   c                 J   t        |       }t        j                  |t        j                        rt	        d      fd}fd}t        |t        j                  t        j                  f      r|S t        |t        j                        r|j                  dk(  r|S |S )z
    The underlying algorithm to find percentiles and quantiles
    is the same, hence we converge onto the same code paths
    in this inner function implementation
    zNot supported for complex dtypec                 (    t        | |      d   S r   r  r0   r  r  r  r  s     r)   np_percentile_q_scalar_implz?_percentile_quantile_inner.<locals>.np_percentile_q_scalar_impl9  s    #Aq'68DQGGr(   c                 "    t        | |      S r/   r  r  s     r)   np_percentile_implz6_percentile_quantile_inner.<locals>.np_percentile_impl<  s    #Aq'68DDr(   r   )r  rd   r  r  r   rW   r   r   r   r   r   )r0   r  r  r  r  r  r  r  s     ```   r)   _percentile_quantile_innerr  -  s~     
	B	}}R++,;<<HE !ellEMM23**	Au{{	#!**!!r(   c                 *    t        | |ddt              S )NFr  r  r  r  r  r  r0   r  s     r)   np_percentiler  G  s    %	1uS2E r(   c                 *    t        | |ddt              S )NTr  r  r  r  s     r)   np_nanpercentiler  N  s    %	1tC1D r(   c                 *    t        | |ddt              S )NFr  r  r  r  r  s     r)   np_quantiler  U  s    %	1uU4E r(   c                 *    t        | |ddt              S )NTr  r  r  r  s     r)   np_nanquantiler  \  s    %	1tE3D r(   c                 r    t        | t        j                        sy t        | j                        fd}|S )Nc                    t        j                  | j                  | j                        }d}t        j                  |       D ]%  }|j                         } |      r|||<   |dz  }' |dk(  rt         j                  S t        ||      S Nr   r,   )rd   r   r   r   re   rf   r   r  )r0   r  r  r   ri   r0  s        r)   nanmedian_implz$np_nanmedian.<locals>.nanmedian_impli  su    HHQVVQWW-	IIaLD		A8 	!Q	 ! 666MY**r(   r0  )r0   r  r0  s     @r)   np_nanmedianr  c  s/    a%aggE+  r(   c                     t        j                  |       }t        j                  | j                  d d       }|D ]A  }| |   j	                         }d}t        |      dz
  }|D ]  }t        ||||       |} |||<   C |S )Nrc  r   r,   )rd   
empty_likendindexr   copyrH   _select_w_nan)	r0   	kth_arrayr   r   srA  r  r  kths	            r)   np_partition_impl_innerr  |  s    
 --
C
**QWWSb\
"Ctyy{4y1}C$S$/C  A  Jr(   c           	      ^   t        j                  | t         j                        }t        j                  | j                  d d       }|D ]`  }| |   j                         }t        j                  t        |            }d}t        |      dz
  }|D ]  }	t        ||	|||       |	} |||<   b |S )Nr  rc  r   r,   )	rd   r  r7   r  r   r  arangerH   _arg_select_w_nan)
r0   r  r   r   r  rA  idx_arryr  r  r  s
             r)   np_argpartition_impl_innerr    s    
 --
)C
**QWWSb\
"Ctyy{99SY'4y1}CdCdH=C  A  Jr(   c                    t        |      j                  t        j                        }|j                  dk7  rt        d      t        j                  t        j                  |      | j                  d   k\        rt        d      t        j                  |      }t        j                  |      D ]%  \  }}|dk  r|| j                  d   z   ||<   !|||<   ' t        j                  |      S )a  
    Returns a sorted, unique array of kth values which serve
    as indexers for partitioning the input array, a.

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

    Values less than 0 are transformed to equivalent positive
    index values.
    r,   zkth must be scalar or 1-Drc  zkth out of boundsr   )rS  astyperd   r   r   r   r  r  r   r  ndenumerateunique)r0   r  r  r   indexr   s         r)   
valid_kthsr    s     $$RXX.I~~455 
vvbffY1772;./,--
--	
"CnnY/
s7qwwr{*CJCJ	 0 99S>r(   c                    t        | t        j                  t        j                  t        j                  f      st        d      t        | t        j                        r| j                  dk(  rd}t        |      t        |d|      }t        dk\  rt        j                  }n t        j                  t        j                  f}t        ||      st        d      d }|S )N(The first argument must be an array-liker   3The first argument must be at least 1-D (found 0-D)r   r~   r}   Partition index must be integerc                     t        |       }|j                  dk(  r|j                         S t        ||      }t	        ||      S r   )rS  r   r  r  r  r0   r  a_tmpr  s       r)   np_partition_implz'np_partition.<locals>.np_partition_impl  s;    ::?::<"5#.I*5)<<r(   rW   r   r   SequencerZ   r!   r   r   r   r   r   )r0   r  r   kthdt	kth_typesr  s         r)   np_partitionr    s     a%++u~~u{{CDGHH!U[[!affkCS!!C#&EMM	]]EMM2	eY'>??= r(   c                    t        | t        j                  t        j                  t        j                  f      st        d      t        | t        j                        r| j                  dk(  rd}t        |      t        |d|      }t        dk\  rt        j                  }n t        j                  t        j                  f}t        ||      st        d      d }|S )Nr  r   r  r   r  r  c                     t        |       }|j                  dk(  r|j                         j                  d      S t	        ||      }t        ||      S )Nr   r7   )rS  r   r  r  r  r  r  s       r)   np_argpartition_implz-np_argpartition.<locals>.np_argpartition_impl  sF    ::?::<&&v.."5#.I-eY??r(   r  )r0   r  r   r  r  r	  s         r)   np_argpartitionr
    s     a%++u~~u{{CDGHH!U[[!affkCS!!C#&EMM	]]EMM2	eY'>??@  r(   c                    t        d|       t        d|      f}t        j                  |t        j                        }t	        |d         D ]3  }t        t        d||z   dz         |d         }d||d |f<   d|||d f<   5 |S )Nr   r  r,   )r3  rd   r   r   r5   r  )NMr  r   r   r1   m_maxs          r)   	_tri_implr  	  s    1Is1ay E
((5


+C58_C1q519%uQx0AvvIAuvI 
 Jr(   c                 &    t        |d       dd}|S )Nr  c                 $    || }t        | ||      S r/   )r  )r  r  r  s      r)   tri_implznp_tri.<locals>.tri_impl  s    9AAq!!r(   r   )r   )r  r  r  r  s       r)   np_trir    s     Q"
 Or(   c                     | j                   dk(  sJ t        |       }t        j                  ||f| j                        }t        |      D ]  }| ||<   	 |S )zq
    Takes a 1d array and tiles it to form a square matrix
    - i.e. a facsimile of np.tile(m, (len(m), 1))
    r,   r  )r   rH   rd   r   r   r5   )r   len_mr   r1   s       r)   _make_squarer  $  sS     66Q;;FE
((E5>
1C5\A  Jr(   c                    t        j                  | j                  d   | j                  d   |      j                  t         j                        }t        j
                  || t        j                  | | j                              S Nrc  r  r  r  rd   trir   r  uintwhere
zeros_liker   r   r  masks      r)   np_tril_impl_2dr"  5  sU    66!''"+299"''BD88D!R]]1AGG<==r(   c                 z    t        |d       dd}dd}| j                  dk(  r|S | j                  dk(  rt        S |S )Nr  c                 0    t        |       }t        ||      S r/   )r  r"  r   r  m_2ds      r)   np_tril_impl_1dz my_tril.<locals>.np_tril_impl_1dA      AtQ''r(   c                    t        j                  | j                  d   | j                  d   |      j                  t         j                        }t        j
                  | j                  d d       }t        j                  |       }t        j                  || j                        }|D ]  }t        j                  || |   |      ||<   ! |S r  
rd   r  r   r  r  r  r  r  r   r  r   r  r!  r   zzero_optsels          r)   np_tril_impl_multiz#my_tril.<locals>.np_tril_impl_multiE  s    vvaggbkQWWR[A6==bggFjj"&MM!==QWW5CXXdAcFH5AcF r(   r,   r~   r   )r   r   r"  )r   r  r'  r/  s       r)   my_trilr1  ;  sB     Q( 	vv{	
1!!r(   c                 l    t        | d       t        |d       t        |      st        |d       dd}|S )Nr  r  r   c                 X    t        j                  t        j                  | ||            S )Nr  rd   nonzeror  r  r  r   s      r)   np_tril_indices_implz-np_tril_indices.<locals>.np_tril_indices_impl_  s    zz"&&A+,,r(   r   Nr   r   )r  r  r   r8  s       r)   np_tril_indicesr;  V  s4     QQq>C -r(   c                 Z    t        |d       | j                  dk7  rt        d      dd}|S )Nr  r~   input array must be 2-dc                 f    t        j                  | j                  d   || j                  d         S Nr   r,   )r  r   )rd   tril_indicesr   rg   r  s     r)   np_tril_indices_from_implz7np_tril_indices_from.<locals>.np_tril_indices_from_implm  %    syy|qCIIaLAAr(   r0  r   r   r   )rg   r  rB  s      r)   np_tril_indices_fromrE  d  1     Q
xx1}344B$$r(   c                    t        j                  | j                  d   | j                  d   |dz
        j                  t         j                        }t        j
                  |t        j                  | | j                        |       S Nr  rc  r,   r  r  r  r   s      r)   np_triu_impl_2drI  r  sY    66!''"+A6==bggFD88D"--91==r(   c                 z    t        |d       dd}dd}| j                  dk(  r|S | j                  dk(  rt        S |S )Nr  c                 0    t        |       }t        ||      S r/   )r  rI  r%  s      r)   np_triu_impl_1dz my_triu.<locals>.np_triu_impl_1d}  r(  r(   c                    t        j                  | j                  d   | j                  d   |dz
        j                  t         j                        }t        j
                  | j                  d d       }t        j                  |       }t        j                  || j                        }|D ]  }t        j                  ||| |         ||<   ! |S rH  r*  r+  s          r)   np_triu_impl_multiz#my_triu.<locals>.np_triu_impl_multi  s    vvaggbkQWWR[AE:AA"''Jjj"&MM!==QWW5CXXdHaf5AcF r(   r,   r~   r0  )r   r   rI  )r   r  rL  rN  s       r)   my_triurO  x  sB     Q( 	vv{	
1!!r(   c                 l    t        | d       t        |d       t        |      st        |d       dd}|S )Nr  r  r   c           	      d    t        j                  dt        j                  | ||dz
        z
        S )Nr,   r4  r5  r7  s      r)   np_triu_indices_implz-np_triu_indices.<locals>.np_triu_indices_impl  s'    zz!bffQQU3344r(   r9  r:  )r  r  r   rR  s       r)   np_triu_indicesrS    s4     QQq>C 5r(   c                 Z    t        |d       | j                  dk7  rt        d      dd}|S )Nr  r~   r=  c                 f    t        j                  | j                  d   || j                  d         S r?  )rd   triu_indicesr   rA  s     r)   np_triu_indices_from_implz7np_triu_indices_from.<locals>.np_triu_indices_from_impl  rC  r(   r0  rD  )rg   r  rW  s      r)   np_triu_indices_fromrX    rF  r(   c                      y r/   r'   rg   s    r)   _prepare_arrayr[    r_  r(   c                 6    | d t         j                  fv rd S d S )Nc                 ,    t        j                  d      S )Nr'   rd   arrayrZ  s    r)   r  z%_prepare_array_impl.<locals>.<lambda>  s    288B<r(   c                 4    t        |       j                         S r/   )rS  re  rZ  s    r)   r  z%_prepare_array_impl.<locals>.<lambda>  s    8C=..0r(   r   nonerZ  s    r)   _prepare_array_implrc    s    
tUZZ  ''00r(   c                 ^   | }	 t        |t        j                  t        j                  f      rt	        |      S t        |dd       }| |       dk(  rt        j                  S t        |dd       }|t        d      t        |t        j                        r|j                  }nt	        |      S )N__len__r   r   ztype has no dtype attr)rW   r   r   r   r   r   rd   r   r!   r  r   )inobjobjlr  s       r)   _dtype_of_compoundri    s    
C
cELL%--89C= CD)=QSAX::S'4(: !9::c5>>*))CB< r(   c                    t        | t        j                        r/t        | j                  t        j                        rt        d      t        |       }d }t        |      st        |      }d }t        |      st        |      }|#t        j                  ||      sd}t        |      |#t        j                  ||      sd}t        |      dd}|S )Nrv  z3dtype of to_begin must be compatible with input aryz1dtype of to_end must be compatible with input aryc                    t        |      }t        |       }t        |      }|j                  }t        |      dkD  rt        j                  t        |      t        |      z   t        |      z   dz
  |      }t        |      }t        |      t        |      z   dz
  }	||d | t        j
                  |      |||	 |||	d  |S t        j                  t        |      t        |      z   |      }t        |      }||d | |||d  |S )Nr   r,   r  )r[  r   rH   rd   r   diff)
aryto_endto_beginstartr  endr  r   	start_idxmid_idxs
             r)   np_ediff1d_implz#np_ediff1d.<locals>.np_ediff1d_impl  s    x(S!V$II	 s8a<((CJS1CH<q@!*,CE
I%j3s8+a/G#C
O%'WWS\C	'"CM 
	 ((CJS1)DCE
I#C
O!C	
O
r(   r  )
rW   r   r   r   r   r!   ri  r   rd   can_cast)rm  rn  ro  ary_dtto_begin_dt	to_end_dtr   rt  s           r)   
np_ediff1dry    s     #u{{#cii/ !NOO
  $FK!(2I&v.	r{{;'GCS!!R[[F%CAS!!6 r(   c                      y r/   r'   rZ  s    r)   _select_elementr{  	  r_  r(   c                 :    t        | dd       dk(  }|rd }|S d }|S )Nr   r   c                 X    t        j                  d| j                        }| |d d  |d   S )Nr,   r  r   )rd   r_  r   )rg   r  s     r)   rl  z"_select_element_impl.<locals>.impl	  s(    SYY/AAaDQ4Kr(   c                     | S r/   r'   rZ  s    r)   rl  z"_select_element_impl.<locals>.impl	  s    Jr(   )r   )rg   zerodrl  s      r)   _select_element_implr  	  s.    C&!+E	 	r(   c                      y r/   r'   )dxr  s     r)   _get_dr  	  r_  r(   c                 ,    t        |       rd }|S d }|S )Nc                 ,    t        j                  |      S r/   rd   r  r  r  s     r)   rl  zget_d_impl.<locals>.impl	  s    ::b>!r(   c                 R    t        j                  t        j                  |             S r/   )rd   rl  r  r  s     r)   rl  zget_d_impl.<locals>.impl 	  s    772::a=))r(   r  )r  r  rl  s      r)   
get_d_implr  	  s    1~	"
 K	*Kr(   c                     t        | t        j                  t        j                  f      rt	        d      t        | t        j
                        r| j                  dk(  rt	        d      dd}|S )z9Shared implementation for both np.trapz and np.trapezoid.zy cannot be a scalarr   zy cannot be 0Dc                     t        j                  |       }t        ||      }|dt        dd       f   |dt        d d      f   z   dz  }t        j                  ||z  d      }t        |      }|S )N.r,   rc         @)rd   r  r  rQ   r  r{  )r  r  r  yarrdy_averet	processeds           r)   rl  z_trapz_impl.<locals>.impl/	  sm    zz!}1bMc5D>)*T#uT22F-GG3NffQY##C(	r(   Nr  )rW   r   r   r   r   r   r   )r  r  r  rl  s       r)   _trapz_implr  %	  sU    !ellEMM23011	Au{{	#!*++
 Kr(   )r~      c                     t        | ||      S r/   r  r  r  r  s      r)   np_trapzr  <	      1a$$r(   c                     t        | ||      S r/   r  r  s      r)   np_trapezoidr  C	  r  r(   c                 ~   |j                   \  }}|t        |       k(  sJ ||k(  sJ |rGt        |      D ]8  }|dk(  r
d|dd|f<   t        j                  | |dd|dz
  f         |dd|f<   : yt        |dz
  dd      D ];  }||dz
  k(  r
d|dd|f<   t        j                  | |dd|dz   f         |dd|f<   = y)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,   Nrc  )r   rH   r5   rd   r  )r  r  
increasingr   r   r  r1   s          r)   
_np_vanderr  H	  s     99DAqA;;6M6qAAvAqD	KK3q1q5z?;AqD		  q1ub"%AAEzAqD	KK3q1q5z?;AqD		 &r(   c                 X    | j                   dkD  rt        d      |dk  rt        d      y )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  d	  s1    vvzIJJ1u>?? r(   c                 z   |d t         j                  fvr%t        |t         j                        st	        d      dfd	}dd}t        | t         j
                        r1t        | j                        }t        j                  |t              |S t        | t         j                  t         j                  f      r|S y )Nz,Second argument N must be None or an integerc                     |t        |       }t        | |       t        j                  t        |       t	        |      f      }t        | |||       |S r  )rH   r  rd   r   r  r  )r  r  r  r   r   s       r)   np_vander_implz!np_vander.<locals>.np_vander_implr	  sM    9AAQ" hhAA'u51aS)
r(   c                     |t        |       }t        j                  |       }t        ||       t        j                  t        |       t        |      f|j                        }t        ||||       |S r  )rH   rd   r_  r  r   r  r   r  )r  r  r  x_arrr   s        r)   np_vander_seq_implz%np_vander.<locals>.np_vander_seq_impl~	  s]    9AAUA& hhAA'u{{;5!Z-
r(   r  )r   rb  rW   r   r   r   r   r   rd   promote_typesr  rZ   r  )r  r  r  r  r  x_dtr   s         @r)   	np_vanderr  l	  s    uzz""!U]]+LMM
 !U[[!   s+	AU^^4	5!! 
6r(   c                     t        |t        j                  t        j                  f      st	        d      d }t        | t        j
                  t        j                  f      rd S |S )Nzshift must be an integerc                    t        j                  |       }t        j                  |j                  |j                        }|j
                  }t        |j                        D ]&  }||z   |j                  z  }||   |j
                  |<   ( |S r  )rd   r  r   r   r   r   r5   r   )r0   shiftrg   r   arr_flatr1   r   s          r)   np_roll_implznp_roll.<locals>.np_roll_impl	  sn    jjmhhsyy		2 88sxxAu9(C$QKCHHSM ! 
r(   c                 ,    t        j                  |       S r/   r  )r0   r  s     r)   r  znp_roll.<locals>.<lambda>	  s    

1r(   )rW   r   r   r   r   r   )r0   r  r  s      r)   np_rollr  	  sO    eemmU]];<455
 !ellEMM23--r(      c                    d}|}| ||dz
     kD  r|S | |d   k  ry|dk  r'd}||k  r| ||   k\  r|dz  }||k  r	| ||   k\  r|dz
  S ||dz
  kD  r|dz
  }|dk  rd}| ||   k  r7| ||dz
     k  r'|dz
  }|t         kD  rg| ||t         z
     k\  rX|t         z
  }nN|dz
  S | ||dz      k  r|S | ||dz      k  r|dz   S |dz   }||t         z
  dz
  k  r| ||t         z      k  r	|t         z   }||k  r!|||z
  dz	  z   }| ||   k\  r|dz   }n|}||k  r!|dz
  S )Nr   r,   rc  r  r}   r~   )LIKELY_IN_CACHE_SIZE)keyrg   lengthguessiminimaxr1   imids           r)   binary_search_with_guessr  	  s    DD S!_	s1v {&jSCF]FA &jSCF]1uvz
qy SZUQY19D ++3u';;<<33 19 UQYL S^#qy  qyV&::Q>?s5+?#?@@ #77D +t)*#d)!8DD + !8Or(   c                 v	   t        j                  |       }t        j                  |      }t        j                  |      }t        |      dk(  rt        d      t        |      t        |      k7  rt        d      |j                  dk(  r%t        j
                  |j                  |d   |      S t        j                  |j                  |      }|j                  }t        |      }	|d   }
||	dz
     }|	dk(  rd|d   }|d   }t        |      D ]J  }|j                  |   }||k  r|
|j                  |<   '||kD  r||j                  |<   <||j                  |<   L |S d}|	|k  rt        j                  |	dz
  |      }nt        j                  d|      }|j                  ryt        |	dz
        D ]h  }d||dz      ||   z
  z  }||dz      j                  ||   j                  z
  |z  }||dz      j                  ||   j                  z
  |z  }|d|z  z   ||<   j t        |      D ]  }|j                  |   }t        j                  |      r|}d}|d|z  z   |j                  |<   Bt        |||	|      }|d	k(  r|
|j                  |<   e||	k(  r||j                  |<   z||	dz
  k(  r||   |j                  |<   ||   |k(  r||   |j                  |<   |j                  r||   }ncd||dz      ||   z
  z  }||dz      j                  ||   j                  z
  |z  }||dz      j                  ||   j                  z
  |z  }|d|z  z   }|j                  |||   z
  z  ||   j                  z   }t        j                  |      rq|j                  |||dz      z
  z  ||dz      j                  z   }t        j                  |      r1||   j                  ||dz      j                  k(  r||   j                  }|j                  |||   z
  z  ||   j                  z   }t        j                  |      rq|j                  |||dz      z
  z  ||dz      j                  z   }t        j                  |      r1||   j                  ||dz      j                  k(  r||   j                  }|d|z  z   |j                  |<    |S )
Nr   array of sample points is empty#fp and xp are not of the same size.r,   
fill_valuer   r  ro  r   rc  )rd   r  rH   r   r   r   r   r   r5   r   r   r"  r0  r  )r  xpfpr   dzr  dydreslenxlenxplvalrvalxp_valfp_valr1   x_valr  slopesinv_dxr   r"  slopes                         r)   np_interp_impl_complex_innerr  	  sh    
AB	BB	BB
2w!|:;;
2w#b'>??	ww!|wwrxxBqE??88BHHE*D77DGEa5Deai=DzAAtAGGAJEv~#		!#		!%		! V KC  D=XXuqy7FXXau-F;;519%bQi"Q%/01q5	A3v=1q5	A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 zzURU]3bejj@88D> ::AE):;bQinnLDxx~"Q%**1q5	*F!!uzzzzURU]3bejj@88D> ::AE):;bQinnLDxx~"Q%**1q5	*F!!uzz#b4i/		!a d Kr(   c                    t        j                  | t         j                        }t        j                  |t         j                        }t        j                  |t         j                        }t        |      dk(  rt	        d      t        |      t        |      k7  rt	        d      |j
                  dk(  r%t        j                  |j                  |d   |      S t        j                  |j                  |      }|j
                  }t        |      }	|d   }
||	dz
     }|	dk(  rd|d   }|d   }t        |      D ]J  }|j                  |   }||k  r|
|j                  |<   '||kD  r||j                  |<   <||j                  |<   L |S d}|	|k  r|dd  |d d z
  |dd  |d d z
  z  }nt        j                  d|      }t        |      D ]  }|j                  |   }t        j                  |      r||j                  |<   8t        |||	|      }|dk(  r|
|j                  |<   [||	k(  r||j                  |<   p||	dz
  k(  r||   |j                  |<   ||   |k(  r||   |j                  |<   |j
                  r||   }n||dz      ||   z
  ||dz      ||   z
  z  }||||   z
  z  ||   z   |j                  |<   t        j                  |j                  |         s||||dz      z
  z  ||dz      z   |j                  |<   t        j                  |j                  |         s_||   ||dz      k(  so||   |j                  |<    |S )Nr  r   r  r  r,   r  rc  )rd   r  r   rH   r   r   r   r   r   r5   r   r0  r  )r  r  r  r   r  r  r  r  r  r  r  r  r  r  r1   r  r  r  r  s                      r)   np_interp_impl_innerr  d
  s    
ARZZ	(B	Bbjj	)B	Bbjj	)B
2w!|:;;
2w#b'>??	ww!|wwrxxBqE??88BHHE*D77DGEa5Deai=DzAAtAGGAJEv~#		!#		!%		! n K[  D=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)#(EBq1uI,=#>AE#JDIIaLxx		!-"Q%2a!e92D')!u		!G J Kr(   c                 t  	 t        |d      r|j                  dkD  rt        d      t        |d      r|j                  dkD  rt        d      d}t        |      }t	        j
                  |t        j                        rt        |      t        |      }t	        j                  |t        j                        t	        j
                  t        j                        rt        	nt        		fd}	fd}t        | t        j                        r't        | t        j                        rt        |      |S |S )Nr   r,   zxp must be 1Dzfp must be 1Dz:Cannot cast array data from complex dtype to float64 dtypec                      | ||      S r/   r'   r  r  r  r   r   s      r)   np_interp_implz!np_interp.<locals>.np_interp_impl
  s    QB&&r(   c                 4     | ||      j                   d   S r   )r   r  s      r)   np_interp_scalar_implz(np_interp.<locals>.np_interp_scalar_impl
  s    QB&++A..r(   )r~  r   r   r  rd   r  r  result_typer   r  r  rW   r   r   r   )
r  r  r  complex_dtype_msgxp_dtfp_dtr  r  r   r   s
           @@r)   	np_interpr  
  s     r6rww{/**r6rww{/** 	E  BE	}}UB../+,,BENN5"**-E	}}UB../,$'/ !U\\"a'/00$$r(   c                     | j                   dk(  sJ | j                  \  }}t        j                  |df| j                        }t        |      D ]&  }t        j                  | |d d f         |z  ||df<   ( |S )Nr~   r,   r  r   )r   r   rd   r   r   r5   r  )r0   r   r  r   r1   s        r)   row_wise_averager  
  sn    66Q;;77DAq
((Aq6
)C1XFF1QT7Oa'AqD	  Jr(   c                    ||rd}nd}| j                   d   |z
  }t        |d      }| t        |       z  } t        j                  | t        j
                  | j                              }|t        j                  d|      z  }|S )Nr   r,   r   )r   r3  r  rd   dotr   Tr  )Xbiasddoffactrh   s        r)   np_cov_impl_innerr  
  s     |DD 771:D tS>D 	!	A 	q"''!##,A4	  AHr(   c                       y r/   r'   r'   r(   r)   _prepare_cov_input_innerr    r_  r(   c                 >    |d t         j                  fv rd }|S d }|S )Nc                 ^    t        j                  t        |             }|s|j                  }|S r/   )rd   
atleast_2drS  r  )r   r  rowvarr   m_arrs        r)   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_inner  s%    MM(1+.ELr(   c                    t        j                  t        |             }t        j                  t        |            }|s<|j                  d   dk7  r|j                  }|j                  d   dk7  r|j                  }|j                  \  }}|j                  \  }}	||	k7  rt        d      t        j                  ||z   |f|      }
||
d |d d f<   ||
| d d d f<   |
S )Nr   r,   z$m and y have incompatible dimensionsr  )rd   r  rS  r   r  r   r   )r   r  r  r   r  y_arrm_rowsm_colsy_rowsy_colsr   s              r)   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_inner  s    MM(1+.EMM(1+.E
 ;;q>Q&!GGE;;q>Q&!GGE"[[NFF"[[NFF !GHH ((FVOV4EBC#C
O$C!Jr(   ra  )r   r  r  r   r  s        r)   _prepare_cov_input_implr    s.    T5::	D $#5	4 $#r(   c                 b    | j                   dk(  r | j                  d   dk(  rd}t        |      y y )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   rL  )r   r   s     r)   _handle_m_dim_changer  ;  s6    vv{qwwqzQ? 3	 '{r(   c                     | S r/   r'   r  s    r)   r  r  D  s    qr(   c                    t         j                  }t        | t        j                        rt        | j                        }|S t        | t        j                  t        j                  f      rt        |       }|S t        | t        j                  t        j                  f      rt               }| D ]?  }t        |d      r |D cg c]  }|j                  |       c} /|j                  |       A t        |      dkD  r+t        j                  |D cg c]  }t        |       c} }|S t        |      dk(  rt        |j!                               }|S c c}w c c}w )Nr.  r,   )rd   r   rW   r   r   r   r   r   r   rI   rZ   setr~  addrH   r  r   )
array_likearray_like_dtcoltypesr   ri   tys         r)   r  r  G  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   EEc                    t        | t        j                        r*| j                  dkD  rt	        dj                  |            y t        | t        j                        ryt        | j                  d   t        j                        rQt        | j                  d   j                  d   t        j                        rdj                  |      }t	        |      y y y )Nr~   z{0} has more than 2 dimensionsr   )rW   r   r   r   r!   formatr  r  )r  namer   s      r)   check_dimensionsr  \  s    *ekk*??Q !A!H!H!NOO 	J	/jnnQ'8*..+//2ENNC6==dC$S)) D 9 
0r(   c                 |    t        j                  |       st        d      | t        |       z
  dk7  rt        d      y )Nz)Cannot convert non-finite ddof to integerr   zddof must be integral value)rd   r  r   r  )r  s    r)   _handle_ddofr  g  s<    ;;tDEEc$i1677 r(   c                     | S r/   r'   r  s    r)   r  r  o  s    ar(   c                 >     ||         ||       t        | |||      S r/   )r  )r   r  r  r   r  _DDOF_HANDLER_M_DIM_HANDLERs          r)   _prepare_cov_inputr
  r  s%     1$#Aq&%88r(   c                 T   |d t         j                  fv }t        | t         j                        r| j                  dk(  r|S t        | t         j
                        r_t        d | j                   D              r|S t        | j                         dk(  r)t        | j                   d   t         j
                        r|S t        | t         j                  t         j                  f      r|S t        | t         j                        r*t        | j                  d   t         j                        s|ryy)Nr,   c              3   p   K   | ].  }t        |t        j                  t        j                  f       0 y wr/   )rW   r   r   r   ).0r  s     r)   	<genexpr>z)scalar_result_expected.<locals>.<genexpr>  s,      /-1 !ellEMM:;-s   46r   TF)r   rb  rW   r   r   	BaseTuplers  rH   r   r   r  r  )mandatory_inputoptional_inputopt_is_nones      r)   scalar_result_expectedr  z  s     T5::$66K/5;;/O4H4HA4M/5??3 /'--/ /O))*a/44Q7I""/ELL%--#@A/5>>2?..q15>>Br(   c                     t        j                  t        j                  |       dkD  t        j                  |       |       S r  )rd   r  fabssignr  s    r)   
_clip_corrr    s)    88BGGAJNBGGAJ22r(   c                 f    t        | j                        }t        | j                        }|d|z  z   S )Nro  )r  r   r"  )r  r   r"  s      r)   _clip_complexr    s-    affDaffD"t)r(   c                 .  	
 t        | d       t        |d       |d t        j                  fv rt        	n]t	        |t        j
                  t        j                  f      rt        	n,t	        |t        j                        rt        	nt        d      t        
t	        | t        j                        rt        
t        |       }t        |      }t        j                  ||t        j                         d	
fd	}	 	 d	
fd	}t#        | |      r|S |S )Nr   r  z)ddof must be a real numerical scalar typec           	      L   t        | |||      j                        }t        j                  t        j                  |j
                        dk(        rBt        j                  |j
                  d   |j
                  d   ft        j                        S t        |||      S )Nr   r  )	r
  r  rd   r  r_  r   r   r   r  )	r   r  r  r  r  r  r  r	  r   s	         r)   np_cov_implznp_cov.<locals>.np_cov_impl  s    q!VUD--//5ve} 	
 66"((177#q()77AGGAJ
3!&( ( %Qd33r(   c           	      .   t        | |||	      j                  	      }t        j                  t        j                  |j
                        dk(        rt        j                  }nt        |||      j                  d   }t        j                  |      S r   )	r
  r  rd   r  r_  r   r   r  r   )
r   r  r  r  r  r  variancer  r	  r   s
          r)   np_cov_impl_single_variablez+np_cov.<locals>.np_cov_impl_single_variable  sy    q!VT5--//5ve} 	
 66"((177#q()vvH(D$7<<Q?Hxx!!r(   NTFN)r  r   rb  _handle_ddof_noprW   r   r   r   r  r   _handle_m_dim_nopr   r  r  rd   r  r   r  )r   r  r  r  r  m_dty_dtr  r  r  r	  r   s            @@@r)   np_covr%    s     QQ ejj!!(dU]]EMM:;,Mekk*(MIJJ
 'N!U[[!- 1D1DNN4rzz2E4 BG)-
" a#**r(   c                     t        |       }t        |      }t        j                  ||t        j                        }|t        j                  k(  rt
        nt        dfd	}dd}t        | |      r|S |S )Nc                 (   t        j                  | ||      }t        j                  |      }t        j                  |j                        }t        |j                  d         D ]$  }||d d fxx   |z  cc<   |d d |fxx   |z  cc<   &  |      S r   )rd   covdiagsqrtr   r5   r   )r  r  r  rh   r  stddevr1   clip_fns          r)   np_corrcoef_implz%np_corrcoef.<locals>.np_corrcoef_impl  sz    FF1a GGAJqwwqz"AadGvGadGvG # qzr(   c                 :    t        j                  | ||      }||z  S r/   )rd   r(  )r  r  r  rh   s       r)    np_corrcoef_impl_single_variablez5np_corrcoef.<locals>.np_corrcoef_impl_single_variable  s    FF1a 1ur(   NT)r  rd   r  r   
complex128r  r  r  )	r  r  r  r  r$  r   r-  r/  r,  s	           @r)   np_corrcoefr2    sg     1D1DNN4rzz2E	 a#//r(   c                     t        | t        j                  t        j                  f      }t	        |       r|sd }|S ddfd}|S )Nc                 
   t        j                  |       }|j                  dk(  r%t        j                  dt        j
                        S t        j                  t        j                  t        j                  |                  S )Nr'   )r   r,   r  )	rd   r  r   r  r   r7   rd  vstackr6  rT  s     r)   rl  znp_argwhere.<locals>.impl  sO    **Q-CyyBxxejj99<<		"**S/ :;;r(   )r   r   )r,   r   c                     | 0t        |       r%t        j                  t        j                        S t        j                  t        j                        S r  )rw  rd   r  r   r7   )r0   falseishtrueishs    r)   rl  znp_argwhere.<locals>.impl  s8    }axxuzz::xx

;;r(   )rW   r   r   r   r   )r0   
use_scalarrl  r7  r8  s      @@r)   np_argwherer:     sL    
 Aemm<=J:	< K 	< Kr(   c                 ,    t        |       rd }|S d }|S )Nc                     t        j                  |       }t        j                  t        j                  |            d   S r   )rd   r  r6  re  rT  s     r)   rl  znp_flatnonzero.<locals>.impl  s+    **Q-C::bhhsm,Q//r(   c                     | t        |       rdg}nt        d      D cg c]  }| }}t        j                  |t        j
                        S c c}w )Nr   r  )rw  r5   rd   r_  r   r7   )r0   rC   r  s      r)   rl  znp_flatnonzero.<locals>.impl!  sF    }as#(8,8a8,88D

33 -s   	Ar  )r0   rl  s     r)   np_flatnonzeror>    s$     	0 K	4 Kr(   c                    | j                   dk(  rA| j                  d   }| j                  d   }d|z   }|r	||z  }||fS |t        ||      z  }||fS t        j                  | j                        }t        j
                  t        j                  |      dk(        st        d      dt        j                  |d d       j                         z   }|j                         }||fS )Nr~   r   r,   z/All dimensions of input must be of equal lengthrc  )r   r   r  rd   r_  rs  rl  r   r   r  r   )r0   wrapr   r  steprq  r   s          r)   _fill_diagonal_paramsrB  +  s    vv{GGAJGGAJ1ua%C 9 c!Qi-C 9 !vvbggen)*NOOBJJuSbz*//11jjl9r(   c                 d    t        | |      \  }}t        d||      D ]  }|| j                  |<    y r   )rB  r5   r   )r0   r   r@  rq  rA  r1   s         r)   _fill_diagonal_scalarrD  A  s2    %a.IC1c4 q	 !r(   c                     t        | |      \  }}d}t        |      }t        d||      D ]  }||   | j                  |<   |dz  }||z  }  y r  )rB  rH   r5   r   )r0   r   r@  rq  rA  ctrv_lenr1   s           r)   _fill_diagonalrH  I  sV    %a.IC
CHE1c4 Hq	qEk !r(   c                 :   t        j                  | j                        }|j                  }|j                  }t        j
                  t        j                  |             s0t        j
                  ||k        st        j
                  ||kD        rt        d      y Nz'Unable to safely conform val to a.dtype)rd   iinfor   r  r3  r  r  r   )r0   r   rK  v_minv_maxs        r)   _check_val_intrN  U  sp    HHQWWEIIEIIE 
vvr{{3 BFF3;$7266#+;NBCC <Or(   c                    t        j                  | j                        }|j                  }|j                  }|t        j
                  |         }t        j                  ||k        st        j                  ||kD        rt        d      y rJ  )rd   finfor   r  r3  r  r  r   )r0   r   rP  rL  rM  finite_valss         r)   _check_val_floatrR  `  sn    HHQWWEIIEIIE bkk#&'K	vvkE!"bff[5-@&ABCC 'Br(   c                     | S r/   r'   r  r  s     r)   r  r  m  s    1r(   c                      y r/   r'   r  s    r)   rS  rS  p  r_  r(   c                    t        | t        j                        rd S t        | t        j                  t        j                  f      rd S t        | t        j
                  t        j                  f      rt        |       fdS y )Nc                     | S r/   r'   r  s    r)   r  z_asarray_impl.<locals>.<lambda>w  s    r(   c                 ,    t        j                  |       S r/   r^  r  s    r)   r  z_asarray_impl.<locals>.<lambda>y  s    !r(   c                 4    t        j                  | g      S r  r^  r  r  s    r)   r  z_asarray_impl.<locals>.<lambda>|  s    1#R0r(   )rW   r   r   r  rZ   r   r   r   rZ  s    @r)   _asarray_implr[  t  s_    !U[[!	A4	5$$	Aemm4	5a[00 
6r(   c                    | j                   dkD  rt        | j                  t        j                        rt
        n1t        | j                  t        j                        rt        nt        dfd	}dfd	}t        |t        j                  t        j                  t        j                  f      r|S t        |t        j                  t        j                  t        j                  f      r|S y d| j                   z  }t        |      )Nr,   c                 d    t        |      j                         } | |       t        | ||       y r/   )rS  r  rD  r0   r   r@  tmpvalcheckers       r)   scalar_implz%np_fill_diagonal.<locals>.scalar_impl  s+    c]**,FAv!!S$/r(   c                 d    t        |      j                         } | |       t        | ||       y r/   )rS  r  rH  r^  s       r)   non_scalar_implz)np_fill_diagonal.<locals>.non_scalar_impl  s+    c]**,FAv1fd+r(   z4The first argument must be at least 2-D (found %s-D)F)r   rW   r   r   r   rN  r   rR  
_check_nopr   rZ   r  r   r   )r0   r   r@  ra  rc  r   r`  s         @r)   np_fill_diagonalrf    s     	vvz aggu}}-$G-&G G	0
	,
 cEKKFGekk5>>5;;GH"" I EqvvM#r(   c                 "    d| j                   fz  S )Nzllvm.rint.f%d)r   )tps    r)   _np_round_intrinsicri    s    bkk^++r(   c                       ||      }d }||fS )Nc                 :   |\  }|j                   d   }| j                  |      }|j                  }t        j                  j                  ||g      }t        j                  ||t        |            }	|j                  |	|f      }
t        | ||j                  |
      S r   )r=   r3   modulellvmliteirFunctionTyper   get_or_insert_functionri  callr   rq   )rt   r;   ru   r=   r   rh  lltyrl  fntyr  rv   s              r)   rG   z _np_round_float.<locals>.codegen  s    XXa[%%b){{''tf5++FD,?,CEll2v&!'7COOSIIr(   r'   )	typingctxr   ru   rG   s       r)   _np_round_floatru    s    
c(C	J <r(   c                 $   t        j                  |       st        j                  |       r| S |dk\  rG|dkD  rd|dz
  z  }d}nd|z  }d}| |z  |z  }t        j                  |      r| S t        |      |z  |z  S d| z  }| |z  }t        |      |z  S )Nr      g      $@gMDr  )r  r  r0  ru  )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                 L   t        |       st        d      t        |t        j                        st        |      sd}t        |      t        | t        j                  t        j                  t        j                  f      rrt        |      r`t        | t        j                        rd	d}|S t        | t        j                        rd	d}|S t        | t        j                        rd	d}|S d	d}|S y t        | t        j                        rt        |      rd	d}|S d	d}|S y )
Nz#The argument "a" must be array-likez5The argument "out" must be an array if it is providedc                 :    |dk(  rt        |       S t        | |      S r   )ru  r{  r0   decimalsr   s      r)   rl  zimpl_np_round.<locals>.impl  s!    1}.q11,Q99r(   c                 :    |dk(  r| S t        t        | |            S r   )r  r{  r~  s      r)   rl  zimpl_np_round.<locals>.impl  s     1} "=H#=>>r(   c                     |dk(  r+t        | j                        }t        | j                        }n,t        | j                  |      }t        | j                  |      }t	        ||      S r   )ru  r   r"  r{  r   )r0   r  r   r   r"  s        r)   rl  zimpl_np_round.<locals>.impl  sR    1}.qvv6.qvv6,QVVX>,QVVX>"4..r(   c                 8    t        j                  | |      |d<   |S r   )rd   roundr~  s      r)   rl  zimpl_np_round.<locals>.impl  s    !X.A
r(   c                 Z    t        j                  |       }t        j                  | ||      S r/   )rd   r  r  r~  s      r)   rl  zimpl_np_round.<locals>.impl  s#    mmA&xx8S11r(   c                     | j                   |j                   k7  rt        d      t        j                  |       D ]  \  }}t        j                  ||      ||<     |S )Nzinvalid output shape)r   r   rd   r  r  )r0   r  r   r  r   s        r)   rl  zimpl_np_round.<locals>.impl  sN    77cii'$%;<<"$.."3JE3!##x!8CJ #4
r(   r9  )	r   r   rW   r   r   r   r   r   r   )r0   r  r   r   rl  s        r)   impl_np_roundr    s     A?@@sEKK(K,<E#!ekk5==%--@As!U[[):
 Au}}-?
 Au}}-/  K . 
Au{{	#s2 K K 
$r(   c                     t        | t        j                        rd }|S t        | t        j                        rd }|S t	        d      )Nc                 f    | dk(  rd} | t         j                  z  } t        j                  |       | z  S )Nr   g#B;)rd   pisinr  s    r)   rl  zimpl_np_sinc.<locals>.impl  s-    DyJA66!9q= r(   c                     t        j                  |       }t        j                  |       D ]  \  }}t        j                  |      ||<    |S r/   )rd   r  r  sinc)r  r   r  r   s       r)   rl  zimpl_np_sinc.<locals>.impl  s=    --"C nnQ/
sWWS\E
 0Jr(   z,Argument "x" must be a Number or array-like.)rW   r   r   r   r!   r  s     r)   impl_np_sincr    sB    !U\\"	!
 	Au{{	#	
 KLLr(   c                    t        dt        j                  z        t        | t        j
                        rdfd	}|S t        | t        j                        rY| j                  }t        |t        j                        r|j                  nt        |t        j                        r|ny dfd	}|S t        d|        )N   c                     |r-t        j                  | j                  | j                        z  S t        j                  | j                  | j                        S r/   )rd   arctan2r"  r   )r,  degdeg_mults     r)   rl  zov_np_angle.<locals>.impl)  s=    zz!&&!&&1H<<zz!&&!&&11r(   c                     t        j                  |       }t        j                  |       D ]  \  }}t        j                  ||      ||<     |S r  )rd   r  r  angle)r,  r  r   r  r   	ret_dtypes        r)   rl  zov_np_angle.<locals>.impl9  sC    --3C nnQ/
sXXc3/E
 0Jr(   z6Argument "z" must be a complex or Array[complex]. Got rd  )r  rd   r  rW   r   r   r   r   r   r
  r   r!   )r,  r  rl  r   r  r  s       @@r)   ov_np_angler  #  s    S255[!H !U\\"	2
 	Au{{	#eU]]+..Iu{{+I	
  778c; < 	<r(   zarray.nonzeroc                 ~   |j                   d   }|j                  }|j                  }|j                  } t	        |      | ||d         }t        j                  ||j                        }	t        j                  ||j                        }
|j                  }|j                  }| j                  t        j                  d      }| j                  t        j                  d      }t        j                  ||      }t        j                  ||	|j                         5 }t        j"                  | |||	|
||      }t%        | |||      }| j'                  ||j                  |      }|j)                  |      5  |j+                  |j-                  |j/                  |      |      |       d d d        d d d        |j/                  |      f}t1        |      D cg c]  }t3        | |||      j5                           }}|D cg c]  } t	        |      | ||       }}|D cg c]  }|j                   }}t        j                  ||      }t        j                  ||	|j                         5 }t        j"                  | |||	|
||      }t%        | |||      }| j'                  ||j                  |      }|j)                  |      5  |s|f}|j/                  |      }t1        |      D ]3  }t        j"                  | |||   |dd|g      }t7        | ||||   |       5 |j+                  |j-                  ||      |       d d d        d d d        | j9                  ||j                  |      }t;        | ||j                  |      S # 1 sw Y   xY w# 1 sw Y   xY wc c}w c c}w c c}w # 1 sw Y   oxY w# 1 sw Y   sxY w)Nr   r,   r'   C)r=   rq   r   r.  r   r   unpack_tupler   stridesrC   layoutr6   r   r7   alloca_once_value	loop_nestr   get_item_pointer2r   is_trueif_thenstorer  loadr5   r   	_getvaluer   
make_tupler   )rt   r;   ru   r=   arytyr   outarytynoutsrm  r   r  rC   r  rj   rC  r.  indicesptrr   nz	out_shaper1   outsr   outarys	out_datasr  curr?   s                                r)   array_nonzeror  D  sA    HHQKEOOE{{HKKE
*U
GWd1g
6C  #))4E""7CKK8G88D\\F 

A.D


uzz1
-C%%gt4E			7E499	5''$w(.9%5__Wekk37__R MM'++gll5&93?G ! 
6 e$&I5\#! 7GXyAKKM! 	 #FJKds#z(#GWc:dGK%,-WcWI- %%gt4E			7E499	5''$w(.9%5__Wekk37__R ',,u%C5\//)A,09203cU< 7GXwqz3G	 "
 MM'++c3/7 ! 
6$ 

Wcoot
<CGWcoosCC? !  
6	5#K- !  
6	5s]   AN12M>#N#N;NN"'AN3?A:N'9N3>N	NN'N0	,N33N<c                       fd}|S )Nc                     t        j                  |      j                        }t        j                  |      j                        }| r|S |S r/   )rd   r  r  )	conditionr  r  x_y_r   s        r)   rl  z)_where_zero_size_array_impl.<locals>.impl  s@    ZZ]!!%(ZZ]!!%(r&B&r(   r'   )r   rl  s   ` r)   _where_zero_size_array_implr  ~  s    ' Kr(   c                 ^    t        j                  |       D ]  \  }}|r||   n||   ||<    |S r/   )rd   r  )condr  r  rv   r   rh   s         r)   _where_generic_inner_implr    s3    ..&Q1S6AcFC 'Jr(   c                     | j                   }|j                   }|j                   }|j                   }t        | j                        D ]  }||   r||   n||   ||<    |S r/   )r   r5   r   )	r  r  r  rv   cfxfyfrfr1   s	            r)   _where_fast_inner_implr    sW    	B	
B	
B	B499A1BqE1 Jr(   c                 *     dhdhfv  fd}|S )Nr  Fc                 4   t        j                  |       t        j                  |      t        j                  |      }}}t        j                  |j                  |j                  |j                        }t        j                  ||      }t        j                  ||      }t        j                  ||      }	dk(  r(t        j
                  |d d d         j                  }
nt        j
                  |      }
rt        |||	|
      S t        |||	|
      S )Nr  rc  r  )	rd   r  r  r   r  r   r  r  r  )r  r  r  cond1x1y1r   cond_r  r  rv   r   r  use_faster_impls              r)   rl  z!_where_generic_impl.<locals>.impl  s    

9-rzz!}bjjm2r##EKK288Du-__R'__R'S=((52;e466C((5.C)%R==,UBC@@r(   r'   )r   r  rl  r  s   `` @r)   _where_generic_implr    s"    #.OA" Kr(   c                 <    t        |       sd}t        |      d }|S )N+The argument "condition" must be array-likec                 H    t        j                  |       j                         S r/   )rd   r  r6  )r  s    r)   where_cond_none_nonez)ov_np_where.<locals>.where_cond_none_none  s    zz)$,,..r(   )r   r!   )r  r   r  s      r)   ov_np_wherer    s%    I&;S!!/r(   c                    t        |       sd}t        |      t        |      st        |      rt        d      t        ||fd      D ],  \  }}t        |      rd}t        |j	                  |             t        | t        j                        }t        |t        j                        }t        |t        j                        }|rt        |      }	t        |      }
t        j                  |	|
      }d }t        | ||fD cg c]
  } ||       c}      }|rt        |      S | j                  }|r=|r;|j                  |j                  cxk(  r| j                  k(  rn n|j                  }nd}t        ||      S d }|S c c}w )Nr  z"Argument "x" or "y" cannot be NonerT  z0The argument "{}" must be array-like if providedc                     t        | t        j                        xs+ t        | t        j                        xr | j                  dk(  S r   )rW   r   r   r   r   )args    r)   check_0_dimz$ov_np_where_x_y.<locals>.check_0_dim  s7    c5<<0 @3,>Q@r(   r  c                     t        j                  t        j                  |       t        j                  |      t        j                  |            S r/   )rd   r  r  )r  r  r  s      r)   rl  zov_np_where_x_y.<locals>.impl  s.    88BJJy12::a="**Q-PPr(   )r   r!   r   zipr  rW   r   r   r  rd   r  rs  r  r  r  )r  r  r  r   r  r  cond_arrr  r  r  r$  r   r  r0   special_0_caser  rl  s                    r)   ov_np_where_x_yr    s]   I&;S!! 1~QABB!Q,	T$DC D!122 -
 )U[[1Hq%++&Eq%++&Eq!q!  t,	@ y!Q6GH6Gk!n6GHI.u55!!Uxx1887y'7'77"5&11	Q Is   Fc                     d }|S )Nc                     | j                   S r/   )r   rk  s    r)   np_real_implznp_real.<locals>.np_real_impl      xxr(   r'   )r   r  s     r)   np_realr         r(   c                     d }|S )Nc                     | j                   S r/   )r"  rk  s    r)   np_imag_implznp_imag.<locals>.np_imag_impl  r  r(   r'   )r   r  s     r)   np_imagr    r  r(   c                 B    t        | t        j                        sy d }|S )Nc                 F    t        j                  |       D ]	  }||k(  s	 y yr   )rd   re   )rg   r  r  s      r)   np_contains_implz%np_contains.<locals>.np_contains_impl  s#    3ACx   r(   r   )rg   r  r  s      r)   np_containsr    s     c5;;' r(   c                 \    t        |       st        d      t        |      rdd}|S dd}|S )Nz3The argument to np.count_nonzero must be array-likec                 \    t        j                  |       }t        j                  |dk7        S r   )rd   re  r  r0   r\   arr2s      r)   rl  znp_count_nonzero.<locals>.impl  s"    88A;D66$!)$$r(   c                 n    | j                  t        j                        }t        j                  ||      S )N)r\   )r  rd   r   r  r  s      r)   rl  znp_count_nonzero.<locals>.impl  s%    88BHH%D66$T**r(   r/   )r   r   r   )r0   r\   rl  s      r)   np_count_nonzeror    s6    AOPP4	% 	+ r(   c                     | S r/   r'   r  s    r)   r  r  "  s    r(   c                 ,    t        j                  |       S r/   r  r  s    r)   r  r  #  s    

1r(   c                    t        | t        j                  t        j                  f      st	        d      t        |t        j                  t        j                  t        j
                  f      r]t        |t        j
                        rt        n5t        |j                  t        j                        st	        d      t        fd}|S t        |t        j                        st	        d      d }|S )Nz)arr must be either an Array or a Sequencezobj should be of Integer dtypec                     t        j                  t        j                  |             } | j                  }t        j                  |t         j
                        } |      }d||<   | |   S )Nr  F)rd   re  r  r   onesr   )rg   rg  r  keephandlers       r)   np_delete_implz!np_delete.<locals>.np_delete_impl6  sR    ((2::c?+CA771BHH-D#,CDIt9r(   c                     t        j                  t        j                  |             } | j                  }|}|| k  s||k\  rt	        d      |dk  r||z  }t        j
                  | d | | |dz   d  f      S )Nz"obj must be less than the len(arr)r   r,   )rd   re  r  r   
IndexErrorconcatenate)rg   rg  r  poss       r)   np_delete_scalar_implz(np_delete.<locals>.np_delete_scalar_implD  sw    ((2::c?+CACqbC1H !EFF aq>>3t9c#'(m"<==r(   )
rW   r   r   r  r   	SliceTypenp_delete_handler_isslicer   r   np_delete_handler_isarray)rg   rg  r  r  r  s       @r)   	np_deleter  &  s    
 cEKK89EFF#U^^U__EFcEOO-/Gcii7!"BCC/G	  #u}}->??	> %$r(   c                 b    t        | t        j                        r| j                  dk(  ry dd}|S )Nr   c                    |dk(  r| j                         S |dk  rt        d      | j                  d   }| j                  d d t        ||z
  d      fz   }t	        j
                  || j                        }|j                  dk(  r|S | j                  d|f      }|j                  d|j                  d   f      }t	        j
                  || j                        }t        |j                  d         D ]m  }t        |dz
        D ]  }	|||	dz   f   |||	f   z
  ||	<    t        d|      D ])  }
t        ||
z
  dz
        D ]  }	||	dz      ||	   z
  ||	<    + |d ||z
   ||<   o |S )Nr   z"diff(): order must be non-negativerc  r,   )
r  r   r   r3  rd   r   r   r   rf  r5   )r0   r  r   r  r   a2out2workmajorr1   niters              r)   	diff_implznp_diff_impl.<locals>.diff_implZ  si   6668Oq5ABBwwr{GGCRLCq!$4#66	hhy!''*88q=J YYDz"{{B		"./xxagg&288A;'E4!8_UAE\*Rq\9Q % q!te|a/0A"1q5kDG3DG 1 % yq/DK ( 
r(   r~  )rW   r   r   r   )r0   r  r  s      r)   np_diff_implr  U  s*    a%1> r(   c                     t        |       rt        |      st        d      t        j                  t        j                  f}t        | |      rt        ||      rd }|S d }|S )Nz3Both arguments to "array_equals" must be array-likec                     | |k(  S r/   r'   )a1r  s     r)   rl  znp_array_equal.<locals>.impl  s    8Or(   c                     t        j                  |       }t        j                  |      }|j                  |j                  k(  rt        j                  ||k(        S yr  )rd   r  r   rs  )r  r  r0   r  s       r)   rl  znp_array_equal.<locals>.impl  sA    

2A

2Aww!''!vva1f~%r(   )r   r   r   r   r   rW   )r  r  acceptedrl  s       r)   np_array_equalr  |  s]     R %5b%9OPPu||,H"hJr8$<	 K	 Kr(   c                     t        |       st        |      st        d      t        |t        j                  t
        f      st        d      dd}|S )Nz.intersect1d: first two args must be array-likez5intersect1d: argument "assume_unique" must be booleanc                 h   t        j                  |       } t        j                  |      }|s+t        j                  |       } t        j                  |      }n | j                         } |j                         }t        j                  | |f      }|j                          |dd  |d d k(  }|d d |   }|S )Nr,   rc  )rd   r  r  re  r  sort)ar1ar2assume_uniqueauxr!  int1ds         r)   np_intersects1d_implz0jit_np_intersect1d.<locals>.np_intersects1d_impl  s    jjojjo))C.C))C.C))+C))+Cnnc3Z(
12w#cr("CRr(   rd  r   r   rW   r   r   rw  )r  r  r  r  s       r)   jit_np_intersect1dr    sU    
 S!%5c%:JKKmemmT%:; E F 	F   r(   c                     t        |t        j                        r*|j                  dk7  rt	        dj                  |             y t        |t        j                        st	        dj                  |             y )Nr,   z${0}(): input should have dimension 1z+{0}(): input should be an array or sequence)rW   r   r   r   r!   r  r  )	func_nameseqs     r)   validate_1d_array_liker    si    #u{{#88q= !G"(&"35 5  U^^,J$fY/1 	1 -r(   c                 x   t        d|        t        | j                  t        j                        sy t        |d       |d t        j                  fvr5t        d|       t        j                  t        d        t        d        n(t        j                  t        d        t        d        dfd	}|S )	Nbincount	minlengthc                 H    t        |       t        |      k7  rt        d      y )Nz7bincount(): weights and list don't have the same length)rH   r   r0   r  r  s      r)   validate_inputsz$np_bincount.<locals>.validate_inputs  s)    1vW%  "3 4 4 &r(   c                 $    | |xx   ||   z  cc<   y r/   r'   r   r   r   r  s       r)   
count_itemznp_bincount.<locals>.count_item  s    H$Hr(   c                      y r/   r'   r  s      r)   r   z$np_bincount.<locals>.validate_inputs  s    r(   c                     | |xx   dz  cc<   y r  r'   r"  s       r)   r#  znp_bincount.<locals>.count_item  s    HMHr(   c                 V    
| ||       |dk  rt        d      t        |       }|dkD  r| d   nd}t        d|      D ]$  }| |   dk  rt        d      t        || |         }& t        |dz   |      }t	        j
                  |	      }t        |      D ]  } ||| |   |        |S )Nr   z 'minlength' must not be negativerc  r,   z/bincount(): first argument must be non-negative)r   rH   r5   r3  rd   r  )r0   r  r  r  rz  r1   
out_lengthr   r#  r  r   s           r)   bincount_implz"np_bincount.<locals>.bincount_impl  s    7I.q=?@@FA!2q!Atax  "0 1 1qt$E	  I.
hhz9-qAsAqtW- 
r(   r   )r  rW   r   r   r   r   rb  rd   r   r
   r7   )r0   r  r  r(  r#  r  r   s       @@@r)   np_bincountr)    s    :q)aggu}}-Y,tUZZ((z73 JJ			4 
	4
 
	% 
	% JJ			 
	 
	 
	& r(   c                 8   t        j                  | j                        rt        j                  |j                        rwt        j                  | j                        rt        j                  |j                        S t        j                  |j                        ry| j                  |j                  k  S yt        j                  |j                        ryt        j                  | j                        r9t        j                  |j                        r| j                  |j                  k  S yt        j                  |j                        ry| j                  |j                  k  ry| j                  |j                  k(  r| j                  |j                  k  S yr   )rd   r0  r   r"  r  s     r)   less_than_or_equal_complexr+    s   	xx88AFFxxxx''88AFF#66QVV++ 88AFFxx88AFF#66QVV++ 88AFF#vv#166) vv// r(   c                     t        | t              st        |t              rt        | |      S t        |t        t        j
                  t        j                  f      rt        j                  |      ry| |k  S r0  )	rW   r   r+  r  r   float32r   rd   r0  r  s     r)   _less_than_or_equalr.    sR    !WAw!7)!Q//	Au}}emm<	=88A;6Mr(   c                     t        | t              st        |t              rt        | |      S t        |t        t        j
                  t        j                  f      rt        | |      S | |k  S r/   )rW   r   less_than_complexr  r   r-  r   less_than_floatr  s     r)   
_less_thanr2  &  sQ    !WAw!7 A&&	Au}}emm<	=q!$$q5Lr(   c                 d    t        j                  |       ryt        j                  |      ry| |k  S r  )rd   r/  r  s     r)   _less_then_datetime64r4  1  s)     
xx{	xx{q5Lr(   c                     t        ||        S r/   )r4  r  s     r)   _less_then_or_equal_datetime64r6  >  s    $Q***r(   c                       fd}|S )Nc                 d    ||k  r'|||z
  dz	  z   }| |   } ||      r|dz   }n|}||k  r'||fS r  r'   )r0   key_valrB  rZ  rs  mid_valcmps         r)   rl  z_searchsorted.<locals>.implG  sW    'G"3!9:GjG7G$!A+!  r(   r'   )r;  rl  s   ` r)   _searchsortedr<  C  s    	  Kr(   leftrightc                 F   |t         v sJ | j                  dv rt        }t        }nt        }t
        }|dk(  rt        |      }|}nHt        j                  | t        j                        rt        dk  rt        |      }|}nt        |      }|}t        |      t        |      fS )Nr  r=  )r,      )VALID_SEARCHSORTED_SIDESr  r4  r6  r2  r.  r<  rd   r  inexactr   r
   )np_dtypesiderh  le_impl_cmps         r)    make_searchsorted_implementationrH  X  s    ++++}}"+ v~b!==2::.=73J ""%ED!"%EDE"$4T$:::r(   c                    t        |d|      }|t        vrt        d|       t        |t        j
                  t        j                  f      rt        |j                        }nt        |      }t        j                  t        | j                        |      }t        ||      \  t        |t        j
                        r	dfd	}|S t        |t        j                        rdd}|S dfd	}|S )NrY   z Invalid value given for 'side': c                    t        j                  |j                  t         j                        }|j                  d   }d}t        |       }t        |j                        D ]\  }|j                  |   } 	||      rt        |       }n!d}|t        |       k  r|dz  }nt        |       }|} 
| |||      \  }}|||<   ^ |j                  |j                        S )Nr  r   r,   )	rd   r   r   r7   r   rH   r5   rf  r   )r0   ri   rD  r   last_key_valrB  rZ  r1   r9  rG  rF  s            r)   rl  zsearchsorted.<locals>.impl  s    ((1661C66!9LG!fG166]&&)g.!!fGGQ'1"%a&&#(GWg#F  A #  ;;qww''r(   c                 \    t        j                  |      }t        j                  | ||      S )NrD  )rd   r  searchsorted)r0   ri   rD  s      r)   rl  zsearchsorted.<locals>.impl  s"    

1A??1ad33r(   c                 6     | |dt        |             \  }}|S r   )rH   )r0   ri   rD  rrA   rF  s        r)   rl  zsearchsorted.<locals>.impl  s     Aq#a&)DAqHr(   r=  )r   rA  r   rW   r   r   r  r   r   rd   r  rH  )	r0   ri   rD  side_valv_dtnp_dtrl  rG  rF  s	          @@r)   rN  rN  t  s    t_d3H//  @
KLL!ekk5>>23 {Xagg.5E25(CKE4!U[[!	(> K 
Au~~	&	4 K	 Kr(   c                     t        | t        j                        r'| j                  t        j                  v rt        d      t        d        dfd	}|S )Nzx may not be complexc                 t   t        |       dk(  ry| d   }d}|t        |       k  r$| |   |k(  r|dz  }|t        |       k  r	| |   |k(  r|t        |       k(  ry| |   }||k  r,t        |dz   t        |             D ]  }|}| |   }||kD  s y yt        |dz   t        |             D ]  }|}| |   }||k  s y y)Nr   r,   rc  )rH   r5   )bins
last_valuer1   
next_values       r)   _monotonicityz"np_digitize.<locals>._monotonicity  s     t9> !W
#d)mQ: 5FA #d)mQ: 5 D	>!W

"1q5#d),'
!!W

*	 -
  1q5#d),'
!!W

*	 -
 r(   c                 T    |      }|dk(  rt        d      |rG|dk(  r*t        |      t        j                  |d d d   | d      z
  S t        j                  || d      S |dk(  r*t        |      t        j                  |d d d   | d      z
  S t        j                  || d      S )Nr   z3bins must be monotonically increasing or decreasingrc  r=  rM  r>  )r   rH   rd   rN  )r  rW  r>  monorZ  s       r)   digitize_implz"np_digitize.<locals>.digitize_impl  s    T"19E 
 rz4y2??4":qv#NNNtQV<<rz4y2??4":qw#OOOtQW==r(   rd  )rW   r   r   r   complex_domainr   r
   )r  rW  r>  r]  rZ  s       @r)   np_digitizer_    sP     !U[[!agg1E1E&E011" "H>. r(   c                     t        |t        t        j                  f      r-|d t        j                  fv rt        d      dfd	}|S dd}|S dd}|S )Nr  c                     } }t        j                  |       D ]!  }|j                         }||kD  r|}||k  s |}# t        j                  | |||f      S r/   )rd   re   rf   	histogram)r0   rW  r5   bin_minbin_maxr   ri   r  s          r)   histogram_implz$np_histogram.<locals>.histogram_impl  s^    $IIaLD		A{"#{"# ) ||Atgw-?@@r(   c                    |dk  rt        d      |\  }}||k  st        d      t        j                  |t        j                        }||kD  r|||z
  z  }t        j                  |       D ]h  }|j                         }t        j                  ||z
  |z        }	d|	cxk  r|k  rn n|t        |	      xx   dz  cc<   S||k(  sY||dz
  xx   dz  cc<   j t        j                  |||dz         }
||
fS )Nr   z0histogram(): `bins` should be a positive integerz;histogram(): max must be larger than min in range parameterr,   )
r   rd   r  r7   re   rf   r  r  r  linspace)r0   rW  r5   rc  rd  hist	bin_ratior   ri   r  
bins_arrays              r)   re  z$np_histogram.<locals>.histogram_impl  s    19$ &8 9 9#( ')$ &> ? ? xxbgg.W$ $'(9 :I "		! IIK JJGy'@A=D= QLA-L'\ Na/N !-  [['4!8D
Z''r(   c                    t        |      dz
  }t        |      D ]  }||   ||dz      k  rt        d       |d   }||   }t        j                  |t        j
                        }|dkD  rrt        j                  |       D ]Z  }|j                         }	||	cxk  r|k  sn !d}
|dz
  }|
|k  r!|
|z   dz   dz	  }|	||   k  r|dz
  }n|}
|
|k  r!||
xx   dz  cc<   \ ||fS )Nr,   z-histogram(): bins must increase monotonicallyr   )rH   _ranger   rd   r  r7   re   rf   )r0   rW  r5   nbinsr1   rc  rd  rh  r   ri   lohir  s                r)   re  z$np_histogram.<locals>.histogram_impl  s   IMEE]Aw$q1u+-$ &5 6 6 # 1gG5kG88E277+DqyIIaLD		A"a272 BBr'  "Bw{q0tCy=!$qB!$B r' HMH! )$ :r(   r  N)rW   r  r   r   rb  r  )r0   rW  r5   re  r  s       @r)   np_histogramrq    s_    $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)rt  rv  rw  rs  r3  rz  r  rx  ru  nexpnmantr  r  r  bitsrP  )r  r3  r  rK  c                      t         dk\  ry d t        j                  d      5 d} t        j                  d| t        d       t
        j                  d d d        t              fd       }y # 1 sw Y   xY w)	N)r,      T)recordz(`np.MachAr` is deprecated \(NumPy 1.22\)alwaysz.*numba.*arraymath)messagecategoryrl  c            	                 } t        t        D cg c]  }t        | |       c}      rLd   }t        j                  |j
                  j                  d   t        |j                  |j                         fd}|S c c}w )Nr   c                      t          S r/   )r  )_mach_ar_datas   r)   rl  z1_gen_np_machar.<locals>.MachAr_impl.<locals>.implu  s    =))r(   )
rm  _mach_ar_supportedr   warningswarn_explicitr  r=   r"   filenamelineno)r  r  wmsgrl  r  	np_MachArws       @r)   MachAr_implz#_gen_np_machar.<locals>.MachAr_impli  sx    K6HI6Hwq!}6HIJQ4D""4<<#4#4Q#7#:#'==#';;0
	* Js   B)r   r  catch_warningsfilterwarningsDeprecationWarningrd   r  r   )r   r  r  r  s     @@r)   _gen_np_macharr  \  sr    A		 	 	-9#);'<	> II	 
. i  
.	-s   0A22A;c           	         	 t        | d|       }t        |      }	  ||      }t        |D cg c]  }t        ||       c}      	t        	fd       }|S # t        $ r Y y w xY wc c}w )Nr   c                       S r/   r'   )r  	containerrC   s    r)   rl  z!generate_xinfo_body.<locals>.impl  s    $r(   )r   r   r   rm  r
   )
r  np_funcr  attrnbtyrC  r  r  rl  rC   s
     `      @r)   generate_xinfo_bodyr  }  sy    3%D~HH .A'!Q-./D   K   /s   A A'	A$#A$c                 Z    t        | t        j                  t        t              fd}|S )Nc                      |       S r/   r'   )r   r  s    r)   rl  zol_np_finfo.<locals>.impl  s    %yr(   )r  rd   rP  _finfo_supported)r   rl  r  s     @r)   ol_np_finfor    s"    	UBHHe5E	FBKr(   c                 Z    t        | t        j                  t        t              fd}|S )Nc                      |       S r/   r'   )int_typer  s    r)   rl  zol_np_iinfo.<locals>.impl  s    (|r(   )r  rd   rK  _iinfo_supported)r  rl  r  s     @r)   ol_np_iinfor    s"    	Xrxx8H	IBKr(   c                    t         d        }t        s|S t        j                  t        j                  z  }| |v xr ||v }|s|S t        |       }t        |      }t        j                  ||      t         fd       }|S )Nc                 X    d}t        t        |             D ]  }|| |   ||   z  z   } |S r   r5   rH   )r0   r  accr1   s       r)   
_innerprodz#_get_inner_prod.<locals>._innerprod  s4    s1vA!qt#C 
r(   c                 l    t        j                  | j                        |j                              S r/   )rd   r  r  )r0   r  r  s     r)   	_dot_wrapz"_get_inner_prod.<locals>._dot_wrap  s$    66!((2,55r(   )r
   
_HAVE_BLASr   real_domainr^  r   rd   r  )	dtadtbr  fltyfloatsa_dtb_dtr  r  s	           @r)   _get_inner_prodr    s       u333DD[(SD[F}}dD)		6 
	6r(   c                 t    t        | t        j                        r| j                  dk  st	        d|z        y y )Nr,   z!%s() only supported on 1D arrays )rW   r   r   r   r   )r0   r  s     r)   
_assert_1dr    s6    !U[[!vv{AIMNN  "r(   c                      y r/   r'   )ap1ap2mode	directions       r)   _np_correlate_corer    r_  r(   c                     t        | j                        }t        |j                        }t        j                  ||      t	        | j                  |j                        fd}|S )Nc                 v   t        |       }t        |      }||k  rt        d      |}|}|dk(  r||z
  dz   }d}d}	n6|dk(  r|dz
  }	|dz
  }||z   dz
  }n|dk(  r|dz  }||z
  dz
  }	nt        d      t        j                  |      }
|dk(  rd}d}n|d	k(  r|dz
  }d	}nt        d
      t	        |      D ]"  }||z   |z
  } | d | || d        |
|<   ||z   }$ t	        ||z
  dz         D ]  } | |||z    |      |
|<   ||z   } t	        |	      D ]"  }||z
  dz
  } | | d  |d |       |
|<   ||z   }$ |
S )Nz''len(ap1)' must greater than 'len(ap2)'r  r,   r   r   samer~   z1Invalid 'mode', valid are 'full', 'same', 'valid'rc  zInvalid direction)rH   r   rd   r  r5   )r  r  r  r  n1n2r  r  n_leftn_rightr  r   incr1   r  r  	innerprods                  r)   rl  z%_np_correlate_core_impl.<locals>.impl  s    XX7 FGG7?aZ!^FFGV^!eGUFaZ!^FV^!VF&j1nG4 
 hhvr">CC"_1*CC011vAAA Ra#qbc(3CH)C 
 rBw{#A QR#6CH)C $ wAA	A aRS3r73CH)C  
 
r(   )r   r   rd   r  r  )	r  r  r  r  r  r  rl  r  r  s	          @@r)   _np_correlate_core_implr    sR    CIIDCIID			$	%B		3995I>@ Kr(   c                 F   t        | d       t        |d       t        d        }t        d        }| j                  t        j                  v r&|j                  t        j                  v r||n*||n%|j                  t        j                  v r||n||dfd	}|S )Nznp.correlatec                 ,    t        j                  |       S r/   )rd   r   r  s    r)   op_conjz_np_correlate.<locals>.op_conj  s    wwqzr(   c                     | S r/   r'   r  s    r)   op_nopz_np_correlate.<locals>.op_nop  s    r(   c                     t        |       }t        |      }|dk(  rt        d      |dk(  rt        d      ||k  rt         |       |       |d      S t         |        |      |d      S Nr   z'a' cannot be emptyz'v' cannot be emptyrc  r,   rH   r   r  )r0   ri   r  lalva_opb_ops        r)   rl  z_np_correlate.<locals>.impl-  st    VV723372337%d1gtAwbAA%d1gtAwa@@r(   r  )r  r
   r   r   r^  )r0   ri   r  r  r  rl  r  r  s         @@r)   _np_correlater    s    q.!q.!    	ww%&&&77e***DDDD77e***DDDDA Kr(   c                 >    t        | d       t        |d       dd}|S )Nznp.convolvec                     t        |       }t        |      }|dk(  rt        d      |dk(  rt        d      ||k  rt        || d d d   |d      S t        | |d d d   |d      S r  r  )r0   ri   r  r  r  s        r)   rl  znp_convolve.<locals>.implC  ss    VV723372337%a4R4$::%a4R4$::r(   r   )r  )r0   ri   r  rl  s       r)   np_convolver  >  s"    q- q- ; Kr(   c                 `   t        |       sy t        | t        j                        r0t	        |      s| j
                  |j
                  k(  rd	d}|S d	d}|S t        | t        j                  t        j                  f      rt	        |      rd	d}|S d	d}|S t        | t        j                  t        j                  f      r"t	        |      r| n|}t        |      d	fd	}|S t        | t        j                  j                        r`t        | j
                  t        j                  t        j                  f      st        d      t	        |      r| j
                  n|d	fd	}|S t        | t        j                        r't        j                   | j"                        d	fd	}|S d }|S )
Nc                     | S r/   r'   r0   r   s     r)   rl  znp_asarray.<locals>.impl^  s    r(   c                 $    | j                  |      S r/   )r  r  s     r)   rl  znp_asarray.<locals>.impla  s    xx&r(   c                 ,    t        j                  |       S r/   r^  r  s     r)   rl  znp_asarray.<locals>.implh  s    xx{"r(   c                 .    t        j                  | |      S r/   r^  r  s     r)   rl  znp_asarray.<locals>.implk  s    xx5))r(   c                 0    t        j                  |       S r/   r^  )r0   r   r  s     r)   rl  znp_asarray.<locals>.implq  s    88Ar?"r(   z?asarray support for List is limited to Boolean and Number typesc                 |    t        |       }t        j                  |      }t        |       D ]
  \  }}|||<    |S r  )rH   rd   r   r   )r0   r   rh  r  r1   ri   target_dtypes         r)   rl  znp_asarray.<locals>.impl{  s<    AA((1L1C!!1A %Jr(   c                 $    j                         S r/   )r  )r0   r   rg   s     r)   rl  znp_asarray.<locals>.impl  s    88:r(   r/   )r   rW   r   r   r   r   r  rZ   r   r   r   
containersListTyper   StringLiteralrd   r  rY   )r0   r   rl  dt_convrg   r  r  s       @@@r)   
np_asarrayr  T  sk   
 A!U[[!uEKK!7V KQ'P KM 
A4	5 u#B K=*< K9 
Aemm4	5"5)!ug	#0 K- 
Au''00	1!''ELL%--#@A./ / #.e"4qww%	 K 
Au**	+jj)	
 K Kr(   c                     t        |t        j                        rt        |      }t	        j
                  |t        j                        st        j                  n|t        j                  ffd	}|S )Nc                 0    t        j                  |       S r/   r  )r0   r   r  s     r)   rl  znp_asfarray.<locals>.impl  s    ::a$$r(   )rW   r   Typer   rd   r  rB  r   )r0   r   rl  r  s      @r)   np_asfarrayr    sM     eUZZ(UOE}}UBJJ/BB** 	%r(   c                     d }|S )Nc                     t        j                  |       j                         }t        j                  |      }|j                  dk(  rt	        d      t        j
                  ||j                  d        r&|j                  |j                  kD  rd}t	        |      t        |j                  |j                        }t        |      D cg c]  }||   s	|j                  |    }}t        j                  |      S c c}w )Nr   z"Cannot extract from an empty arrayz+condition shape inconsistent with arr shape)
rd   r  r  r   r   r  r  r5   r   r_  )r  rg   r  r0   r   max_lenr   r   s           r)   np_extract_implz#np_extract.<locals>.np_extract_impl  s    zz)$,,.JJsO66Q;ABB 66$qvvw- TYY%7?CS/! affdii(&+GnBnsS	qvvc{nBxx} Cs   
C;C;r'   )r  rg   r  s      r)   
np_extractr    s    ( r(   c                 `   dd}t        | t        j                  t        j                  f      st	        d      t        |t        j                  t        j                  f      st	        d      t        |t
        t        j                  t        j                  f      st	        d      t        | d   t        j                        st	        d      t        |d   t        j                        st	        d      t        | d   t        j                        r2t        | d   j                  t        j                        st	        d      t        | d   t        j                        rHt        | d   t        j                        r t        | d   d   t        j                        st	        d	      t        | d   t        j                        r*| d   j                  |d   j                  k7  rt	        d
      t        | d   t        j                        r| d   j                  dk  rt	        d      |S )Nr   c                 .   t        |       t        |      k7  rt        d      |t        j                  |d   j                  |d   j
                        z  }t        t        |       dz
  dd      D ]#  }| |   }||   }t        j                  |||      }% |S )Nz7list of cases must be same length as list of conditionsr   r,   rc  )rH   r   rd   r  r   r   r5   r  )condlist
choicelistdefaultr   r1   r  choices          r)   np_select_arr_implz%np_select.<locals>.np_select_arr_impl  s    x=C
O+ - . .
1 3 3Z]5H5HIIs8}q("b1AA;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 1r0  )rW   r   ListrI   r!   r  r   r   r   r   r   )r  r  r  r  s       r)   	np_selectr    s   
 hU^^ <=ABBj5::u~~">?CDDgU\\5==ABKLL hqk5;;/?@@jmU[[1ABB (1+u{{+(1+++U]]; !HII(1+u~~.8A;7x{1~u}}= !MNN8A;,QK
1 2 22 9 : 	:(1+u{{+0@0@10DNOOr(   c                    t        |       rt        |      st        d      d| j                  j                  v sd|j                  j                  v r8| j                  j                  |j                  j                  k7  rt        d      d }|S )Nz.The arguments to np.union1d must be array-likeunichrz/For Unicode arrays, arrays must have same dtypec                     t        j                  t        j                  |             }t        j                  t        j                  |            }t        j                  t        j                  ||f            S r/   )rd   re  r  r  r  )r  r  r0   r  s       r)   
union_implznp_union1d.<locals>.union_impl  sJ    HHRZZ_%HHRZZ_%yyA/00r(   )r   r   r   r  )r  r  r  s      r)   
np_union1dr    sn    C (8(=JKK	SYY^^	#x399>>'A
yy~~'KLL1
 r(   c                    d}t        | t        j                  t        j                  t        j                  f      st        |      t        |      r| j                  n	 t        |      dfd	}|S # t        $ r t        d      w xY w)Nz7The argument to np.asarray_chkfinite must be array-likez!dtype must be a valid Numpy dtypec                     t        j                  |       } t        j                  |       D ]"  }t        j                  |      rt	        d       | S )Nr  z#array must not contain infs or NaNs)rd   r  re   r  r   )r0   r   r1   r  s      r)   rl  z"np_asarray_chkfinite.<locals>.impl  sC    JJq#1A;;q> !FGG  r(   r/   )
rW   r   r   r  rZ   r   r   r   r   r    )r0   r   r   rl  r  s       @r)   np_asarray_chkfiniter	    s~     DCa%++u~~u{{CD#5WW	C%B K ( 	CABB	Cs   !A4 4B	c                    t        |t        t        j                  f      sd}t	        |      t        |       sd}t	        |      t        |t        j                  t        j                  f      s"t        j                  |      sd}t	        |      t        |t        t        j                  f      sd}t	        |      t        dd d       ft        |t        j                        r3t        j                  t        | j                        t        |            n7t        j                  t        | j                        t        j                         t        j"                  t        j$                        dfd	}|S )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                    |dk7  rd}t        |      t        j                  |       j                        }|j                  }|d   }|j                  |j                  |z  |f      }||dz  }rt        |d      \  }	}
|
dk(  }n|dz  }	d}|	 }t        |j                  |z        D ];  }||   }t        j                  |      }t        j                  ||z
  |      |z   }|r t        j                  ||k(  |dkD  z  |	|      }||z
  }t        j                  t        j                  |D cg c]  }t        |       c}      |k  d|      }t        j                  t        j                  |D cg c]  }t        |       c}      |k  d|      }t        j
                  ||j                        }t        j                  |      }|   |j                         z   |<   |||<   > |j                  |      S c c}w c c}w )Nrc  z*Value for argument "axis" is not supportedr~   r   T)r   rd   r  r  r   rf  r   divmodr5   rl  modr  r_  r  r  r   )pdiscontr\   periodr   p_init
init_shape	last_axisp_newinterval_highremboundary_ambiguousinterval_lowr1   rowddddmod
ph_correctr  ph_ravelupr   integer_inputslice1s                        r)   rl  znumpy_unwrap.<locals>.impl-  s   2:>CS/!A%%e,\\
rN	y 8)DE?qjG!'!2M3!$"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E!H! 1$ }}Z(( ,@)=s   ,G90G>Nrc  g-DT!@)rW   r  r   r   r   r   r   r   r   r  r   rQ   rd   r  r   r   r   r  integer)	r  r  r\   r  r   rl  r   r  r   s	         @@@r)   numpy_unwrapr#    s   dS%--016#A3#w <=''07#fuell346#AtT"$F&%,,'x0(62BCx0"**=MM%4M')R Kr(   c                     t        j                  d| z
  | d      }t        j                  t        j                  |d      d|| dz
  z  z   d|| dz
  z  z
        S )Nr  r~   r   r,   )rd   r  r  
less_equalr  r  s     r)   np_bartlett_implr'  a  sN    
		"q&!QA88BMM!Q'Q!a%[!a1q5k/JJr(   c                     t        j                  d| z
  | d      }ddt        j                  t         j                  |z  | dz
  z        z  z   dt        j                  dt         j                  z  |z  | dz
  z        z  z   S )Nr  r~   gzG?r  r,   g{Gz?r  rd   r  cosr  r&  s     r)   np_blackman_implr+  g  so    
		"q&!QA3	QU 3444266#+/QU3445 6r(   c                     t        j                  d| z
  | d      }ddt        j                  t         j                  |z  | dz
  z        z  z   S )Nr,   r~   gHzG?gq=
ףp?r)  r&  s     r)   np_hamming_implr-  n  sB    
		!a%AA$	QU 34444r(   c                     t        j                  d| z
  | d      }ddt        j                  t         j                  |z  | dz
  z        z  z   S )Nr,   r~   r  r)  r&  s     r)   np_hanning_implr/  t  sB    
		!a%AArvvbeeai1q512222r(   c                       fd}|S )Nc                 \    t        | t        j                        st        d      fd}|S )NM must be an integerc                     | dk  r%t        j                  dt         j                        S | dk(  r%t        j                  dt         j                        S  |       S )Nr,   r'   r  )rd   r_  r   r  )r  funcs    r)   window_implz>window_generator.<locals>.window_overload.<locals>.window_impl  sD    1uxx"**55Avwwq

337Nr(   )rW   r   r   r   )r  r5  r4  s     r)   window_overloadz)window_generator.<locals>.window_overload{  s*    !U]]+455	 r(   r'   )r4  r6  s   ` r)   window_generatorr7  z  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    |d   }d}t        dt        |            D ]  }|}|}| |z  |z
  ||   z   } d|z
  z  S )Nr   r   r,   r  r  )r  valsb0b1r1   b2s         r)   _chbevlr=    sU    	aB	B1c$i Vb[47" !
 "r'?r(   c                     | dk  r|  } | dk  r.d| z  dz
  }t        j                  |       t        |t              z  S t        j                  |       t        d| z  dz
  t              z  t        j
                  |       z  S )Nr   g       @r  r  g      @@)rd   expr=  _i0A_i0Br*  rT  s     r)   _i0rB    sm    1uBCx1WOvvay71d+++66!9wtax#~t44rwwqzAAr(   c           	      *   t        j                  | t         j                        }t        t        j                  |            }t	        t        |            D ]8  }t        |t        j                  d| |   |z
  |z  dz  z
        z        |z  ||<   : |S )Nr  r,   r  )rd   r  r   rB  r5   rH   r*  )r  alphabetar  tr1   s         r)   _i0nrG    sz    
arzz*ABJJtA3q6]4"''!!u'=&C"CDDEI!  Hr(   c                     t        | t        j                        st        d      t        |t        j                  t        j                  f      st        d      d }|S )Nr2  z beta must be an integer or floatc                     | dk  r%t        j                  dt         j                        S | dk(  r%t        j                  dt         j                        S t        j                  d|       }| dz
  dz  }t        |||      S )Nr,   r'   r  r   r  )rd   r_  r   r  r  rG  )r  rE  r  rD  s       r)   np_kaiser_implz!np_kaiser.<locals>.np_kaiser_impl  se    q588Bbjj116771BJJ//IIaOQ#Aud##r(   )rW   r   r   r   r   )r  rE  rJ  s      r)   	np_kaiserrK    sL    a'011dU]]EKK89<==	$ r(   c                 f   d } ||       \  }}} ||      \  }}}	t        j                  ||	      t        j                  ||      z
  }
t        j                  ||      t        j                  ||	      z
  }t        j                  ||      t        j                  ||      z
  }|
|d<   ||d<   ||d<   y )Nc                     | d   }| d   }| j                   d   dk(  r| d   }n/t        j                  | j                  j	                  d      |      }|||fS )N.r   .r,   rc  r}   .r~   r   )r   rd   r  r   r   )r  x0r  x2s       r)   _cross_preprocessingz._cross_operation.<locals>._cross_preprocessing
  sU    vYvY772;!6BQWW\\!_b1B2rzr(   rN  rO  rP  )rd   r  )r0   r  r   rS  a0r  r  r:  r;  r<  cp0cp1cp2s                r)   _cross_operationrX    s     &a(JBB%a(JBB
++b"
B 3
3C
++b"
B 3
3C
++b"
B 3
3CCKCKCKr(   c                      y r/   r'   r  s     r)   _crossrZ    r_  r(   c                     t        j                  t        | j                        t        |j                              | j                  dk(  r|j                  dk(  rfd}|S fd}|S )Nr,   c                 N    t        j                  d      }t        | ||       |S )Nr}   )rd   r   rX  )r0   r  cpr   s      r)   rl  z_cross_impl.<locals>.impl'  s$    $&BQ2&Ir(   c                     t        j                  | d   |d         j                  }t        j                  |dz         }t	        | ||       |S )NrN  r]  )rd   r  r   r   rX  )r0   r  r   r^  r   s       r)   rl  z_cross_impl.<locals>.impl,  sF    FF1V9ai066E%$,.BQ2&Ir(   )rd   r  r   r   r   )r0   r  rl  r   s      @r)   _cross_implr`  #  sT    Xagg.0ABEvv{qvv{	 K	
 Kr(   c                 N    t        |       rt        |      st        d      d }|S )NInputs must be array-like.c                 &   t        j                  |       }t        j                  |      }|j                  d   dvs|j                  d   dvrt        d      |j                  d   dk(  s|j                  d   dk(  rt	        ||      S t        d      )Nrc  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`.)rd   r  r   r   rZ  r0   r  r  r  s       r)   rl  znp_cross.<locals>.impl9  s    ZZ]ZZ]88B<v%"V)C- 
 88B<1 1"b>!H r(   r   r   r0   r  rl  s      r)   np_crossrg  4  s*    A&6q&9677" Kr(   c                     d } ||       \  }} ||      \  }}t        j                  ||      t        j                  ||      z
  }t        j                  |      S )Nc                     | d   }| d   }||fS )NrN  rO  r'   )r  rQ  r  s      r)   rS  z0_cross2d_operation.<locals>._cross_preprocessingP  s    vYvY2vr(   )rd   r  r  )r0   r  rS  rT  r  r:  r;  r^  s           r)   _cross2d_operationrj  M  sU    
 "!$FB!!$FB	R	r{{2r2	2B ::b>r(   c                      y r/   r'   r  s     r)   cross2drl  a  r_  r(   c                 N    t        |       rt        |      st        d      d }|S )Nrb  c                     t        j                  |       }t        j                  |      }|j                  d   dk7  s|j                  d   dk7  rt        d      t	        ||      S )Nrc  r~   zRIncompatible dimensions for 2D cross product
(dimension must be 2 for both inputs))rd   r  r   r   rj  rd  s       r)   rl  zcross2d_impl.<locals>.implj  s\    ZZ]ZZ]88B<1 18  ""b))r(   re  rf  s      r)   cross2d_implro  e  s*    A&6q&9677* Kr(   c                     t        | t        j                        st        d      | j                  dkD  rt        d      t        |t
        t        j                  f      st        d      t        dk\  dfd	}|S )Nz#The first argument must be an arrayr,   zarray must be 1Dz$The second argument must be a string)r~   r~   c                     t        j                  |       }d}|j                         }d|v r|D ]  }|dk(  sr|dk(  r|dz   } n t        |       }d|v r |d d d   D ]  }|dk(  sr|dk(  r|dz
  } n ||| S )Nr   r   r,   r  rc  )rd   r  r  rH   )filttrimr  firstr1   lasttrim_escapess         r)   rl  znp_trim_zeros.<locals>.impl  s    ZZzz|$;6lqBw!AIE	 
 4y$;"X6lqBw!8D	 
 %~r(   fb)rW   r   r   r!   r   strUnicodeTyper   )rs  rt  rl  rw  s      @r)   np_trim_zerosr|  w  sk    dEKK(BCCyy1}/00dS%"3"345CDD F*L& Kr(   c                     t        |       st        |      st        d      t        |t        j                  t
        f      st        d      dd}|S )Nz+setxor1d: first two args must be array-likez2setxor1d: Argument "assume_unique" must be booleanc                    t        j                  |       }t        j                  |      }|s+t        j                  |      }t        j                  |      }n |j                         }|j                         }t        j                  ||f      }|j                          t        j                  |j                  d   dz   t         j                        }d|d<   d|d<   |dd  |d d k7  |dd ||dd  |d d z     S )Nr   r,   r  Trc  )	rd   r  r  re  r  r  r   r   r   )r  r  r  r0   r  r  flags          r)   np_setxor1d_implz)jit_np_setxor1d.<locals>.np_setxor1d_impl  s    JJsOJJsO		!A		!A	A	A nnaV$
xx		!q(9QRWCR(Qr
48d3Bi'((r(   rd  r  )r  r  r  r  s       r)   jit_np_setxor1dr    sJ    S!%5c%:GHH}u}}d&;<NOO), r(   c                    t        j                  |       j                         } t        j                  |      j                         }t        |      dt        |       dz  z  k  r|r?t        j                  t        |       t         j
                        }|D ]
  }|| |k7  z  } |S t        j                  t        |       t         j
                        }|D ]
  }|| |k(  z  } |S |st        j                  |       }| |   }t        j                  |j                  t         j
                        }d|d d |dd  |d d k7  |dd  ||   } t        j                  |      dz
  }t        j                  |j                  t         j                        }	||	|<   t        j                  |      }t        j                  | |f      }
|
j                  d      }|
|   }t        j                  |j                  t         j
                        }|r|dd  |d d k7  |d d n|dd  |d d k(  |d d ||dd  t        j                  |
j                  t         j
                        }|||<   |r|d t        |        S |	   S )	Nr  g(\?r  Tr,   rc  	mergesort)kind)rd   r  re  rH   r  r   r  argsortr   r   r   r7   r  r  r   )r  r  r  invertr!  r0   order1r  imaskinv_idxarordersarr  r  s                  r)   
_in1d_implr    s-   
 **S/


!C
**S/


!C
 3x"s3x5(((773s82884D"   88CHBHH5D"   C&kxx		2Raqr7c#2h&QR$i		$!#((4::RWW5iin	c
	#B JJKJ(E
U)C88CHHbhh'DWCR(Sb	WCR(Sb	DI
((288288
,CCJ 9CH~7|r(   c                     t        |       st        |      st        d      t        |t        j                  t
        f      st        d      dd}|S )Nz,setdiff1d: first two args must be array-likez3setdiff1d: Argument "assume_unique" must be booleanc                    t        j                  |       } t        j                  |      }|r!| j                         } |j                         }n*t        j                  |       } t        j                  |      }| t	        | |dd         S )NTr  r  )rd   r  re  r  r  )r  r  r  s      r)   np_setdiff1d_implz+jit_np_setdiff1d.<locals>.np_setdiff1d_impl   se    jjojjo))+C))+C))C.C))C.C:c3d4HIIr(   rd  r  )r  r  r  r  s       r)   jit_np_setdiff1dr    sK    S!%5c%:HII}u}}d&;<OPP	J r(   c                     t        |       st        |      st        d      t        |t        j                  t
        f      st        d      t        |t        j                  t
        f      st        d      dd}|S )Nz'in1d: first two args must be array-likez.in1d: Argument "assume_unique" must be booleanz'in1d: Argument "invert" must be booleanc                     t        | |||      S r/   )r  )r  r  r  r  s       r)   np_in1d_implz!jit_np_in1d.<locals>.np_in1d_impl  s    #sM6::r(   FFr  )r  r  r  r  r  s        r)   jit_np_in1dr    si    S!%5c%:CDDmemmT%:;JKKfu}}d34CDD; r(   c                     t        |       st        |      st        d      t        |t        j                  t
        f      st        d      t        |t        j                  t
        f      st        d      dd}|S )Nz'isin: first two args must be array-likez.isin: Argument "assume_unique" must be booleanz'isin: Argument "invert" must be booleanc                 |    t        j                  |       } t        | |||      j                  | j                        S )Nr  )rd   r  r  rf  r   )r  test_elementsr  r  s       r)   np_isin_implz!jit_np_isin.<locals>.np_isin_impl+  s5    **W%'=!'))0)?	@r(   r  r  )r  r  r  r  r  s        r)   jit_np_isinr  !  sj    W%)9-)HCDD}u}}d&;<JKKvt45CDD@ r(   r/   r  r  rd  r   r0  r9  r  r  r   r0  r~  rQ  rp  r  r  r!  rx  r  (  __doc__r  collectionsr   rc  r  llvmlite.irrm  numba.np.types.datetimer   r   numpyrd   
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#   numba.npr.  r*   r  rM   r`   r  r   rw   rz   r   r7   	DTypeSpecIntegerLiteralr   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  aminr1  r3  amaxr<  rC  rH  rM  rN  rV  r[  r^  r`  rU  rn  rr  rs  r  r  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)  r4  r1  r9  r6  nanstdr;  nansumr@  nanprodrE  
nancumprodrL  	nancumsumrQ  rU  r[  r^  ra  re  ri  rl  rt  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  r  r  r  r"  trilr1  r@  r;  tril_indices_fromrE  rI  triurO  rV  rS  triu_indices_fromrX  r[  rc  ri  ediff1dry  r{  r  r  r  r  trapzr  	trapezoidr  r  r  vanderr  rollr  r  r  r  r  interpr  r  r  r  r  r  r"  r  r  r  r!  r
  r  r  r  r(  r%  corrcoefr2  argwherer:  flatnonzeror>  rB  rD  rH  rN  rR  re  rS  r[  fill_diagonalrf  ri  ru  r{  aroundr  r  round_r  r  r  r  r6  r  r  r  r  r  r  r  r  r   r  r"  r  containsr  count_nonzeror  r  r  deleter  rl  r  array_equalr  intersect1dr  r  r  r)  r1  r0  r+  r.  r2  r4  r6  r<  r   rA  rH  rN  digitizer_  r5   rl  rb  rq  r  r  r  rP  r  rK  r  r  r  r  r  r  r  r  	correlater  convolver  r  r  asfarrayr   r  extractr  selectr  union1dr  asarray_chkfiniter	  unwrapr#  r'  r+  r-  r/  r7  bartlettblackmanhamminghanningr_  r@  rA  r=  rB  rG  kaiserrK  rX  rZ  r`  crossrg  rj  rl  ro  
trim_zerosr|  setxor1dr  r  	setdiff1dr  r  in1disinr  r'   r(   r)   <module>r     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$% % %6       
"&&	"''e$3 %  3l 
"&&	"''e$3 %  3l  *  *  & 
"))h' ( $  *  *  ")X 
"))h' ( $ 
"&&e$ % 4  2 
"++j)?, * ?,D 
"&&e$ % 2 
"** >
 
",,  
"))  
"// & 
",,  
"++ 
 
"++& &
 
"++& &
     P P
D 	E: u= "	D9 "t<
 2 2 
"**5 5p 
"))  
"))  
"** & 
")) 0 
"))  
")) * 
"** * 
"-- 0 
",, 0  (		 
.H H 
.H H	 
- . 
"&& 6 6'OEKK'/  .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	 
/ 	 
& , 6bhh% %
 Fbll% % < <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HRYY& 
"''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 rxx  B rxx  : 	 	 B B   
")) *  .	 
&   
"(( 0  &	 
' " 
"-- D 
"++ D 7 7t 
",, * 6HRWWk" 
"'' r(   