
    
f>             	       '   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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,m-Z- ddl.m/Z/ d Z0 e0            Z1e&d             Z2e&d             Z3 ee	j4        ej5                   edej5                  d                         Z6ed             Z7d Z8 ee	j4        ej5        ej9        ej:                   ee	j4        ej5        ej;        ej:                   edej5        ej9        ej:                   edej5        ej;        ej:                  d                                                 Z< ee	j4        ej5        ej:                   edej5        ej:                  d                         Z= ee	j4        ej5        ej9                   ee	j4        ej5        ej;                   edej5        ej9                   edej5        ej;                  d                                                 Z>d Z? ee	j@                   eej5        d          d                         ZA ee	jB                   eej5        d          d                         ZC ee	jD                   eej5        d          d                         ZE ee	jF                   eej5        d          d                         ZG ee	jH                   eej5        d           d!                         ZI ee	jJ                   eej5        d"          d#                         ZKed$             ZLed%             ZMed&             ZN ee	jO                   ee	jP                   eej5        d'          d(                                     ZQ ee	jR                   ee	jS                   eej5        d)          d*                                     ZTed+             ZUed,             ZVed-             ZW ee	jX                   eej5        d.          dd/                        ZYed0             ZZed1             Z[ed2             Z\d3 Z] ee	j^                   eej5        d4          dd5                        Z_ ee	j`                   eej5        d6          d7                         Zaedd;            Zb ee	jc                   eej5        d<          dd=                        Zd ee	je                   eej5        d>          d?                         Zf ee	jg                  dd@            ZhdA Zi ee	jj                  dB             Zk ee	jl                  dC             Zm ee	jn                  dD             Zn ee	jo                  dE             Zo ee	jp                  dF             ZqdG Zr ee	js                  ddH            Zs ee	jt                  ddI            ZtedJ             ZuedK             ZvedL             ZwdM Zx e exeud:N                    Zy e exevd:N                    Zz e exeudON                    Z{ e exevdON                    Z|e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j5        dc           ee	j                  dd                         Zede             ZddfZ e eeu                    Z e ee                    Z e eedOg                    Zdh Z e ee                    Z e ee                    Z e ee                    Zedi             Zedj             Z ee	j                  dk             Zedl             Zedm             Zedn             Zedo             Zedp             Zedq             Zdr 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             Zedx             Zedy             Zedz             Z ee	j                  d{             Z ee	j                  d|             Zed}             Z ee	j                  dd~            Zed             Zedd            Z ee	j                  dd            Z ee	j                  dd            Z ee	j                  dd            Zedd            Z ee	j                  dd            Z ee	j                  dd            Z ee	j                  dd            Zd Z eeҦ          d             Zd Z ee	j                  dd            Zd Z eeצ          d             Zd Z ee٦          d             Z ee	j                  dd            Zed             Zed             Z ee	j                  dd            Z ee	j                  d             ZdZed             Zed             Zed             Z ee	j                  d             Zed             Zed             Zd Z ee          d             Zed             Z ed           Zd Zd Zed             Z ed           Zed             Zd Zed             Zed             Z ee	j                  dd            Z ee	j                  dd            Z ee	j                  d             Z ee	j                  d             Zed             Zed             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                   ee	j                  dd                                    Z ee	j                  d             Z ee	j                  dd            Z ee	j        ej5                   edej5                  d                         Zd Zed             Zed             Zd Z ee	j                  d             Z ee	j                  dÄ             Z ee	j                  dĄ             Z ee	j                  dń             Z  eej!                  dƄ             Z" ee	j#                  ddǄ            Z$ edȄ           Z% edɄ           Z& ee	j'                  dʄ             Z( ee	j)                  dd̄            Z* ee	j+                  d̈́             Z, ee	j-                  d΄             Z.dτ Z/ ee	j0                  ddЄ            Z1 ee          Z2 ee          Z3edф             Z4ed҄             Z5edӄ             Z6edԄ             Z7edՄ             Z8dք Z9 e:ddh          Z;dل Z< ee	j=                  ddڄ            Z= ee	j>                  ddۄ            Z?e@ZA ee	jB                  dd݄            ZCdސZD edߐeD          ZEdZF edeF          ZGdZH edeH          ZId ZJ eJ             d ZK ee	jG                  d             ZL ee	jI                  d             ZMd ZNd ZOd ZP eeP          d             ZQ ee	jR                  dd            ZS ee	jT                  dd            ZU ee	jV                  dd            ZW ee	jX                  e	jY        fd            ZZ ee	j[                  d             Z\ ee	j]                  dd            Z^ ee	j_                  d             Z` ee	ja                  dd            Zb ee	jc                  dd            Zded             Zeed             Zfed             Zged             Zhd Zi  ee	jj                   eiee                       ee	jk                   eief                       ee	jl                   eieg                       ee	jm                   eieh                      e	jn        g d          Zo e	jn        g d          Zped              Zqed             Zred             Zs ee	jt                  d             Zued             Zvd Zw eew          d             Zx ee	jy                  d             Zzed             Z{d	 Z| ee|          d
             Z} ee	j~                  dd            ZdS (  z5
Implementation of math operations on Array objects.
    N)
namedtuple)typescgutils)overloadoverload_methodregister_jitable)as_dtypetype_can_asarraytype_is_scalarnumpy_versionis_nonelikecheck_is_integer	lt_floats
lt_complex)lower_builtinimpl_ret_borrowedimpl_ret_new_refimpl_ret_untracked)
make_array	load_item
store_item_empty_nd_impl)ensure_blas)	intrinsic)RequireLiteralValueTypingErrorNumbaValueErrorNumbaNotImplementedErrorNumbaTypeErrorNumbaDeprecationWarning)tuple_setitemc                  H    	 t                       n# t          $ r Y dS w xY wdS NFT)r   ImportError     2lib/python3.11/site-packages/numba/np/arraymath.py_check_blasr(       s9       uu4s    
c                     t          |          dz
  t          j        t          j                   |          }fd}||fS )a  
    This routine converts shape list where the axis dimension has already
    been popped to a tuple for indexing of the same size.  The original shape
    tuple is also required because it contains a length field at compile time
    whereas the shape list does not.
       c           	      j   |                                }t          j        |          }|\  }}d }t                    D ]p}	|                     t
          j        |	          }
|                     ||t          j        t
          j                  ||
g          }|                    |||	          }q|S )Nc                     | |         S Nr%   )ais     r'   array_indexerzB_create_tuple_result_shape.<locals>.codegen.<locals>.array_indexerE   s    Q4Kr&   )	get_value_typer   get_null_valuerangeget_constantr   intpcompile_internalinsert_value)cgctxbuilder	signatureargslltuptytupin_shape_r0   r/   dataidxdatand
shape_listtuptys               r'   codegenz+_create_tuple_result_shape.<locals>.codegen=   s    &&u--$W-- 1	 	 	 r 	5 	5A((Q77G))'=*/*Z*L*L+3W*=? ?D &&sD!44CC
r&   )lenr   UniTupler5   )tyctxrC   shape_tuplefunction_sigrE   rB   rD   s    `   @@r'   _create_tuple_result_shaperK   ,   sm     
[		A	BN5:r**E5[11L      *   r&   c                 r  	
 t          |t          j                  st          d          |j        	t          |          
	
k    rd		}
|z
  dz
  }g }|t          j        g|z  z  }|t          j        gz  }|t          j        g|z  z  }t          j        |           |||          }	
fd}||fS )aH  
    Generates a tuple that can be used to index a specific slice from an
    array for sum with axis.  shape_tuple is the size of the dimensions of
    the input array.  'value' is the value to put in the indexing tuple
    in the axis dimension and 'axis' is that dimension.  For this to work,
    axis has to be a const.
    z axis argument must be a constantr   r*   c                    |                                }t          j        |          }|\  }}}d }|                     ||t	          j                    g           }	t          d          D ]}
|                    ||	|
          }|                    ||          }t          dz             D ]}
|                    ||	|
          }|S )Nc                  "    t          d d           S r-   )slicer%   r&   r'   create_full_slicez<_gen_index_tuple.<locals>.codegen.<locals>.create_full_slice   s    t$$$r&   r   r*   )r1   r   r2   r6   r   slice2_typer3   r7   )r8   r9   r:   r;   r<   r=   r?   	value_argrP   
slice_datar/   
axis_valuerB   rD   s              r'   rE   z!_gen_index_tuple.<locals>.codegen|   s    &&u--$W-- !Iq	% 	% 	% ++G5F,1,=,?,?,.0 0
 q*%% 	; 	;A&&sJ::CC ""3	:>> zA~r** 	; 	;A&&sJ::CC
r&   )	
isinstancer   Literalr   literal_valuerF   rQ   r5   Tuple)rH   rI   valueaxisbeforeafter
types_listrJ   rE   rT   rB   rD   s            @@@r'   _gen_index_tupler^   U   s     dEM** F!"DEEE#J	[		B R
 FK!OEJ5$%..J5:,J5$%--J K
##E5eT22L      >   r&   z	array.sumc           	          |                     d          fd}|                     ||||t          |j                             }t          | ||j         |          S )Nr   c                 h    }t          j        |           D ]}||                                z  }|S r-   npnditeritem)arrcvzeros      r'   array_sum_implz!array_sum.<locals>.array_sum_impl   7    3 	 	AMAAr&   rf   localsreturn_typer6   dictr   contextr9   sigr;   ri   resrh   s         @r'   	array_sumru      {     ??1D     
"
"7NC*.*A*A*A # C CCWgsDDDr&   c                     | S r-   r%   )re   rg   s     r'   _array_sum_axis_noprx      s    Jr&   c                       fd}|S )Nc                 
   | j         }s|dk     s|dk    rt          d          ||k    rt          d          t          | j                  }||         }|                    |           t          || j                  }t          j        |t                              }t          |          D ]}r"t          | j        |          }|| |         z  }&|dk    r"t          | j        |d          }	|| |	         z  }N|dk    r"t          | j        |d          }
|| |
         z  }v|dk    r"t          | j        |d          }|| |         z  }|dk    r!t          | j        |d          }|| |         z  } |d          S )a(  
        function that performs sums over one specific axis

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

        typing/arraydecl.py:sum_expand defines the return type for sum with
        axis. It is one dimension less than the input array.
        r      zHNumba does not support sum with axis parameter outside the range 0 to 3.zaxis is out of bounds for arrayr*      )ndim
ValueErrorlistshapepoprK   rb   fulltyper3   r^   )re   rZ   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oprh   s                r'   innerz gen_sum_axis_impl.<locals>.inner   s    x 	Haxx4!88  "G H H H
 4<<>??? ci$<

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

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

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

&#
     $ Or&   maxc                    t          | t          j                  sd S t          | j        t          j        t          j        f          rt          j        t          nzt          | j        t          j	                  rt          d }t          |          nAt          | j        t          j                  rt          j        t          nt          t          fd}|S )Nc                 n    | j         |j         k    rdS | j         |j         k    r| j        |j        k    rdS dS r   r   )r.   max_vals     r'   r   znpy_max.<locals>.comp_func*  r  r&   c                 .   | j         dk    rt          d          t          j        |           }t	          |                              d          } |          r|S |D ]3}|                                } |          r|c S  ||          r|}4|S )Nr   zDzero-size array to reduction operation maximum which has no identityr  )r.   r  	max_valuer   rg   r  r  s        r'   impl_maxznpy_max.<locals>.impl_max:  r
  r&   )rU   r   r   r   r  r  rb   r  r   r  r   r   r  r  )r.   r   r  r  r  s      @@r'   npy_maxr    r  r&   c                 Z   | j         dk    rt          d          t          j        |           }t	          |                              d          }d}t          j        |          r|S d}|D ]=}|                                }t          j        |          r|c S ||k     r|}|}|dz  }>|S Nr   *attempt to get argmin of an empty sequencer*   r   r~   rb   rc   r  r   r  rd   )arryr  r  min_idxr   r   rg   s          r'   array_argmin_impl_datetimer!  O      yA~~EFFF	4BRa  IG	x	 
C  IIKK8A;; 	JJJy==IGqNr&   c                     | j         dk    rt          d          | j        D ]}|}d} t          j        |          r|S d}| j        D ])}t          j        |          r|c S ||k     r|}|}|dz  }*|S r  r   r~   r   rb   r  r  rg   r  r   r   s        r'   array_argmin_impl_floatr&  e      yA~~EFFFY  		x	 
CY  8A;; 	JJJy==IGqNr&   c                     | j         dk    rt          d          | j        D ]}|}d} nt          d          d}| j        D ]}||k     r|}|}|dz  }|S )Nr   r  unreachabler*   )r   r~   r   RuntimeErrorr%  s        r'   array_argmin_impl_genericr+  {  s    yA~~EFFFY * *	=)))
CY  y==IGqNr&   argminc                    t          | j        t          j        t          j        f          rt
          n.t          | j        t          j                  rt          nt          t          |          rdfd	}nt          | |          }|S )Nc                      |           S r-   r%   r.   rZ   flatten_impls     r'   array_argmin_implz'array_argmin.<locals>.array_argmin_impl      <??"r&   r-   )rU   r   r   r  r  r!  r  r&  r+  r   %build_argmax_or_argmin_with_axis_impl)r.   rZ   r1  r0  s      @r'   array_argminr4         !'E,e.?@AA 11	AGU[	)	) 1.04 
	# 	# 	# 	# 	# 	# 	# Bt\
 
 r&   c                 Z   | j         dk    rt          d          t          j        |           }t	          |                              d          }d}t          j        |          r|S d}|D ]=}|                                }t          j        |          r|c S ||k    r|}|}|dz  }>|S Nr   z*attempt to get argmax of an empty sequencer*   r  )r  r  r  max_idxr   r   rg   s          r'   array_argmax_impl_datetimer9    r"  r&   c                     | j         dk    rt          d          | j        D ]}|}d} t          j        |          r|S d}| j        D ])}t          j        |          r|c S ||k    r|}|}|dz  }*|S r7  r$  r  rg   r  r8  r   s        r'   array_argmax_impl_floatr<    r'  r&   c                     | j         dk    rt          d          | j        D ]}|}d} d}| j        D ]}||k    r|}|}|dz  }|S r7  )r   r~   r   r;  s        r'   array_argmax_impl_genericr>    ss    yA~~EFFFY  	
CY  y==IGqNr&   c                     t          |d           t          j        t          t	          | j                            dfd	}|S )z|
    Given a function that implements the logic for handling a flattened
    array, return the implementation function.
    rZ   Nc                    |dk     r
| j         |z   }|dk     s|| j         k    rt          d          | j         dk    r 	|           S }t          || j         dz
            D ]}t          |||dz             }t          || j         dz
  |          }|                     |          }|j        d         }|                                }|j        | j        k    sJ |j        |z  dk    sJ t          j	        |j        |z  
          }t          |j                  D ]!} 	|||z  |dz   |z                     ||<   "|
                    |j        d d                   S )Nr   zaxis is out of boundsr*   )r}   r~   r3   r!   	transposer   ravelr   rb   r   reshape)r.   rZ   tmpr/   transpose_indextransposed_arrr   raveledr   r0  r   tuple_buffers            r'   implz3build_argmax_or_argmin_with_axis_impl.<locals>.impl  s   !886D=D!88tqv~~4555 6Q;;<??" tQVaZ(( 	/ 	/AQA..CC'QVaZ>>_55  $ &&((|qv%%%%"Q&!++++h~*a/77sx 	> 	>A!\'!a%Q!*;"<==CFF {{>/4555r&   r-   )r   r   r5   tupler3   r}   )r.   rZ   r0  rJ  r   rI  s     ` @@r'   r3  r3    sb    
 T6"""JEqv''L6 6 6 6 6 6 6 6> Kr&   argmaxc                    t          | j        t          j        t          j        f          rt
          n.t          | j        t          j                  rt          nt          t          |          rdfd	}nt          | |          }|S )Nc                      |           S r-   r%   r/  s     r'   array_argmax_implz'array_argmax.<locals>.array_argmax_impl  r2  r&   r-   )rU   r   r   r  r  r9  r  r<  r>  r   r3  )r.   rZ   rO  r0  s      @r'   array_argmaxrP    r5  r&   allc                     d }|S )Nc                 b    t          j        |           D ]}|                                s dS dS r#   ra   r.   rg   s     r'   flat_allznp_all.<locals>.flat_all$  s:    1 	 	A6688 uutr&   r%   )r.   rU  s     r'   np_allrV  !  s       Or&   h㈵>:0yE>Fc                 H   t          j        |           }t          j        |          }|s|s|r|sdS |r|r|sdS nft          j        |           st          j        |          r| |k    S t          j        | |z
            ||t          j        |dz            z  z   k    rdS dS )NF      ?Trb   r  isinfabs)a_vb_vrtolatol	equal_nan	a_v_isnan	b_v_isnans          r'   _allclose_scalarsre  -  s    II  I (u  Y  	5	 8C== 	BHSMM 	#:6#)tdRVC#I->->&>>>>54r&   allclosec                 j   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 d S d S )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 booleanrW  rX  Fc                 *    t          | ||||          S )Nr`  ra  rb  )re  r.   br`  ra  rb  s        r'   np_allclose_impl_scalar_scalarz3np_allclose.<locals>.np_allclose_impl_scalar_scalara  s$    $Q4/8: : : :r&   c                     t          j        |          }t          j        |          D ]+}t          | |                                |||          s dS ,dS Nrn  FTrb   asarrayrc   re  rd   )r.   rp  r`  ra  rb  bvs         r'   np_allclose_impl_scalar_arrayz2np_allclose.<locals>.np_allclose_impl_scalar_arrayg  sc    
1Aill ! !(BGGIIDt3<> > > ! 55! 4r&   c                     t          j        |           } t          j        |           D ]+}t          |                                ||||          s dS ,dS rs  rt  )r.   rp  r`  ra  rb  avs         r'   np_allclose_impl_array_scalarz2np_allclose.<locals>.np_allclose_impl_array_scalarq  sc    
1Aill ! !(ADt3<> > > ! 55! 4r&   c                 4   t          j        |           } t          j        |          }t          j        | |          \  }}t          j        ||f          D ]@\  }}t	          |                                |                                |||          s dS AdS rs  )rb   ru  broadcast_arraysrc   re  rd   )	r.   rp  r`  ra  rb  a_ab_bry  rv  s	            r'   np_allclose_impl_array_arrayz1np_allclose.<locals>.np_allclose_impl_array_array{  s    
1A
1A*1a00HC)S#J// ! !B(BGGIID.2iI I I ! 55! 4r&   rW  rX  F)	r
   r   rU   floatr   r  boolBooleanNumber)r.   rp  r`  ra  rb  is_a_scalaris_b_scalarrq  rw  rz  r  s              r'   np_allcloser  G  s    A GEFFFA HFGGGdUEK011 , + , , 	, dUEK011 , + , , 	, i$!677 % $ % % 	% Q--KQ--K (,{ (,BG5:	: 	: 	: 	: .-	 ",[ ",AF49	 	 	 	 -, ,[ ,AF49	 	 	 	 -, , ,@E38	 	 	 	 ,+, , , ,r&   anyc                     d }|S )Nc                 b    t          j        |           D ]}|                                r dS dS r   ra   rT  s     r'   flat_anyznp_any.<locals>.flat_any  s:    1 	 	Avvxx ttur&   r%   )r.   r  s     r'   np_anyr    s       Or&   c                     |t          |t          j                  rdd}n%|t          |t          j                  rdd}ndd}|S )Nc                 R    t          j        |           }t          j        |          S r-   )rb   ru  r   )r.   rZ   weightsre   s       r'   np_average_implz#np_average.<locals>.np_average_impl  s    *Q--C73<<r&   c                 r   t          j        |           }t          j        |          }|j        |j        k    r+|t          d          |j        dk    rt          d          t          j        |          }|dk    rt          d          t          j        t          j        ||                    |z  }|S )NzCNumba does not support average when shapes of a and weights differ.r*   z81D weights expected when shapes of a and weights differ.        z)Weights sum to zero, can't be normalized.)rb   ru  r   	TypeErrorr}   sumZeroDivisionErrormultiply)r.   rZ   r  re   sclavgs         r'   r  z#np_average.<locals>.np_average_impl  s    jmm*W--9--|'45 5 5 |q(('45 5 5 fWoo#::+CE E E fR[g6677#=
r&   c                      t          d          )Nz)Numba does not support average with axis.)r  )r.   rZ   r  s      r'   r  z#np_average.<locals>.np_average_impl  s     KLLLr&   NN)rU   r   NoneType)r.   rZ   r  r  s       r'   
np_averager    s     *Wen==	  	  	  	  	  <:dEN;;<    ,M M M M r&   c                     t          | t          j        t          j        f          rt          j        S t          d             }|S )z$
    A generic isnan() function
    c                     dS r   r%   xs    r'   _trivial_isnanz!get_isnan.<locals>._trivial_isnan  s    5r&   )rU   r   r  r  rb   r  r   )r   r  s     r'   	get_isnanr    sF     %%+u}566 x		 	 
		r&   c                 *    t          |           rd S d S )Nc                 <    t          j        |           j        dk    S r   rb   ru  r   r  s    r'   <lambda>znp_iscomplex.<locals>.<lambda>      A+q0 r&   r
   r  s    r'   np_iscomplexr          10004r&   c                 *    t          |           rd S d S )Nc                 <    t          j        |           j        dk    S r   r  r  s    r'   r  znp_isreal.<locals>.<lambda>  r  r&   r  r  s    r'   	np_isrealr    r  r&   c                 
   t          |           }t          | t          j                  rt          | j                  }t          j        |t
          j                  t          | t          j                  rfd}nfd}|S )Nc                     | dS S r   r%   r  iscmplxs    r'   rJ  ziscomplexobj.<locals>.impl  s    yuNr&   c                     S r-   r%   r  s    r'   rJ  ziscomplexobj.<locals>.impl  s    Nr&   )determine_dtyperU   r   Optionalr   rb   
issubdtypecomplexfloating)r  dtrJ  r  s      @r'   iscomplexobjr    s     
		B!U^$$ %QV$$mB 233G!U^$$ 	 	 	 	 	 	
	 	 	 	 	Kr&   c                     d }|S )Nc                 ,    t          j        |            S r-   )rb   r  r  s    r'   rJ  zisrealobj.<locals>.impl  s    ?1%%%%r&   r%   r  rJ  s     r'   	isrealobjr    s    
& & &Kr&   c                 0    t          |           fd}|S )Nc                     S r-   r%   )elementrt   s    r'   rJ  znp_isscalar.<locals>.impl  s    
r&   )r   )r  rJ  rt   s     @r'   np_isscalarr    s.    

!
!C    Kr&   c                 @    t          |          rdfd	}ndfd	}|S )Nc                     t          j        t          j        |            t          j        |                               S r-   rb   logical_andr\  signbitr  r   fns     r'   rJ  zis_np_inf_impl.<locals>.impl  s/    >"(1++rr"*Q--/@/@AAAr&   c                     t          j        t          j        |            t          j        |                     |          S r-   r  r  s     r'   rJ  zis_np_inf_impl.<locals>.impl  s1    >"(1++rr"*Q--/@/@#FFFr&   r-   r   )r  r   r  rJ  s     ` r'   is_np_inf_implr     sk     3 G	B 	B 	B 	B 	B 	B 	B	G 	G 	G 	G 	G 	G Kr&   c                 D    t          d           }t          | ||          S )Nc                     | S r-   r%   r  s    r'   r  zisneginf.<locals>.<lambda>  s    A r&   r   r  r  s      r'   isneginfr    s#    	++	&	&B!S"%%%r&   c                 D    t          d           }t          | ||          S )Nc                     |  S r-   r%   r  s    r'   r  zisposinf.<locals>.<lambda>  s    QB r&   r  r  s      r'   isposinfr    s#    	,,	'	'B!S"%%%r&   c                     | |k     S r-   r%   r.   rp  s     r'   	less_thanr        q5Lr&   c                     | |k    S r-   r%   r  s     r'   greater_thanr    r  r&   c                 :    | j         dk    rt          d          d S )Nr   z3zero-size array to reduction operation not possible)r   r~   r   s    r'   check_arrayr  #  s#    v{{NOOO {r&   c                 "     |r fd}n fd}|S )Nc                    t          j        |           }t          |           t          j        |          }t	          |                              d          }|D ]}|                                }t          j        |j                  rt          j        |j                  s|}K |j        |j                  r|}d|j        |j        k    r |j	        |j	                  r|}|S r   )
rb   ru  r  rc   r  r   rd   r  r   r   r.   re   r  
return_valr   rg   comparison_ops         r'   rJ  z!nan_min_max_factory.<locals>.impl+  s    *Q--C3Bbq))J 	+ 	+IIKK8JO,, +RXaf5E5E +!"JJ$}QVZ_== +%&

:?22(=AA +)*Jr&   c                 0   t          j        |           }t          |           t          j        |          }t	          |                              d          }|D ]8}|                                }t          j        |          s ||          s|}9|S r   )rb   ru  r  rc   r  r   rd   r  r  s         r'   rJ  z!nan_min_max_factory.<locals>.impl<  s    *Q--C3Bbq))J ' 'IIKKx{{ '(=Q77 '%&
r&   r%   )r  is_complex_dtyperJ  s   `  r'   nan_min_max_factoryr  )  sI     	 	 	 	 	 	"
	 
	 
	 
	 
	 Kr&   )r  Tc                 h   t          j        |           rt          j        |          r|S t          j        |           r"t          j        |          r| dk    |dk    k    S t          j        |           st          j        |          rdS t          | |z
            ||t          |          z  z   k    S )Nr   Fr[  )r  yr`  ra  rb  s        r'   _isclose_itemr  Y  s    	x{{ 2rx{{ 2	! 2! 2A1q5!!	! 2 2u1q5zzTD3q66M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	}nvt          | t          j	                  rt          |t          j                  rdd
}n=t          | t          j                  rt          |t          j                  rdd}ndd}|S )Nrh  ri  rj  rk  rl  rW  rX  Fc                 2   |                      d          }|}t          j        t          |          t          j                  }t          t          |                    D ]}t          ||         ||||          ||<   |                     | j                  S NrA  rD  rb   zerosrF   r   r3   r  r   	r.   rp  r`  ra  rb  r  r  r   r/   s	            r'   isclose_implzisclose.<locals>.isclose_implz  s    		"AA(3q6628,,C3s88__ G G&qtQdIFFA;;qw'''r&   c                 2   | }|                     d          }t          j        t          |          t          j                  }t          t          |                    D ]}t          |||         |||          ||<   |                     |j                  S r  r  r  s	            r'   r  zisclose.<locals>.isclose_impl  s    A		"A(3q6628,,C3s88__ G G&q!A$dIFFA;;qw'''r&   c                    t          j        | j        |j                  }t          j        | |          }t          j        ||          }t          j        t          |          t           j                  }t          t          j        ||f                    D ]B\  }	\  }
}t          |

                                |
                                |||          ||	<   Ct          j        ||          S Nr   )rb   broadcast_shapesr   broadcast_tor  rF   r   r   rc   r  rd   )r.   rp  r`  ra  rb  r   a_b_r   r/   ry  rv  s               r'   r  zisclose.<locals>.isclose_impl  s    '99EE**BE**B(3r77"(333C(B8)<)<== 2 28B&rwwyy"''))T4'02 2A?3...r&   c                 (    t          | ||||          S r-   )r  ro  s        r'   r  zisclose.<locals>.isclose_impl  s     AtT9===r&   r  )
r
   r   rU   r  r   r  r  r  r   r  )r.   rp  r`  ra  rb  r  s         r'   iscloser  e  s   A GEFFFA HFGGGdUEK011 , + , , 	, dUEK011 , + , , 	, i$!677 % $ % % 	% !U[!!  >jEL&A&A  >	( 	( 	( 	( 	( 
Au|	$	$ >Au{)C)C >	( 	( 	( 	( 	( 
Au{	#	# >
1ek(B(B >		/ 		/ 		/ 		/ 		/	> 	> 	> 	> r&   c                 z    t          |           }t          j        |t          j                  rt          S t
          S r-   )r  rb   r  r  complex_nanminreal_nanminr.   r  s     r'   	np_nanminr    2    			B	}R+,, r&   c                 z    t          |           }t          j        |t          j                  rt          S t
          S r-   )r  rb   r  r  complex_nanmaxreal_nanmaxr  s     r'   	np_nanmaxr    r  r&   c                 r    t          | t          j                  sd S t          | j                  fd}|S )Nc                     d}d}t          j        |           D ]=}|                                } |          s||                                z  }|dz  }>t          j        ||          S Nr  r   r*   )rb   rc   rd   divide)r.   rf   countr   rg   r  s        r'   nanmean_implz np_nanmean.<locals>.nanmean_impl  sn    IaLL 	 	D		A588 QVVXX
yE"""r&   rU   r   r   r  r   )r.   r  r  s     @r'   
np_nanmeanr    sL    a%% agE	# 	# 	# 	# 	# r&   c                 r    t          | t          j                  sd S t          | j                  fd}|S )Nc                 Z   t          j        |           }d}d}t          j        |           D ]i}|                                } |          sH|                                |z
  }|t          j        |t          j        |          z            z  }|dz  }jt          j        ||          S r  )rb   nanmeanrc   rd   r   r   r  )r.   r   r   r  r   rg   r   r  s          r'   nanvar_implznp_nanvar.<locals>.nanvar_impl  s    JqMM IaLL 	 	D		A588 vvxx!|rwsRWS\\1222
ye$$$r&   r  )r.   r  r  s     @r'   	np_nanvarr    sL    a%% agE% % % % %  r&   c                 D    t          | t          j                  sd S d }|S )Nc                 0    t          j        |           dz  S r   )rb   nanvarr   s    r'   nanstd_implznp_nanstd.<locals>.nanstd_impl  s    y||s""r&   r   )r.   r  s     r'   	np_nanstdr    s2    a%% # # # r&   c                     t          | t          j                  sd S t          | j        t          j                  rt          j        }n| j        } |d          t          | j                  fd}|S )Nr   c                     }t          j        |           D ]&}|                                } |          s||z  }'|S r-   ra   )r.   rf   r   rg   r  rh   s       r'   nansum_implznp_nansum.<locals>.nansum_impl  sK    IaLL 	 	D		A588 Qr&   rU   r   r   r   Integerr5   r  )r.   r   r  r  rh   s      @@r'   	np_nansumr    s    a%% !'5=)) 
588DagE      r&   c                     t          | t          j                  sd S t          | j        t          j                  rt          j        }n| j        } |d          t          | j                  fd}|S )Nr*   c                     }t          j        |           D ]&}|                                } |          s||z  }'|S r-   ra   )r.   rf   r   rg   r  ones       r'   nanprod_implz np_nanprod.<locals>.nanprod_impl	  sK    IaLL 	 	D		A588 Qr&   r  )r.   r   r  r  r  s      @@r'   
np_nanprodr    s    a%% !'5=)) 

%((CagE      r&   c                     t          | t          j                  sd S t          | j        t          j        t          j        f          rd S | j        t                     d          fd}|S )Nc                 *    t          j        |           S r-   )rb   r   r   s    r'   r  znp_nancumprod.<locals>.<lambda>  s    A r&   r*   c                     t          j        | j                  }}t          | j                  D ]\  }} |           r||z  }|||<   |S r-   r   )r.   r   rf   r   rg   is_nanr  r   s        r'   nancumprod_implz&np_nancumprod.<locals>.nancumprod_impl!  sc    (165))CA#AF++  QF1II: FACJr&   rU   r   r   r   r  r  r  )r.   r!  r   r  r   s     @@@r'   np_nancumprodr#    s    a%% !'EM5=9:: &&&5!!eAhh	 	 	 	 	 	 	 r&   c                     t          | t          j                  sd S t          | j        t          j        t          j        f          rd S | j        t                     d          fd}|S )Nc                 *    t          j        |           S r-   )rb   r   r   s    r'   r  znp_nancumsum.<locals>.<lambda>4  s    1 r&   r   c                     t          j        | j                  }}t          | j                  D ]\  }} |           r||z  }|||<   |S r-   r   )r.   r   rf   r   rg   r   r   rh   s        r'   nancumsum_implz$np_nancumsum.<locals>.nancumsum_impl:  sc    (165))CA#AF++  QF1II: FACJr&   r"  )r.   r'  r   r   rh   s     @@@r'   np_nancumsumr(  -  s    a%% !'EM5=9:: %%%5!!uQxx	 	 	 	 	 	 	 r&   c                 h    t          |           }t          |          dk    rt          d          |S )Nr   z&zero-size array reduction not possible)_asarrayrF   r~   r.   re   s     r'   prepare_ptp_inputr,  F  s0    
1++C
3xx1}}ABBB
r&   c                 R     t          |t          j                  r fd}n fd}|S )Nc                      |j         | j                   r|S |j         | j         k    r |j        | j                  r|S | S r-   r   current_valr   r   s     r'   rJ  z+_compute_current_val_impl_gen.<locals>.implV  sU    r#(K,-- 
(k...38[%566 /
r&   c                 $     ||           r|n| S r-   r%   r/  s     r'   rJ  z+_compute_current_val_impl_gen.<locals>.impl^  s    "S+..?33K?r&   )rU   r   r  )r   r0  r   rJ  s   `   r'   _compute_current_val_impl_genr2  O  sY    +u}-- @	 	 	 	 	 		@ 	@ 	@ 	@ 	@Kr&   c                     d S r-   r%   r0  r   s     r'   _compute_a_maxr5  c      Dr&   c                     d S r-   r%   r4  s     r'   _compute_a_minr8  g  r6  r&   c                 8    t          t          j        | |          S r-   )r2  operatorgtr4  s     r'   _compute_a_max_implr<  k      (k3GGGr&   c                 8    t          t          j        | |          S r-   )r2  r:  ltr4  s     r'   _compute_a_min_implr@  p  r=  r&   c                     d S r-   r%   r   s    r'   _early_returnrC  u  r6  r&   c                     dt          | t          j                  rfd}n%t          | t          j                  rfd}nfd}|S )Nr   c                     t          j        | j                  rHt          j        | j                  rdt           j        t           j        dz  z   fS dt           j        dz   fS dfS )NT              ?y                F)rb   r  r   r   nanr   UNUSEDs    r'   rJ  z _early_return_impl.<locals>.impl}  s^    x!! %8CH%% -"&2+!555",,f}$r&   c                 P    t          j        |           rdt           j        fS dfS r   )rb   r  rG  rH  s    r'   rJ  z _early_return_impl.<locals>.impl  s)    x}} %RV|#f}$r&   c                     dfS r   r%   rH  s    r'   rJ  z _early_return_impl.<locals>.impl  s    &= r&   )rU   r   r  r  )r   rJ  rI  s     @r'   _early_return_implrL  y  s    F#u}%% !	% 	% 	% 	% 	% 	% 
C	%	% !	% 	% 	% 	% 	% 	%	! 	! 	! 	! 	!Kr&   ptpc                     t          | d          r.t          | j        t          j                  rt          d          d }|S )Nr   +Boolean dtype is unsupported (as per NumPy)c                    t          |           }|j        }|d         }|d         }t          |j                  D ]B}||         }t	          |          \  }}|r|c S t          ||          }t          ||          }C||z
  S r   )r,  r   r3   r   rC  r5  r8  )	r.   re   a_flata_mina_maxr/   r   take_branchretvals	            r'   np_ptp_implznp_ptp.<locals>.np_ptp_impl  s    ""q	q	sx 	/ 	/A)C"/"4"4K "5#..E"5#..EEu}r&   )hasattrrU   r   r   r  r   )r.   rV  s     r'   np_ptprX    sT     q' Magu}-- 	MKLLL  " r&   c                 f    t          j        |           rdS t          j        |          rdS | |k     S r#   )rb   r  r  s     r'   nan_aware_less_thanrZ    s5    	x{{ u8A;; 	4q5Lr&   c                      d fd	}|S )Nc                     ||z   dz	  } 	| |         | |                   r0| |         | |         c| |<   | |<   r||         ||         c||<   ||<    	| |         | |                   r0| |         | |         c| |<   | |<   r||         ||         c||<   ||<    	| |         | |                   r0| |         | |         c| |<   | |<   r||         ||         c||<   ||<   | |         }| |         | |         c| |<   | |<   r||         ||         c||<   ||<   |}|dz
  }	 ||k     r/ 	| |         |          r|dz  }||k     r 	| |         |          ||k    r/ 	|| |                   r|dz  }||k    r 	|| |                   ||k    rn;| |         | |         c| |<   | |<   r||         ||         c||<   ||<   |dz  }|dz  }| |         | |         c| |<   | |<   r||         ||         c||<   ||<   |S Nr*   r%   )
AlowhighImidpivotr/   jargpartition	pivotimpls
           r'   
_partitionz&_partition_factory.<locals>._partition  s   Tza 9QsVQsV$$ 	0sVQsVNAcFAcF 0!"33##9QtWaf%% 	2fagOAdGQsV 2"#C&!D'$39QsVQsV$$ 	0sVQsVNAcFAcF 0!"33###C&!D'$3 	.fagOAdGQsV1H	d((yy1u55(Q d((yy1u55(s((yy!55(Q s((yy!55(Avv1qtJAaD!A$ (qT1Q4
!adFAFA	 $1!ag 	*dGQqTMAaD!D'r&   r-   r%   )rf  re  rg  s   `` r'   _partition_factoryrh    s0    , , , , , , ,Z r&   )re  c                      d fd	}|S )Nc                      | |||          }||k    r3||k     r|dz   } | |||          }n|dz
  } | |||          }||k    3| |         S )zJ
        Select the k'th smallest element in array[low:high + 1].
        r*   r%   )r  kr_  r`  r   r/   partitionimpls         r'   _selectz _select_factory.<locals>._select  s     M$T3//1ff1uu!e!M$T3771u!M$T377 1ff Awr&   r-   r%   )rl  rm  s   ` r'   _select_factoryrn    s(          Nr&   c                     	 ||k    sJ t          | ||          }||k     r|dz   }nD||dz   k    r|dz
  }n5||k    rt          | |dz   |dz   |           nt          | |||dz
             nj| |         | |dz            fS )z
    Select the k'th and k+1'th smallest elements in array[low:high + 1].

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

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

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

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

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

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

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

I#C

O!C	

O
r&   r  )
rU   r   r   r   r  r   r=  r   rb   can_cast)rA  rB  rC  ary_dtto_begin_dt	to_end_dtr   rI  s           r'   
np_ediff1drN  L  s    #u{## Pci// 	P !NOOO
  $$FK!! 3(22I /&v..	r{;'G'GCS!!!R[F%C%CAS!!!   6 r&   c                     d S r-   r%   r.  s    r'   _select_elementrP    r6  r&   c                 D    t          | dd           dk    }|rd }|S d }|S )Nr}   r   c                 V    t          j        d| j                  }| |d d <   |d         S )Nr*   r  r   )rb   r3  r   )re   r  s     r'   rJ  z"_select_element_impl.<locals>.impl  s.    SY///AAaaaDQ4Kr&   c                     | S r-   r%   r.  s    r'   rJ  z"_select_element_impl.<locals>.impl  s    Jr&   r   )re   zerodrJ  s      r'   _select_element_implrW    sJ    C&&!+E 		 	 	 	 	 	r&   c                     d S r-   r%   )dxr  s     r'   _get_drZ    r6  r&   c                 2    t          |           rd }nd }|S )Nc                 *    t          j        |          S r-   rb   ru  r  rY  s     r'   rJ  zget_d_impl.<locals>.impl  s    :b>>!r&   c                 N    t          j        t          j        |                     S r-   )rb   r@  ru  r^  s     r'   rJ  zget_d_impl.<locals>.impl  s    72:a==)))r&   r  )r  rY  rJ  s      r'   
get_d_implr`    s8    1~~ *	" 	" 	" 	"	* 	* 	*Kr&   rZ  c                     t          | t          j        t          j        f          rt	          d          t          | t          j                  r| j        dk    rt	          d          dd}|S )Nzy cannot be a scalarr   zy cannot be 0DrZ  c                    t          j        |           }t          ||          }|dt          dd           f         |dt          d d          f         z   dz  }t          j        ||z  d          }t          |          }|S )N.r*   rA         @)rb   ru  rZ  rO   r  rP  )r  r  rY  yarrdy_averet	processeds           r'   rJ  znp_trapz.<locals>.impl  sw    z!}}1bMMc5D>>)*T#uT22F-GG3NfQY###C((	r&   NrZ  )rU   r   r  r  r   r   r}   )r  r  rY  rJ  s       r'   np_trapzrj    sv     !elEM233 ,0111	Au{	#	# ,!*+++
    Kr&   c                    |j         \  }}|t          |           k    sJ ||k    sJ |rMt          |          D ];}|dk    r
d|dd|f<   t          j        | |dd|dz
  f                   |dd|f<   <dS t          |dz
  dd          D ]>}||dz
  k    r
d|dd|f<   t          j        | |dd|dz   f                   |dd|f<   ?dS )a*  
    Generate an N-column Vandermonde matrix from a supplied 1-dimensional
    array, x. Store results in an output matrix, out, which is assumed to
    be of the required dtype.

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

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

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


122w#crc("CRCr&   r
   r   )r  r  r  s      r'   jit_np_intersect1dr    sL    
 S!! L%5c%:%: LJKKK    r&   c                    t          |t          j                  r/|j        dk    r"t	          d                    |                     d S t          |t          j                  s"t	          d                    |                     d S )Nr*   z${0}(): input should have dimension 1z+{0}(): input should be an array or sequence)rU   r   r   r}   r  r  r  )	func_nameseqs     r'   validate_1d_array_liker    s    #u{## ,8q==B#VI..0 0 0 = U^,, ,E	**, , 	,, ,r&   c                    t          d|            t          | j        t          j                  sd S t          |d           |d t          j        fvr=t          d|           t          j        t          d             t          d             n,t          j
        t          d             t          d             d	fd	}|S )
Nbincount	minlengthc                 d    t          |           t          |          k    rt          d          d S )Nz7bincount(): weights and list don't have the same length)rF   r~   r.   r  r  s      r'   validate_inputsz$np_bincount.<locals>.validate_inputs2  s8    1vvW%%  "3 4 4 4 &%r&   c                 2    | |xx         ||         z  cc<   d S r-   r%   r   r   r   r  s       r'   
count_itemznp_bincount.<locals>.count_item8  s     HHH$HHHHHr&   c                     d S r-   r%   r  s      r'   r  z$np_bincount.<locals>.validate_inputs?  s    Dr&   c                 &    | |xx         dz  cc<   d S r]  r%   r  s       r'   r  znp_bincount.<locals>.count_itemC  s    HHHMHHHHHr&   r   c                     
| ||           |dk     rt          d          t          |           }|dk    r| d         nd}t          d|          D ]3}| |         dk     rt          d          t          || |                   }4t          |dz   |          }t	          j        |	          }t          |          D ]} ||| |         |           |S )Nr   z 'minlength' must not be negativerA  r*   z/bincount(): first argument must be non-negative)r~   rF   r3   r  rb   r  )r.   r  r  rs  rS  r/   
out_lengthr   r  rF  r  s           r'   bincount_implz"np_bincount.<locals>.bincount_implG  s    7I...q==?@@@FFA!2q! 	% 	%Ataxx  "0 1 1 1qt$$EEI..
hz9--q 	. 	.AJsAqtW----
r&   r   )r  rU   r   r   r  r   r6  rb   r   r   r5   )r.   r  r  r  r  rF  r  s       @@@r'   np_bincountr  #  s   :q)))agu}-- Y,,,tUZ(((z7333 J			4 	4 
		4
 
	% 	% 
		% 	% J			 	 
		 
	 	 
		       & r&   c                    t          j        | j                  rxt          j        |j                  r]t          j        | j                  rt          j        |j                  S t          j        |j                  rdS | j        |j        k    S dS t          j        |j                  rdS t          j        | j                  r+t          j        |j                  r| j        |j        k    S dS t          j        |j                  rdS | j        |j        k     rdS | j        |j        k    r| j        |j        k    S dS r   )rb   r  r   r   r  s     r'   less_than_or_equal_complexr  a  s"   	x !8AF 		x ,x'''8AF## ,46QV++5 8AF 	!4x !8AF## !6QV++ 58AF## !4v#t16)) v// 5r&   c                     t          | t                    st          |t                    rt          | |          S t          |t                    rt	          j        |          rdS | |k    S r  )rU   rW  r  r  rb   r  r  s     r'   _less_than_or_equalr    se    !W Aw!7!7 )!Q///	Au		 8A;; 	46Mr&   c                     t          | t                    st          |t                    rt          | |          S t          |t                    rt	          | |          S | |k     S r-   )rU   rW  less_than_complexr  less_than_floatr  s     r'   
_less_thanr    s`    !W %Aw!7!7 % A&&&	Au		 %q!$$$q5Lr&   c                 f    t          j        |           rdS t          j        |          rdS | |k     S r  )rb   r  r  s     r'   _less_then_datetime64r    s7     
x{{ q	x{{ qq5Lr&   c                 $    t          ||            S r-   )r  r  s     r'   _less_then_or_equal_datetime64r    s    $Q****r&   c                       fd}|S )Nc                 r    ||k     r-|||z
  dz	  z   }| |         } ||          r|dz   }n|}||k     -||fS r]  r%   )r.   key_valr   r8  rH  mid_valcmps         r'   rJ  z_searchsorted.<locals>.impl  si    'G"3!9:GjGs7G$$ "!A+!  r&   r%   )r  rJ  s   ` r'   _searchsortedr    s#    	  	  	  	  	  Kr&   leftrightc                 j   |t           v sJ | j        dv rt          }t          }nt          }t
          }|dk    rt          |          }|}nMt          j        | t          j	                  rt          dk     rt          |          }|}nt          |          }|}t          |          t          |          fS )NmMr  )r*      )VALID_SEARCHSORTED_SIDEScharr  r  r  r  r  rb   r  inexactr   r   )np_dtypesider?  le_impl_cmps         r'    make_searchsorted_implementationr#    s    +++++}"+ v~~b!!=2:.. 	=73J3J ""%%EDD!"%%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	}n%t          |t          j                  rdd}ndfd	}|S )NrW   z Invalid value given for 'side': r  c                    t          j        |j        t           j                  }|j        d         }d}t          |           }t          |j                  D ]m}|j        |         } 	||          rt          |           }n*d}|t          |           k     r|dz  }nt          |           }|} 
| |||          \  }}|||<   n|                    |j                  S )Nr  r   r*   )	rb   r   r   r5   r   rF   r3   rD  r   )r.   rg   r  r   last_key_valr   r8  r/   r  r"  r!  s            r'   rJ  zsearchsorted.<locals>.impl  s    (16111C6!9LG!ffG16]] ! !&)4g.. )!!ffGGGQ''1"%a&&&#(5GWg#F#F  A;;qw'''r&   c                 X    t          j        |          }t          j        | ||          S )Nr  )rb   ru  searchsorted)r.   rg   r  s      r'   rJ  zsearchsorted.<locals>.impl  s&    
1A?1ad3333r&   c                 D     | |dt          |                     \  }}|S r   )rF   )r.   rg   r  rr?   r!  s        r'   rJ  zsearchsorted.<locals>.impl  s'    5Aq#a&&))DAqHr&   r  )r   r  r   rU   r   r   r  r	   r   rb   rv  r#  )	r.   rg   r  side_valv_dtnp_dtrJ  r"  r!  s	          @@r'   r)  r)    s0   t_d33H/// KKKLLL!ek5>233   {{Xag..55E25(CCKE4!U[!! 	( 	( 	( 	( 	( 	( 	( 	(. 
Au~	&	& 	4 	4 	4 	4 	4	 	 	 	 	 	 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          |           dk    rdS | d         }d}|t          |           k     r0| |         |k    r$|dz  }|t          |           k     r| |         |k    $|t          |           k    rdS | |         }||k     r8t          |dz   t          |                     D ]}|}| |         }||k    r dS dS t          |dz   t          |                     D ]}|}| |         }||k     r dS dS )Nr   r*   rA  )rF   r3   )bins
last_valuer/   
next_values       r'   _monotonicityz"np_digitize.<locals>._monotonicity  s3    t99>>1 !W
#d))mmQ: 5 5FA #d))mmQ: 5 5 D		>>1!W

""1q5#d)),,  '
!!W

**11 +1 1q5#d)),,  '
!!W

**11 +2r&   Fc                 |    |          }|dk    rt          d          |rM|dk    r0t          |          t          j        |d d d         | d          z
  S t          j        || d          S |dk    r0t          |          t          j        |d d d         | d          z
  S t          j        || d          S )Nr   z3bins must be monotonically increasing or decreasingrA  r  r(  r  )r~   rF   rb   r)  )r  r2  r  monor5  s       r'   digitize_implz"np_digitize.<locals>.digitize_impl<  s    }T""199E  
  	>rzz4yy2?4":qv#N#N#NNNtQV<<<<rzz4yy2?4":qw#O#O#OOOtQW====r&   r9  )rU   r   r   r   complex_domainr   r   )r  r2  r  r8  r5  s       @r'   np_digitizer:    sx     !U[!! 2ag1E&E&E0111" " "H> > > > > >. r&   r  c                     t          |t          t          j        f          r+|d t          j        fv rt          d          dfd	}n	dd}ndd}|S )Nr  r  c                     } }t          j        |           D ]&}|                                }||k    r|}||k     r|}'t          j        | |||f          S r-   )rb   rc   rd   	histogram)r.   r2  r3   bin_minbin_maxr   rg   r  s          r'   histogram_implz$np_histogram.<locals>.histogram_implb  si    $IaLL $ $D		A{{"#{{"#|Atgw-?@@@r&   c                    |dk    rt          d          |\  }}||k    st          d          t          j        |t          j                  }||k    r|||z
  z  }t          j        |           D ]w}|                                }t          j        ||z
  |z            }	d|	cxk    r|k     r!n n|t          |	          xx         dz  cc<   ^||k    r||dz
  xx         dz  cc<   xt          j	        |||dz             }
||
fS )Nr   z0histogram(): `bins` should be a positive integerz;histogram(): max must be larger than min in range parameterr*   )
r~   rb   r  r5   rc   rd   r  r  r  linspace)r.   r2  r3   r>  r?  hist	bin_ratior   rg   rp  
bins_arrays              r'   r@  z$np_histogram.<locals>.histogram_impln  s6   199$ &8 9 9 9#( '))$ &> ? ? ? xbg..W$$ $'(9 :I "	! 0 0 IIKK JGy'@AA====D===== QLLLA-LLLL'\\ NNNa/NNN['4!8DD
Z''r&   c                    t          |          dz
  }t          |          D ]&}||         ||dz            k    st          d          '|d         }||         }t          j        |t          j                  }|dk    r}t          j        |           D ]h}|                                }	||	cxk    r|k    sn &d}
|dz
  }|
|k     r%|
|z   dz   dz	  }|	||         k     r|dz
  }n|}
|
|k     %||
xx         dz  cc<   i||fS )Nr*   z-histogram(): bins must increase monotonicallyr   )rF   _ranger~   rb   r  r5   rc   rd   )r.   r2  r3   nbinsr/   r>  r?  rC  r   rg   lohirb  s                r'   r@  z$np_histogram.<locals>.histogram_impl  sE   IIMEE]] 6 6Aw$q1u+--$ &5 6 6 6 . 1gG5kG8E27++DqyyIaLL " "D		A"a222272222 BBr''  "Bw{q0tCy==!$qBB!$B r'' HHHMHHHH:r&   r  N)rU   r  r   r  r6  r  )r.   r2  r3   r@  r  s       @r'   np_histogramrL  Y  s    $em,-- L T5:&&&,,C	A 	A 	A 	A 	A 	A 	A( ( ( ( (4	 	 	 	B r&   )ibetar  machepepsnegepepsnegiexpminexpxminmaxexpxmaxirndngrdepsilontinyhuge	precision
resolutionMachAr)rO  rQ  rR  rN  r  rU  r   rS  rP  nexpnmantr\  r]  rZ  bitsr%  )r   r  ra  r   c                     t           dk    rd S d t          j        d          5 d} t          j        d| t          d           t
          j        d d d            n# 1 swxY w Y   t                    fd            }d S )	N)r*      T)recordz(`np.MachAr` is deprecated \(NumPy 1.22\)alwaysz.*numba.*arraymath)messagecategoryrA  c                                   t          fdt          D                       r>d         } t          j        | j        j        d         t          | j        | j                   fd}|S )Nc                 0    g | ]}t          |          S r%   rU  r  r  r  s     r'   r  z7_gen_np_machar.<locals>.MachAr_impl.<locals>.<listcomp>  s!    IIIwq!}}IIIr&   r   c                      t            S r-   )r^  )_mach_ar_datas   r'   rJ  z1_gen_np_machar.<locals>.MachAr_impl.<locals>.impl  s    =))r&   )	rK  _mach_ar_supportedwarningswarn_explicitrf  r;   r    filenamelineno)wmsgrJ  rl  r  	np_MachArws     @@r'   MachAr_implz#_gen_np_machar.<locals>.MachAr_impl  s    IKKIIII6HIIIJJ 	0Q4D"4<#4Q#7#:#'=#';0 0 0
	* 	* 	* 	* 	*r&   )r   rn  catch_warningsfilterwarningsDeprecationWarningrb   r^  r   )r   ru  rs  rt  s     @@r'   _gen_np_macharry    s    A		 	-	-	- 9#);'<	> 	> 	> 	> I	               i       s   ,AA#&A#c                     t          | d|           }t          |          }	  ||          n# t          $ r Y d S w xY wt          fd|D                       t          fd            }|S )Nr   c                 0    g | ]}t          |          S r%   rU  rj  s     r'   r  z'generate_xinfo_body.<locals>.<listcomp>  s!    ...A'!Q--...r&   c                       S r-   r%   )r  	containerrA   s    r'   rJ  z!generate_xinfo_body.<locals>.impl  s    y$r&   )r   r	   r~   rK  r   )	r  np_funcr}  attrnbtyr  rJ  rA   r  s	     `    @@r'   generate_xinfo_bodyr    s    3%%D~~HGH   tt .......//D           Ks   1 
??c                 ^    t          | t          j        t          t                    fd}|S )Nc                      |           S r-   r%   )r   r  s    r'   rJ  zol_np_finfo.<locals>.impl  s    r%yyr&   )r  rb   r%  _finfo_supported)r   rJ  r  s     @r'   ol_np_finfor    s7    	UBHe5E	F	FB    Kr&   c                 ^    t          | t          j        t          t                    fd}|S )Nc                      |           S r-   r%   )int_typer  s    r'   rJ  zol_np_iinfo.<locals>.impl  s    r(||r&   )r  rb   r   _iinfo_supported)r  rJ  r  s     @r'   ol_np_iinfor    s7    	Xrx8H	I	IB    Kr&   c                    t           d             }t          s|S t          j        t          j        z  }| |v o||v }|s|S t          |           }t          |          }t          j        ||          t           fd            }|S )Nc                 p    d}t          t          |                     D ]}|| |         ||         z  z   }|S r   r3   rF   )r.   rp  accr/   s       r'   
_innerprodz#_get_inner_prod.<locals>._innerprod  s?    s1vv 	$ 	$A!qt#CC
r&   c                 z    t          j        |                               |                                        S r-   )rb   r  r  )r.   rp  r  s     r'   	_dot_wrapz"_get_inner_prod.<locals>._dot_wrap   s)    6!((2,,555r&   )r   
_HAVE_BLASr   real_domainr9  r	   rb   rv  )	dtadtbr  fltyfloatsa_dtb_dtr  r  s	           @r'   _get_inner_prodr    s         u33DD[(SD[F 
}}}}dD))		6 	6 	6 	6 
		6r&   c                 x    t          | t          j                  r| j        dk    st	          d|z            d S d S )Nr*   z!%s() only supported on 1D arrays )rU   r   r   r}   r   )r.   r  s     r'   
_assert_1dr  &  sG    !U[!! Ov{{AIMNNNO O{r&   c                     d S r-   r%   )ap1ap2mode	directions       r'   _np_correlate_corer  ,  r6  r&   c                     t          | j                  }t          |j                  }t          j        ||          t	          | j        |j                  fd}|S )Nc                    t          |           }t          |          }||k     rt          d          |}|}|dk    r||z
  dz   }d}d}	n<|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   }0t	          ||z
  dz             D ]!} | |||z            |          |
|<   ||z   }"t	          |	          D ]/}||z
  dz
  } | | d          |d |                   |
|<   ||z   }0|
S )Nz''len(ap1)' must greater than 'len(ap2)'r  r*   r   r   samer|   z1Invalid 'mode', valid are 'full', 'same', 'valid'rA  zInvalid direction)rF   r~   rb   r  r3   )r  r  r  r  n1n2r  rs  n_leftn_rightrg  r   incr/   rk  r  	innerprods                  r'   rJ  z%_np_correlate_core_impl.<locals>.impl7  s    XXXX77 FGGG7??aZ!^FFGGV^^!eGUFaZ!^FFV^^!VF&j1nGG4  
 hvr"">>CCC"__1*CCC0111v 	 	AAA yRaR#qbcc(33CH)CCrBw{## 	 	A yQRZ#66CH)CCw 	 	AA	A yaRSS3rr733CH)CC
r&   )r	   r   rb   rv  r  )	r  r  r  r  r  r  rJ  r  r  s	          @@r'   _np_correlate_core_implr  0  sm    CIDCID		$	%	%B	3955I> > > > > >@ Kr&   r  c                 0   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-   )rb   r   r  s    r'   op_conjz_np_correlate.<locals>.op_conj  s    wqzzr&   c                     | S r-   r%   r  s    r'   op_nopz_np_correlate.<locals>.op_nop  s    r&   r  c                 0   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 emptyrA  r*   rF   r~   r  )r.   rg   r  lalva_opb_ops        r'   rJ  z_np_correlate.<locals>.impl  s    VVVV77233377233377%dd1ggttAwwbAAA%dd1ggttAwwa@@@r&   r  )r  r   r   r   r9  )r.   rg   r  r  r  rJ  r  r  s         @@r'   _np_correlater  z  s    q.!!!q.!!!      	w%&&&7e***DDDDDD7e***DDDDDA A A A A A A Kr&   r   c                 N    t          | d           t          |d           dd}|S )Nznp.convolver   c                 
   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  )r.   rg   r  r  r  s        r'   rJ  znp_convolve.<locals>.impl  s    VVVV77233377233377%a44R4$:::%a44R4$:::r&   r   )r  )r.   rg   r  rJ  s       r'   np_convolver    s=    q-   q-   ; ; ; ; Kr&   c                 @   t          |           sd S t          | t          j                  r+t	          |          s| j        |j        k    rd	d}nJd	d}nDt          | t          j        t          j        f          rt	          |          rd	d}n	d	d}nt          | t          j        t          j	        f          r)t	          |          r| n|}t          |          d	fd	}nt          | t          j        j                  rYt          | j        t          j        t          j	        f          st          d          t	          |          r| j        n|d	fd	}n<t          | t          j                  r t          j        | j                  d	fd	}nd }|S )
Nc                     | S r-   r%   r.   r   s     r'   rJ  znp_asarray.<locals>.impl  s    r&   c                 ,    |                      |          S r-   )r  r  s     r'   rJ  znp_asarray.<locals>.impl  s    xx&r&   c                 *    t          j        |           S r-   r2  r  s     r'   rJ  znp_asarray.<locals>.impl  s    x{{"r&   c                 ,    t          j        | |          S r-   r2  r  s     r'   rJ  znp_asarray.<locals>.impl  s    x5)))r&   c                 .    t          j        |           S r-   r2  )r.   r   r  s     r'   rJ  znp_asarray.<locals>.impl  s    8Ar??"r&   z?asarray support for List is limited to Boolean and Number typesc                     t          |           }t          j        |          }t          |           D ]
\  }}|||<   |S r  )rF   rb   r   r   )r.   r   r<  rg  r/   rg   target_dtypes         r'   rJ  znp_asarray.<locals>.impl  sK    AA(1L111C!!  1AJr&   c                 ,                                     S r-   )r  )r.   r   re   s     r'   rJ  znp_asarray.<locals>.impl  s    88::r&   r-   )r
   rU   r   r   r   r   r  rX   r  r  r	   
containersListTyper   StringLiteralrb   ru  rW   )r.   r   rJ  dt_convre   r  r  s       @@@r'   
np_asarrayr    s    
 A t!U[!! +u 	'EK!7!7    ' ' ' ' '	A4	5	5 $ u 	*# # # # #* * * * *	Aem4	5	5 "5))4!!ug	# 	# 	# 	# 	# 	# 	#	Au'0	1	1 !'EL%-#@AA 	/./ / / #.e"4"4?qww%	 	 	 	 	 	 	 
Au*	+	+ j))	 	 	 	 	 	 	 Kr&   c                     t          |t          j                  rt          |          }t	          j        |t          j                  st          j        n|t          j        ffd	}|S )Nc                 .    t          j        |           S r-   r]  )r.   r   rY  s     r'   rJ  znp_asfarray.<locals>.impl  s    z!R   r&   )rU   r   Typer	   rb   r  r  r   )r.   r   rJ  rY  s      @r'   np_asfarrayr    sp     %$$  =
++ ]j ! ! ! ! ! !Kr&   c                     d }|S )Nc                    t          j        |                                           t          j        |          j        dk    rt	          d          t          j        j        d                    r!j        j        k    rd}t	          |          t          j        j                  }fdt          |          D             }t          j        |          S )Nr   z"Cannot extract from an empty arrayz+condition shape inconsistent with arr shapec                 :    g | ]}|         
j         |         S r%   r  )r  r   r.   r  s     r'   r  z7np_extract.<locals>.np_extract_impl.<locals>.<listcomp>  s(    BBBsS	Bqvc{BBBr&   )	rb   ru  rx  r   r~   r  r   r3   r3  )r  re   r   max_lenr   r.   r  s        @@r'   np_extract_implz#np_extract.<locals>.np_extract_impl  s    z)$$,,..JsOO6Q;;ABBB 6$qvww-   	"TY%7%7?CS//! afdi((BBBBBeGnnBBBx}}r&   r%   )r  re   r  s      r'   
np_extractr    s      ( r&   c                    dd}t          | t          j        t          j        f          st	          d          t          |t          j        t          j        f          st	          d          t          |t
          t          j        t          j        f          st	          d          t          | d         t          j                  st	          d          t          |d         t          j                  st	          d          t          | d         t          j                  r4t          | d         j	        t          j                  st	          d          t          | d         t          j                  rUt          | d         t          j                  r&t          | d         d         t          j                  st	          d	          t          | d         t          j                  r+| d         j
        |d         j
        k    rt	          d
          t          | d         t          j                  r | d         j
        dk     rt	          d          |S )Nr   c                 T   t          |           t          |          k    rt          d          |t          j        |d         j        |d         j                  z  }t          t          |           dz
  dd          D ](}| |         }||         }t          j        |||          })|S )Nz7list of cases must be same length as list of conditionsr   r*   rA  )rF   r~   rb   r  r   r   r3   r  )condlist
choicelistdefaultr   r/   r  choices          r'   np_select_arr_implz%np_select.<locals>.np_select_arr_impl!  s    x==C
OO++ - . . .
1 3Z]5HIIIs8}}q("b11 	. 	.AA;D]F(4--CC
r&   z"condlist must be a List or a Tuplez$choicelist must be a List or a Tuplez,default must be a scalar (number or boolean)z items of condlist must be arraysz"items of choicelist must be arraysz%condlist arrays must contain booleansz*condlist tuples must only contain booleanszHcondlist and choicelist elements must have the same number of dimensionsr*   z/condlist arrays must be of at least dimension 1r  )rU   r   ListrG   r   r  r  r  r   r   r}   )r  r  r  r  s       r'   	np_selectr    s   
 
 
 
 hU^ <== CABBBj5:u~">?? ECDDDgU\5=ABB MKLLL hqk5;// A?@@@jmU[11 CABBB (1+u{++ J(1++U];; 	J !HIII(1+u~.. O8A;77 	Ox{1~u}==	O !MNNN8A;,, :QK
1 222 9 : : 	:(1+u{++ P0@10D0DNOOOr&   c                     t          |           rt          |          st          d          d| j        j        v sd|j        j        v r)| j        j        |j        j        k    rt          d          d }|S )Nz.The arguments to np.union1d must be array-likeunichrz/For Unicode arrays, arrays must have same dtypec                     t          j        t          j        |                     }t          j        t          j        |                    }t          j        t          j        ||f                    S r-   )rb   rC  ru  r  r  )r  r  r.   rp  s       r'   
union_implznp_union1d.<locals>.union_implY  sN    HRZ__%%HRZ__%%yA//000r&   )r
   r   r   r  )r  r  r  s      r'   
np_union1dr  Q  s    C   L(8(=(= LJKKK	SY^	#	#x39>'A'A
y~''KLLL1 1 1
 r&   c                 "   d}t          | t          j        t          j        t          j        f          st          |          t          |          r| j        n.	 t          |          n# t          $ r t          d          w xY wdfd	}|S )Nz7The argument to np.asarray_chkfinite must be array-likez!dtype must be a valid Numpy dtypec                     t          j        |           } t          j        |           D ]%}t          j        |          st	          d          &| S )Nr  z#array must not contain infs or NaNs)rb   ru  rc   r~  r~   )r.   r   r/   r  s      r'   rJ  z"np_asarray_chkfinite.<locals>.implp  s[    Jq###1 	H 	HA;q>> H !FGGGHr&   r-   )
rU   r   r   r  rX   r   r   r   r	   r   )r.   r   r   rJ  r  s       @r'   np_asarray_chkfiniter  a  s     DCa%+u~u{CDD #5 CW	C%BB' 	C 	C 	CABBB	C      Ks   A, ,BrA  -DT!@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
                  r5t          j        t          | j                  t          |                    n1t          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*   rA  r  c                    |dk    rd}t          |          t          j        |                                         }|j        }|d         }|                    |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k    z  |	|          }||z
  }t          j        t          j        d |D                       |k     d|          }t          j        t          j        d |D                       |k     d|          }t          j        ||j                  }t          j        |          }|         |                                z   |<   |||<   #|                    |          S )NrA  z*Value for argument "axis" is not supportedr|   r   Tc                 ,    g | ]}t          |          S r%   r]  r  s     r'   r  z.numpy_unwrap.<locals>.impl.<locals>.<listcomp>  s    +?+?+?qCFF+?+?+?r&   c                 ,    g | ]}t          |          S r%   r  r  s     r'   r  z.numpy_unwrap.<locals>.impl.<locals>.<listcomp>  s    )=)=)=Q#a&&)=)=)=r&   )r~   rb   ru  r  r   rD  r   divmodr3   r@  modr  r3  r  r   )pdiscontrZ   periodr   p_init
init_shape	last_axisp_newinterval_highremboundary_ambiguousinterval_lowr/   rowddddmod
ph_correctph_ravelupr   integer_inputslice1s                       r'   rJ  znumpy_unwrap.<locals>.impl  s   2::>CS//!A%%e,,\
rN	y 8)DEE?qjG 	&!'!2!2M3!$"QJM!%%~ v{i/00 	 	A(CBF2,f55DE! 7%<"7BF!C!.7 7J"(+?+?B+?+?+?"@"@7"JA",. .Jx)=)=")=)=)= > > H! *, ,HHj.>??JBVz'8'8':'::BvJE!HH}}Z(((r&   NrA  r  )rU   r  r   r  r   r
   r  r   r   r  r  rO   rb   r  r	   r   r   r  integer)	r  r  rZ   r  r   rJ  r   r  r  s	         @@@r'   numpy_unwrapr  z  sn   dS%-011 6#A 3#w <== '007#fuel344 6#AtT""$F&%,'' >x00(62B2BCCx00"*==M%4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 )NrZ  r|   r   r*   )rb   r  r  
less_equalr  rs  s     r'   np_bartlett_implr
    sQ    
	"q&!QA8BM!Q''Q!a%[!a1q5k/JJJr&   c                     t          j        d| z
  | d          }ddt          j        t           j        |z  | dz
  z            z  z   dt          j        dt           j        z  |z  | dz
  z            z  z   S )NrZ  r|   gzG?r   r*   g{Gz?rc  rb   r  cosr_  r	  s     r'   np_blackman_implr    sn    
	"q&!QA3	QU 3444426#+/QU34445 6r&   c                     t          j        d| z
  | d          }ddt          j        t           j        |z  | dz
  z            z  z   S )Nr*   r|   gHzG?gq=
ףp?r  r	  s     r'   np_hamming_implr    sB    
	!a%AA$	QU 344444r&   c                     t          j        d| z
  | d          }ddt          j        t           j        |z  | dz
  z            z  z   S )Nr*   r|   r   r  r	  s     r'   np_hanning_implr    sB    
	!a%AArvbeai1q5122222r&   c                       fd}|S )Nc                 d    t          | t          j                  st          d          fd}|S )NM must be an integerc                     | dk     r t          j        dt           j                  S | dk    r t          j        dt           j                  S  |           S )Nr*   r%   r  )rb   r3  float_r  )r  funcs    r'   window_implz>window_generator.<locals>.window_overload.<locals>.window_impl  sP    1uux")4444Avvwq	2222477Nr&   )rU   r   r  r   )r  r  r  s     r'   window_overloadz)window_generator.<locals>.window_overload  sG    !U]++ 	64555	 	 	 	 	 r&   r%   )r  r  s   ` r'   window_generatorr    s$         r&   )g4!\Tg}b3<gr넱g^<g"P
g'&&KF5=gbLag$ӛ/=gjzg<t̾=gVg4T&>g0Kg5dMv;p>g"c쑾g$>g'doҾgY(X?>gZY&+g|t(?gRBguZ?gI ^qga?g!Ng-Ί>?g-4pKgw?gWӿg*5N?)gT`g0fFVg!<gA`<gҫ`g8箸g}<g攐*<gbe~g2hϙ]'gE_V=gsk[=g&GCi=gfCg{~5g%t9QgO $=guo >g["d,->gmրVX>gna>g+A>gRx?gI墌k?g	b?c                     |d         }d}t          dt          |                    D ]}|}|}| |z  |z
  ||         z   }d||z
  z  S )Nr   r  r*   r   r  )r  valsb0b1r/   b2s         r'   _chbevlr!  7  s_    	aB	B1c$ii   # #Vb[47""r'?r&   c                    | dk     r|  } | dk    r2d| z  dz
  }t          j        |           t          |t                    z  S t          j        |           t          d| z  dz
  t                    z  t          j        |           z  S )Nr   g       @r   rc  g      @@)rb   expr!  _i0A_i0Br  r)  s     r'   _i0r&  D  sw    1uuBCxx1WOvayy71d++++6!99wtax#~t444rwqzzAAr&   c           	      >   t          j        | t           j                  }t          t          j        |                    }t	          t          |                    D ]>}t          |t          j        d| |         |z
  |z  dz  z
            z            |z  ||<   ?|S )Nr  r*   rc  )rb   r  r  r&  r3   rF   r  )rs  alphabetar  tr/   s         r'   _i0nr+  O  s    
ary)))ABIdOOA3q66]] J J4"'!!u'=&C"CDDDEEI!Hr&   c                     t          | t          j                  st          d          t          |t          j        t          j        f          st          d          d }|S )Nr  z beta must be an integer or floatc                     | dk     r t          j        dt           j                  S | dk    r t          j        dt           j                  S t          j        d|           }| dz
  dz  }t          |||          S )Nr*   r%   r  r   rc  )rb   r3  r  r  r  r+  )r  r)  rs  r(  s       r'   np_kaiser_implz!np_kaiser.<locals>.np_kaiser_impla  sp    q558Bbi00006671BI....IaOOQ#Aud###r&   )rU   r   r  r   r  )r  r)  r.  s      r'   	np_kaiserr/  Y  sf    a'' 20111dU]EK899 ><===	$ 	$ 	$ r&   c                 h   d } ||           \  }}} ||          \  }}}	t          j        ||	          t          j        ||          z
  }
t          j        ||          t          j        ||	          z
  }t          j        ||          t          j        ||          z
  }|
|d<   ||d<   ||d<   d S )Nc                     | d         }| d         }| j         d         dk    r	| d         }n-t          j        | j                            d          |          }|||fS )N.r   .r*   rA  r{   .r|   r   )r   rb   r  r   r   )r  x0r  x2s       r'   _cross_preprocessingz._cross_operation.<locals>._cross_preprocessingr  sY    vYvY72;!6BBQW\\!__b11B2rzr&   r2  r3  r4  )rb   r  )r.   rp  r   r7  a0r  r  r  r  r   cp0cp1cp2s                r'   _cross_operationr<  o  s       &%a((JBB%%a((JBB
+b"

B 3 3
3C
+b"

B 3 3
3C
+b"

B 3 3
3CCKCKCKKKr&   c                     d S r-   r%   r  s     r'   _crossr>    r6  r&   c                     t          j        t          | j                  t          |j                            | j        dk    r|j        dk    rfd}nfd}|S )Nr*   c                 T    t          j        d          }t          | ||           |S )Nr{   )rb   r   r<  )r.   rp  cpr   s      r'   rJ  z_cross_impl.<locals>.impl  s+    $&&BQ2&&&Ir&   c                     t          j        | d         |d                   j        }t          j        |dz             }t	          | ||           |S )Nr2  rA  )rb   r  r   r   r<  )r.   rp  r   rB  r   s       r'   rJ  z_cross_impl.<locals>.impl  sK    F1V9ai006E%$,..BQ2&&&Ir&   )rb   rv  r	   r   r}   )r.   rp  rJ  r   s      @r'   _cross_implrD    s|    Xag..0A0ABBEv{{qv{{	 	 	 	 	 	
	 	 	 	 	
 Kr&   c                 f    t          |           rt          |          st          d          d }|S )NInputs must be array-like.c                 .   t          j        |           }t          j        |          }|j        d         dvs|j        d         dvrt          d          |j        d         dk    s|j        d         dk    rt	          ||          S t          d          )NrA  )r|   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`.)rb   ru  r   r~   r>  r.   rp  r  r  s       r'   rJ  znp_cross.<locals>.impl  s    Z]]Z]]8B<v%%"V)C)C-  
 8B<1 1 1"b>>!H  r&   r  r.   rp  rJ  s      r'   np_crossrJ    sG    A 8&6q&9&9 86777  " Kr&   c                     d } ||           \  }} ||          \  }}t          j        ||          t          j        ||          z
  }t          j        |          S )Nc                 *    | d         }| d         }||fS )Nr2  r3  r%   )r  r5  r  s      r'   r7  z0_cross2d_operation.<locals>._cross_preprocessing  s    vYvY2vr&   )rb   r  ru  )r.   rp  r7  r8  r  r  r  rB  s           r'   _cross2d_operationrM    sm      
 "!!$$FB!!!$$FB	R		r{2r22	2B :b>>r&   c                     d S r-   r%   r  s     r'   cross2drO    r6  r&   c                 f    t          |           rt          |          st          d          d }|S )NrF  c                     t          j        |           }t          j        |          }|j        d         dk    s|j        d         dk    rt          d          t	          ||          S )NrA  r|   zRIncompatible dimensions for 2D cross product
(dimension must be 2 for both inputs))rb   ru  r   r~   rM  rH  s       r'   rJ  zcross2d_impl.<locals>.impl  sf    Z]]Z]]8B<1 1 18   ""b)))r&   r  rI  s      r'   cross2d_implrR    sG    A 8&6q&9&9 86777* * * Kr&   fbc                     t          | t          j                  st          d          | j        dk    rt          d          t          |t
          t          j        f          st          d          dd}|S )Nz#The first argument must be an arrayr*   zarray must be 1Dz$The second argument must be a stringrS  c                     t          j        |           }d}|                                }d|v r|D ]}|dk    r n|dz   }t          |           }d|v r|d d d         D ]}|dk    r n|dz
  }|||         S )Nr   r  r*   rp  rA  )rb   ru  r  rF   )filttrimr  firstr/   lasts         r'   rJ  znp_trim_zeros.<locals>.impl  s    Zzz||$;; & &66E!AIEE4yy$;;"X $ $66E!8DD%*~r&   rS  )rU   r   r   r   r}   strUnicodeType)rV  rW  rJ  s      r'   np_trim_zerosr]    s    dEK(( DBCCCy1}}/000dS%"3455 ECDDD   & Kr&   r-   r  r  r9  r   r  r  ri  r   r  r  rS  r,  rK  r  r  r  rZ  (  __doc__r  collectionsr   r:  rn  llvmlite.irrB  numpyrb   
numba.corer   r   numba.core.extendingr   r   r   numba.np.numpy_supportr	   r
   r   r   r   r   r   r   numba.core.imputilsr   r   r   r   numba.np.arrayobjr   r   r   r   numba.np.linalgr   r   numba.core.errorsr   r   r   r   r   r    numba.cpython.unsafe.tupler!   r(   r  rK   r^   r  r   ru   rx   r   r5   	DTypeSpecIntegerLiteralr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   aminr  r  amaxr  r!  r&  r+  r,  r4  r9  r<  r>  r3  rL  rP  rQ  rV  re  rf  r  r  r  averager  r  	iscomplexr  isrealr  r  r  isscalarr  r  r  r  r  r  r  r  r  r  r  r  r  r  nanminr  nanmaxr  r
  r  r  r  nanstdr  nansumr  nanprodr  
nancumprodr#  	nancumsumr(  r,  r2  r5  r8  r<  r@  rC  rL  rM  rX  rZ  rh  rg  _partition_w_nan_argpartition_w_nanrn  rm  r  r  rp  ru  medianrz  r  r  r  r  r  r  r  r  r  nanpercentiler  quantiler  nanquantiler  	nanmedianr  r  r  r  	partitionr  re  r  r  r  r  r  r  trilr  r  r  tril_indices_fromr  r  triur#  r*  r'  triu_indices_fromr,  r/  r7  r=  ediff1drN  rP  rW  rZ  r`  trapzrj  rm  ro  vanderrx  rollr  r  r  r  r  interpr  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  corrcoefr  argwherer  flatnonzeror  r  r  r  r#  r'  r:  r*  r0  fill_diagonalr;  r>  rJ  rP  aroundrY  round_r\  rb  rc  rk  rn  r
  r  r  r  r  r  r  r  r  r   r  r   r  containsr  count_nonzeror  r  r  deleter  r@  r  array_equalr  intersect1dr  r  r  r  r
  r	  r  r  r  r  r  r  r   r  r#  r)  digitizer:  r3   rG  r=  rL  rm  r^  r  r%  r  r   ry  r  r  r  r  r  r  r  	correlater  convolver  ru  r  asfarrayr   r  extractr  selectr  union1dr  asarray_chkfiniter  unwrapr  r
  r  r  r  r  bartlettblackmanhamminghanningr3  r$  r%  r!  r&  r+  kaiserr/  r<  r>  rD  crossrJ  rM  rO  rR  
trim_zerosr]  r%   r&   r'   <module>r     s#   
  " " " " " "           % % % % % % % % L L L L L L L L L LM M M M M M M M M M M M M M M M M M M MG G G G G G G G G G G G/ / / / / / / / / / / / ' ' ' ' ' ' * * * * * *H H H H H H H H H H H H H H H H 5 4 4 4 4 4   []]
 %! %! %!P E! E! E!V rvu{##{EK((E E )( $#E   > > >B rvu{EJ@@rvu{E$8%/JJ{EKU_EE{EK)=uOO$D $D PO FE KJ A@$DN rvu{U_55{EK99E E :9 65E rvu{EJ//rvu{E$899{EK44{EK)=>>%D %D ?> 54 :9 0/%DP   
"'f%%  &%  
")h''! ! (' !. 
"*i((" " )( ". 
"'f%%  &% * 
"&e$$  %$   
"&e$$  %$           
"&	"'e$$, , %$  ,^ 
"&	"'e$$, , %$  ,^   *   *   & 
")h''   (' $   *   *   ") ) )X 
")h''   (' $ 
"&e$$  %$     2 
"+j))?, ?, ?, *) ?,D 
"&e$$  %$  
"*! ! ! !H
 
 
 
",   
")   
"/  & 
",   
"+  
 
 
 
"+& & & &
 
"+& & & &
       P P P
  D 	E:::  u===  "!	D999  "!t<<< 
 2 2 2 
"*5 5 5 5p 
")   
")   
"*  & 
")  0 
")   
")  * 
"*  * 
"-  0 
",  0     (	 	 		 	 	 
.H H H 
.H H H	 	 	 
-  . e$$	"&   %$<   . . . .b 00;;<<
##$6$67J$K$KLL &&'9'9( ( (     " 
??:66
7
7  1A!B!BCC$$__5H%I%IJJ       0 3 3 3 
")   1 1 1h         F F F
 B B B
   "" " "4 
"-   
"
   
"+   
".   
",  0   (   *   D 
",  0 
"/     6 	 	 	 
"&
 
 
 
     > > > >
 
"'" " " "4 
"/
  
  
  
  
"

% 
% 
%  
% > > > >
 
"'" " " "2 
"/
  
  
  
  
"

% 
% 
%  
%	 	 	 
.1 1 1     " 
"*4 4 4 4n	 	 	 
/  	 	 	 
&   
"(   * < < <6 @ @ @ 
")$" $" $" $"N 
"'  2   A A AH j j jZ U U Up 
")% % %V 	 	 	   0	 	 	 

"##$$ $$ $#$$N       %$[[11   *O O O 8 8 8 $#KK00  9 9 9  4 3 3 3    
"&7 7 7 7t 
"+       H 
"+  0 
".  "   *       D D D D D D nn--
	 	 	 
(1 1 1 
"
   @, , ,
   " ) ) )4 
")	"(	")4 4 4   4n 
"'M M M& 
"(< < < <@ rz5;'',,5D 5D -, ('5Dp          . 
"(      
"(2 2 2j 
"'   
"'   
(

 
 
 
"
     -,\\:: ,,-E-EFF  
")+% +% +%\ 
"'# # # #L 
".  * 
".     ,, , , 
"+6 6 6 6r #"9--$$Z00  ! ! !B       	 	 	 + + +  $ %9fg%677 ; ; ;8 
"/0 0 0 0f 
"+A A A AH 
 
",O O O Oh%  
H0	1	13 
 	
7,-- + 
7,--
  <        
"(   
"(    <O O O	 	 	 

F F FR 
",) ) ) )X 
"+   * 
"*4 4 4 4n 
"+     
"*  2 
")/ / / /d 
"*   
"
    0 
")C C C C\ K K K
 6 6 6 5 5 5
 3 3 3
  "   &&'788 9 9 9   &&'788 9 9 9   %%o66 7 7 7   %%o66 7 7 7 rx     B rx     : 	 	 	 B B B    
")  *   .	 	 	 
&    
"(  0   &	 	 	 
'  " 
"-     r&   