
    J/Ph~R             	       (   d Z ddlZddlmZ ddlZddlZddlZddl	m
Z
mZ ddl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+ ddl,m-Z- d Z. e.            Z/e%d             Z0e%d             Z1 eej2        e
j3                   ede
j3                  d                         Z4ed             Z5d Z6 eej2        e
j3        e
j7        e
j8                   eej2        e
j3        e
j9        e
j8                   ede
j3        e
j7        e
j8                   ede
j3        e
j9        e
j8                  d                                                 Z: eej2        e
j3        e
j8                   ede
j3        e
j8                  d                         Z; eej2        e
j3        e
j7                   eej2        e
j3        e
j9                   ede
j3        e
j7                   ede
j3        e
j9                  d                                                 Z<d Z= eej>                   ee
j3        d          d                         Z? eej@                   ee
j3        d          d                         ZA eejB                   ee
j3        d          d                         ZC eejD                   ee
j3        d          d                         ZE eejF                   ee
j3        d           d!                         ZG eejH                   ee
j3        d"          d#                         ZIed$             ZJed%             ZKed&             ZL eejM                   eejN                   ee
j3        d'          d(                                     ZO eejP                   eejQ                   ee
j3        d)          d*                                     ZRed+             ZSed,             ZTed-             ZU eejV                   ee
j3        d.          dd/                        ZWed0             ZXed1             ZYed2             ZZd3 Z[ eej\                   ee
j3        d4          dd5                        Z] eej^                   ee
j3        d6          d7                         Z_edd;            Z` eeja                   ee
j3        d<          dd=                        Zb eejc                   ee
j3        d>          d?                         Zd eeje                  dd@            ZfdA Zg eejh                  dB             Zi eejj                  dC             Zk eejl                  dD             Zl eejm                  dE             Zm eejn                  dF             ZodG Zp eejq                  ddH            Zq eejr                  ddI            ZredJ             ZsedK             ZtedL             ZudM Zv e evesd:N                    Zw e evetd:N                    Zx e evesdON                    Zy e evetdON                    ZzedP             Z{ eej|                  ddQ            Z| eej}                  dR             Z~ eej                  dS             Z eej                  dT             Z eej                  dU             Z eej                  dV             Z eej                  dW             Z eej                  dX             Z eej                  dY             Z eej                  dZ             Zed[             Zd\ Zd] Zd^ Z ee          d_             Z ee          d`             Zda Z ee          db             Z eej                  dc             Zeddk     r  ee
j3        de          e           edf             ZddgZ e ees                    Z e ee                    Z e eedOh                    Zdi Z e ee                    Z e ee                    Z e ee                    Zedj             Zedk             Z eej                  dl             Zedm             Zedn             Zedo             Zedp             Zedq             Zedr             Zds Z eej                  dt             Z eej                  du             Z eej                  dv             Z eej                  dw             Z eej                  dx             Zedy             Zedz             Zed{             Z eej                  d|             Z eej                  d}             Zed~             Z eej                  dd            Zed             Zedd            Z eej                  dd            Z eej                  dd            Z eej                  dd            Zedd            Z eej                  dd            Z eej                  dd            Z eej                  dd            Zd Z eeЦ          d             Zd Z eej                  dd            Zd Z eeզ          d             Zd Z eeצ          d             Z eej                  dd            Zeddk    r  eej                  eڦ           ed             Zed             Z eej                  dd            Z eej                  d             ZdZed             Zed             Zed             Z eej                  d             Zed             Zed             Zd Z ee          d             Zed             Z ed           Zd Zd Zed             Z ed           Zed             Zd Zed             Zed             Z eej                  dd            Z eej                  dd            Z eej                  d             Z eej                  d             Zed             Zed             Zed             Z ed             Zed             Z ed           Zd Z ee          d             Z eej                  dd            Zd Ze%d             Z	ed             Z
 eej                   eej                  dd                        Zeddk     r  eej                  e            eej                  d             Z eej                  dd            Z eej        e
j3                   ede
j3                  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dτ            Z-dЄ Z. eej/                  ddф            Z0 ee          Z1 ee          Z2ed҄             Z3edӄ             Z4edԄ             Z5edՄ             Z6edք             Z7dׄ Z8 e9ddh          Z:dڄ Z; eej<                  ddۄ            Z< eej=                  dd܄            Z>e?Z@ eejA                  ddބ            ZBdߐZC edeC          ZDdZE edeE          ZFdZG edeG          ZHd ZI eejF                  d             ZJ eejH                  d             ZKd ZLd ZMd ZN eeN          d             ZO eejP                  dd            ZQ eejR                  d d            ZS eejT                  dd            ZUeddk     r# eejV                  ejW        fd            ZX eejY                  d             ZZ eej[                  dd            Z\ eej]                  d             Z^ eej_                  dd            Z` eeja                  d!d            Zbed             Zced             Zded             Zeed             Zfd Zg  eejh                   egec                       eeji                   eged                       eejj                   egee                       eejk                   egef                      ejl        g d          Zm ejl        g d          Zned              Zoed             Zped             Zq eejr                  d             Zsed             Ztd Zu eeu          d             Zv eejw                  d             Zxed             Zyd	 Zz eez          d
             Z{ eej|                  d"d            Z} eej~                  dd            Z eej                  dd            Z eej                  d#d            Z eej                  d#d            Zd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)tuple_setitemc                  H    	 t                       n# t          $ r Y dS w xY wdS NFT)r   ImportError     V/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/numba/np/old_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_indexerD   s    Q4Kr%   )	get_value_typer   get_null_valuerangeget_constantr   intpcompile_internalinsert_value)cgctxbuilder	signatureargslltuptytupin_shape_r/   r.   dataidxdatand
shape_listtuptys               r&   codegenz+_create_tuple_result_shape.<locals>.codegen<   s    &&u--$W-- 1	 	 	 r 	5 	5A((Q77G))'=*/*Z*L*L+3W*=? ?D &&sD!44CC
r%   )lenr   UniTupler4   )tyctxrB   shape_tuplefunction_sigrD   rA   rC   s    `   @@r&   _create_tuple_result_shaperJ   +   sm     
[		A	BN5:r**E5[11L      *   r%   c                 r  	
 t          |t          j                  st          d          |j        	t          |          
	
k    rd		}
|z
  dz
  }g }|t          j        g|z  z  }|t          j        gz  }|t          j        g|z  z  }t          j        |           |||          }	
fd}||fS )aH  
    Generates a tuple that can be used to index a specific slice from an
    array for sum with axis.  shape_tuple is the size of the dimensions of
    the input array.  'value' is the value to put in the indexing tuple
    in the axis dimension and 'axis' is that dimension.  For this to work,
    axis has to be a const.
    z axis argument must be a constantr   r)   c                    |                                }t          j        |          }|\  }}}d }|                     ||t	          j                    g           }	t          d          D ]}
|                    ||	|
          }|                    ||          }t          dz             D ]}
|                    ||	|
          }|S )Nc                  "    t          d d           S r,   )slicer$   r%   r&   create_full_slicez<_gen_index_tuple.<locals>.codegen.<locals>.create_full_slice   s    t$$$r%   r   r)   )r0   r   r1   r5   r   slice2_typer2   r6   )r7   r8   r9   r:   r;   r<   r>   	value_argrO   
slice_datar.   
axis_valuerA   rC   s              r&   rD   z!_gen_index_tuple.<locals>.codegen{   s    &&u--$W-- !Iq	% 	% 	% ++G5F,1,=,?,?,.0 0
 q*%% 	; 	;A&&sJ::CC ""3	:>> zA~r** 	; 	;A&&sJ::CC
r%   )	
isinstancer   Literalr   literal_valuerE   rP   r4   Tuple)rG   rH   valueaxisbeforeafter
types_listrI   rD   rS   rA   rC   s            @@@r&   _gen_index_tupler]   T   s     dEM** F!"DEEE#J	[		B R
 FK!OEJ5$%..J5:,J5$%--J K
##E5eT22L      >   r%   z	array.sumc           	          |                     d          fd}|                     ||||t          |j                             }t          | ||j         |          S )Nr   c                 h    }t          j        |           D ]}||                                z  }|S r,   npnditeritem)arrcvzeros      r&   array_sum_implz!array_sum.<locals>.array_sum_impl   7    3 	 	AMAAr%   re   localsreturn_typer5   dictr   contextr8   sigr:   rh   resrg   s         @r&   	array_sumrt      {     ??1D     
"
"7NC*.*A*A*A # C CCWgsDDDr%   c                     | S r,   r$   )rd   rf   s     r&   _array_sum_axis_noprw      s    Jr%   c                       fd}|S )Nc                 
   | j         }s|dk     s|dk    rt          d          ||k    rt          d          t          | j                  }||         }|                    |           t          || j                  }t          j        |t                              }t          |          D ]}r"t          | j        |          }|| |         z  }&|dk    r"t          | j        |d          }	|| |	         z  }N|dk    r"t          | j        |d          }
|| |
         z  }v|dk    r"t          | j        |d          }|| |         z  }|dk    r!t          | j        |d          }|| |         z  } |d          S )a(  
        function that performs sums over one specific axis

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

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

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

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

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

&#
     $ Or%   maxc                    t          | t          j                  sd S t          | j        t          j        t          j        f          rt          j        t          nzt          | j        t          j	                  rt          d }t          |          nAt          | j        t          j                  rt          j        t          nt          t          fd}|S )Nc                 n    | j         |j         k    rdS | j         |j         k    r| j        |j        k    rdS dS r   r   )r-   max_vals     r&   r   znpy_max.<locals>.comp_func)  r   r%   c                 .   | j         dk    rt          d          t          j        |           }t	          |                              d          } |          r|S |D ]3}|                                } |          r|c S  ||          r|}4|S )Nr   zDzero-size array to reduction operation maximum which has no identityr  )r-   r  	max_valuer   rf   r  r  s        r&   impl_maxznpy_max.<locals>.impl_max9  r	  r%   )rT   r   r   r   r
  r  ra   r  r   r  r   r   r  r  )r-   r   r  r  r  s      @@r&   npy_maxr    r  r%   c                 Z   | j         dk    rt          d          t          j        |           }t	          |                              d          }d}t          j        |          r|S d}|D ]=}|                                }t          j        |          r|c S ||k     r|}|}|dz  }>|S Nr   *attempt to get argmin of an empty sequencer)   r   r}   ra   rb   r  r   r  rc   )arryr  r  min_idxr   r   rf   s          r&   array_argmin_impl_datetimer   N      yA~~EFFF	4BRa  IG	x	 
C  IIKK8A;; 	JJJy==IGqNr%   c                     | j         dk    rt          d          | j        D ]}|}d} t          j        |          r|S d}| j        D ])}t          j        |          r|c S ||k     r|}|}|dz  }*|S r  r   r}   r   ra   r  r  rf   r  r  r   s        r&   array_argmin_impl_floatr%  d      yA~~EFFFY  		x	 
CY  8A;; 	JJJy==IGqNr%   c                     | j         dk    rt          d          | j        D ]}|}d} nt          d          d}| j        D ]}||k     r|}|}|dz  }|S )Nr   r  unreachabler)   )r   r}   r   RuntimeErrorr$  s        r&   array_argmin_impl_genericr*  z  s    yA~~EFFFY * *	=)))
CY  y==IGqNr%   argminc                    t          | j        t          j        t          j        f          rt
          n.t          | j        t          j                  rt          nt          t          |          rdfd	}nt          | |          }|S )Nc                      |           S r,   r$   r-   rY   flatten_impls     r&   array_argmin_implz'array_argmin.<locals>.array_argmin_impl      <??"r%   r,   )rT   r   r   r
  r  r   r  r%  r*  r   %build_argmax_or_argmin_with_axis_impl)r-   rY   r0  r/  s      @r&   array_argminr3         !'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   rf   s          r&   array_argmax_impl_datetimer8    r!  r%   c                     | j         dk    rt          d          | j        D ]}|}d} t          j        |          r|S d}| j        D ])}t          j        |          r|c S ||k    r|}|}|dz  }*|S r6  r#  r  rf   r  r7  r   s        r&   array_argmax_impl_floatr;    r&  r%   c                     | j         dk    rt          d          | j        D ]}|}d} d}| j        D ]}||k    r|}|}|dz  }|S r6  )r   r}   r   r:  s        r&   array_argmax_impl_genericr=    ss    yA~~EFFFY  	
CY  y==IGqNr%   c                     t          |d           t          j        t          t	          | j                            dfd	}|S )z|
    Given a function that implements the logic for handling a flattened
    array, return the implementation function.
    rY   Nc                    |dk     r
| j         |z   }|dk     s|| j         k    rt          d          | j         dk    r 	|           S }t          || j         dz
            D ]}t          |||dz             }t          || j         dz
  |          }|                     |          }|j        d         }|                                }|j        | j        k    sJ |j        |z  dk    sJ t          j	        |j        |z  
          }t          |j                  D ]!} 	|||z  |dz   |z                     ||<   "|
                    |j        d d                   S )Nr   zaxis is out of boundsr)   )r|   r}   r2   r    	transposer   ravelr   ra   r   reshape)r-   rY   tmpr.   transpose_indextransposed_arrr   raveledr   r/  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   r4   tupler2   r|   )r-   rY   r/  rI  r   rH  s     ` @@r&   r2  r2    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  r1  r%   r,   )rT   r   r   r
  r  r8  r  r;  r=  r   r2  )r-   rY   rN  r/  s      @r&   array_argmaxrO    r4  r%   allc                     d }|S )Nc                 b    t          j        |           D ]}|                                s dS dS r"   r`   r-   rf   s     r&   flat_allznp_all.<locals>.flat_all#  s:    1 	 	A6688 uutr%   r$   )r-   rT  s     r&   np_allrU     s       Or%   h㈵>:0yE>Fc                 H   t          j        |           }t          j        |          }|s|s|r|sdS |r|r|sdS nft          j        |           st          j        |          r| |k    S t          j        | |z
            ||t          j        |dz            z  z   k    rdS dS )NF      ?Tra   r  isinfabs)a_vb_vrtolatol	equal_nan	a_v_isnan	b_v_isnans          r&   _allclose_scalarsrd  ,  s    II  I (u  Y  	5	 8C== 	BHSMM 	#:6#)tdRVC#I->->&>>>>54r%   allclosec                 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 booleanrV  rW  Fc                 *    t          | ||||          S )Nr_  r`  ra  )rd  r-   br_  r`  ra  s        r&   np_allclose_impl_scalar_scalarz3np_allclose.<locals>.np_allclose_impl_scalar_scalar`  s$    $Q4/8: : : :r%   c                     t          j        |          }t          j        |          D ]+}t          | |                                |||          s dS ,dS Nrm  FTra   asarrayrb   rd  rc   )r-   ro  r_  r`  ra  bvs         r&   np_allclose_impl_scalar_arrayz2np_allclose.<locals>.np_allclose_impl_scalar_arrayf  sc    
1Aill ! !(BGGIIDt3<> > > ! 55! 4r%   c                     t          j        |           } t          j        |           D ]+}t          |                                ||||          s dS ,dS rr  rs  )r-   ro  r_  r`  ra  avs         r&   np_allclose_impl_array_scalarz2np_allclose.<locals>.np_allclose_impl_array_scalarp  sc    
1Aill ! !(ADt3<> > > ! 55! 4r%   c                 4   t          j        |           } t          j        |          }t          j        | |          \  }}t          j        ||f          D ]@\  }}t	          |                                |                                |||          s dS AdS rr  )ra   rt  broadcast_arraysrb   rd  rc   )	r-   ro  r_  r`  ra  a_ab_brx  ru  s	            r&   np_allclose_impl_array_arrayz1np_allclose.<locals>.np_allclose_impl_array_arrayz  s    
1A
1A*1a00HC)S#J// ! !B(BGGIID.2iI I I ! 55! 4r%   rV  rW  F)	r
   r   rT   floatr   r  boolBooleanNumber)r-   ro  r_  r`  ra  is_a_scalaris_b_scalarrp  rv  ry  r~  s              r&   np_allcloser  F  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   r`   rS  s     r&   flat_anyznp_any.<locals>.flat_any  s:    1 	 	Avvxx ttur%   r$   )r-   r  s     r&   np_anyr    s       Or%   c                     |t          |t          j                  rdd}n%|t          |t          j                  rdd}ndd}|S )Nc                 R    t          j        |           }t          j        |          S r,   )ra   rt  r   )r-   rY   weightsrd   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.)ra   rt  r   	TypeErrorr|   sumZeroDivisionErrormultiply)r-   rY   r  rd   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-   rY   r  s      r&   r  z#np_average.<locals>.np_average_impl  s     KLLLr%   NN)rT   r   NoneType)r-   rY   r  r  s       r&   
np_averager    s     *Wen==	  	  	  	  	  <:dEN;;<    ,M M M M r%   c                     t          | t          j        t          j        f          rt          j        S t          d             }|S )z$
    A generic isnan() function
    c                     dS r   r$   xs    r&   _trivial_isnanz!get_isnan.<locals>._trivial_isnan  s    5r%   )rT   r   r  r  ra   r  r   )r   r  s     r&   	get_isnanr    sF     %%+u}566 x		 	 
		r%   c                 *    t          |           rd S d S )Nc                 <    t          j        |           j        dk    S r   ra   rt  r   r  s    r&   <lambda>znp_iscomplex.<locals>.<lambda>      A+q0 r%   r
   r  s    r&   np_iscomplexr          10004r%   c                 *    t          |           rd S d S )Nc                 <    t          j        |           j        dk    S r   r  r  s    r&   r  znp_isreal.<locals>.<lambda>  r  r%   r  r  s    r&   	np_isrealr    r  r%   c                 
   t          |           }t          | t          j                  rt          | j                  }t          j        |t
          j                  t          | t          j                  rfd}nfd}|S )Nc                     | dS S r   r$   r  iscmplxs    r&   rI  ziscomplexobj.<locals>.impl  s    yuNr%   c                     S r,   r$   r  s    r&   rI  ziscomplexobj.<locals>.impl  s    Nr%   )determine_dtyperT   r   Optionalr   ra   
issubdtypecomplexfloating)r  dtrI  r  s      @r&   iscomplexobjr    s     
		B!U^$$ %QV$$mB 233G!U^$$ 	 	 	 	 	 	
	 	 	 	 	Kr%   c                     d }|S )Nc                 ,    t          j        |            S r,   )ra   r  r  s    r&   rI  zisrealobj.<locals>.impl  s    ?1%%%%r%   r$   r  rI  s     r&   	isrealobjr    s    
& & &Kr%   c                 0    t          |           fd}|S )Nc                     S r,   r$   )elementrs   s    r&   rI  znp_isscalar.<locals>.impl  s    
r%   )r   )r  rI  rs   s     @r&   np_isscalarr    s.    

!
!C    Kr%   c                 @    t          |          rdfd	}ndfd	}|S )Nc                     t          j        t          j        |            t          j        |                               S r,   ra   logical_andr[  signbitr  r   fns     r&   rI  zis_np_inf_impl.<locals>.impl  s/    >"(1++rr"*Q--/@/@AAAr%   c                     t          j        t          j        |            t          j        |                     |          S r,   r  r  s     r&   rI  zis_np_inf_impl.<locals>.impl  s1    >"(1++rr"*Q--/@/@#FFFr%   r,   r   )r  r   r  rI  s     ` r&   is_np_inf_implr    sk     3 G	B 	B 	B 	B 	B 	B 	B	G 	G 	G 	G 	G 	G Kr%   c                 D    t          d           }t          | ||          S )Nc                     | S r,   r$   r  s    r&   r  zisneginf.<locals>.<lambda>  s    A r%   r   r  r  s      r&   isneginfr    s#    	++	&	&B!S"%%%r%   c                 D    t          d           }t          | ||          S )Nc                     |  S r,   r$   r  s    r&   r  zisposinf.<locals>.<lambda>  s    QB r%   r  r  s      r&   isposinfr    s#    	,,	'	'B!S"%%%r%   c                     | |k     S r,   r$   r-   ro  s     r&   	less_thanr        q5Lr%   c                     | |k    S r,   r$   r  s     r&   greater_thanr    r  r%   c                 :    | j         dk    rt          d          d S )Nr   z3zero-size array to reduction operation not possible)r   r}   r   s    r&   check_arrayr  "  s#    v{{NOOO {r%   c                 "     |r fd}n fd}|S )Nc                    t          j        |           }t          |           t          j        |          }t	          |                              d          }|D ]}|                                }t          j        |j                  rt          j        |j                  s|}K |j        |j                  r|}d|j        |j        k    r |j	        |j	                  r|}|S r   )
ra   rt  r  rb   r  r   rc   r  r   r   r-   rd   r  
return_valr   rf   comparison_ops         r&   rI  z!nan_min_max_factory.<locals>.impl*  s    *Q--C3Bbq))J 	+ 	+IIKK8JO,, +RXaf5E5E +!"JJ$}QVZ_== +%&

:?22(=AA +)*Jr%   c                 0   t          j        |           }t          |           t          j        |          }t	          |                              d          }|D ]8}|                                }t          j        |          s ||          s|}9|S r   )ra   rt  r  rb   r  r   rc   r  r  s         r&   rI  z!nan_min_max_factory.<locals>.impl;  s    *Q--C3Bbq))J ' 'IIKKx{{ '(=Q77 '%&
r%   r$   )r  is_complex_dtyperI  s   `  r&   nan_min_max_factoryr  (  sI     	 	 	 	 	 	"
	 
	 
	 
	 
	 Kr%   )r  Tc                 h   t          j        |           rt          j        |          r|S t          j        |           r"t          j        |          r| dk    |dk    k    S t          j        |           st          j        |          rdS t          | |z
            ||t          |          z  z   k    S )Nr   FrZ  )r  yr_  r`  ra  s        r&   _isclose_itemr  X  s    	x{{ 2rx{{ 2	! 2! 2A1q5!!	! 2 2u1q5zzTD3q66M111r%   c                    t          |           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 )Nrg  rh  ri  rj  rk  rV  rW  Fc                 2   |                      d          }|}t          j        t          |          t          j                  }t          t          |                    D ]}t          ||         ||||          ||<   |                     | j                  S Nr@  rC  ra   zerosrE   r   r2   r  r   	r-   ro  r_  r`  ra  r  r  r   r.   s	            r&   isclose_implzisclose.<locals>.isclose_imply  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   )ra   broadcast_shapesr   broadcast_tor  rE   r   r   rb   r  rc   )r-   ro  r_  r`  ra  r   a_b_r   r.   rx  ru  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  rn  s        r&   r  zisclose.<locals>.isclose_impl  s     AtT9===r%   r  )
r
   r   rT   r  r   r  r  r  r   r  )r-   ro  r_  r`  ra  r  s         r&   iscloser  d  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  ra   r  r  complex_nanminreal_nanminr-   r  s     r&   	np_nanminr    2    			B	}R+,, r%   c                 z    t          |           }t          j        |t          j                  rt          S t
          S r,   )r  ra   r  r  complex_nanmaxreal_nanmaxr  s     r&   	np_nanmaxr    r  r%   c                 r    t          | t          j                  sd S t          | j                  fd}|S )Nc                     d}d}t          j        |           D ]=}|                                } |          s||                                z  }|dz  }>t          j        ||          S Nr  r   r)   )ra   rb   rc   divide)r-   re   countr   rf   r  s        r&   nanmean_implz np_nanmean.<locals>.nanmean_impl  sn    IaLL 	 	D		A588 QVVXX
yE"""r%   rT   r   r   r  r   )r-   r  r  s     @r&   
np_nanmeanr    sL    a%% agE	# 	# 	# 	# 	# r%   c                 r    t          | t          j                  sd S t          | j                  fd}|S )Nc                 Z   t          j        |           }d}d}t          j        |           D ]i}|                                } |          sH|                                |z
  }|t          j        |t          j        |          z            z  }|dz  }jt          j        ||          S r  )ra   nanmeanrb   rc   r   r   r  )r-   r   r   r  r   rf   r   r  s          r&   nanvar_implznp_nanvar.<locals>.nanvar_impl  s    JqMM IaLL 	 	D		A588 vvxx!|rwsRWS\\1222
ye$$$r%   r  )r-   r
  r  s     @r&   	np_nanvarr    sL    a%% agE% % % % %  r%   c                 D    t          | t          j                  sd S d }|S )Nc                 0    t          j        |           dz  S r   )ra   nanvarr   s    r&   nanstd_implznp_nanstd.<locals>.nanstd_impl  s    y||s""r%   r   )r-   r  s     r&   	np_nanstdr    s2    a%% # # # r%   c                     t          | t          j                  sd S t          | j        t          j                  rt          j        }n| j        } |d          t          | j                  fd}|S )Nr   c                     }t          j        |           D ]&}|                                } |          s||z  }'|S r,   r`   )r-   re   r   rf   r  rg   s       r&   nansum_implznp_nansum.<locals>.nansum_impl  sK    IaLL 	 	D		A588 Qr%   rT   r   r   r   Integerr4   r  )r-   r   r  r  rg   s      @@r&   	np_nansumr    s    a%% !'5=)) 
588DagE      r%   c                     t          | t          j                  sd S t          | j        t          j                  rt          j        }n| j        } |d          t          | j                  fd}|S )Nr)   c                     }t          j        |           D ]&}|                                } |          s||z  }'|S r,   r`   )r-   re   r   rf   r  ones       r&   nanprod_implz np_nanprod.<locals>.nanprod_impl  sK    IaLL 	 	D		A588 Qr%   r  )r-   r   r  r  r  s      @@r&   
np_nanprodr    s    a%% !'5=)) 

%((CagE      r%   c                     t          | t          j                  sd S t          | j        t          j        t          j        f          rd S | j        t                     d          fd}|S )Nc                 *    t          j        |           S r,   )ra   r   r   s    r&   r  znp_nancumprod.<locals>.<lambda>  s    A r%   r)   c                     t          j        | j                  }}t          | j                  D ]\  }} |           r||z  }|||<   |S r,   r   )r-   r   re   r   rf   is_nanr  r   s        r&   nancumprod_implz&np_nancumprod.<locals>.nancumprod_impl   sc    (165))CA#AF++  QF1II: FACJr%   rT   r   r   r   r  r  r  )r-   r   r  r  r   s     @@@r&   np_nancumprodr"    s    a%% !'EM5=9:: &&&5!!eAhh	 	 	 	 	 	 	 r%   c                     t          | t          j                  sd S t          | j        t          j        t          j        f          rd S | j        t                     d          fd}|S )Nc                 *    t          j        |           S r,   )ra   r   r   s    r&   r  znp_nancumsum.<locals>.<lambda>3  s    1 r%   r   c                     t          j        | j                  }}t          | j                  D ]\  }} |           r||z  }|||<   |S r,   r   )r-   r   re   r   rf   r  r   rg   s        r&   nancumsum_implz$np_nancumsum.<locals>.nancumsum_impl9  sc    (165))CA#AF++  QF1II: FACJr%   r!  )r-   r&  r  r   rg   s     @@@r&   np_nancumsumr'  ,  s    a%% !'EM5=9:: %%%5!!uQxx	 	 	 	 	 	 	 r%   c                 h    t          |           }t          |          dk    rt          d          |S )Nr   z&zero-size array reduction not possible)_asarrayrE   r}   r-   rd   s     r&   prepare_ptp_inputr+  E  s0    
1++C
3xx1}}ABBB
r%   c                 R     t          |t          j                  r fd}n fd}|S )Nc                      |j         | j                   r|S |j         | j         k    r |j        | j                  r|S | S r,   r   current_valr   r   s     r&   rI  z+_compute_current_val_impl_gen.<locals>.implU  sU    r#(K,-- 
(k...38[%566 /
r%   c                 $     ||           r|n| S r,   r$   r.  s     r&   rI  z+_compute_current_val_impl_gen.<locals>.impl]  s    "S+..?33K?r%   )rT   r   r  )r   r/  r   rI  s   `   r&   _compute_current_val_impl_genr1  N  sY    +u}-- @	 	 	 	 	 		@ 	@ 	@ 	@ 	@Kr%   c                     d S r,   r$   r/  r   s     r&   _compute_a_maxr4  b      Dr%   c                     d S r,   r$   r3  s     r&   _compute_a_minr7  f  r5  r%   c                 8    t          t          j        | |          S r,   )r1  operatorgtr3  s     r&   _compute_a_max_implr;  j      (k3GGGr%   c                 8    t          t          j        | |          S r,   )r1  r9  ltr3  s     r&   _compute_a_min_implr?  o  r<  r%   c                     d S r,   r$   r   s    r&   _early_returnrB  t  r5  r%   c                     dt          | t          j                  rfd}n%t          | t          j                  rfd}nfd}|S )Nr   c                     t          j        | j                  rHt          j        | j                  rdt           j        t           j        dz  z   fS dt           j        dz   fS dfS )NT              ?y                F)ra   r  r   r   nanr   UNUSEDs    r&   rI  z _early_return_impl.<locals>.impl|  s^    x!! %8CH%% -"&2+!555",,f}$r%   c                 P    t          j        |           rdt           j        fS dfS r   )ra   r  rF  rG  s    r&   rI  z _early_return_impl.<locals>.impl  s)    x}} %RV|#f}$r%   c                     dfS r   r$   rG  s    r&   rI  z _early_return_impl.<locals>.impl  s    &= r%   )rT   r   r  r  )r   rI  rH  s     @r&   _early_return_implrK  x  s    F#u}%% !	% 	% 	% 	% 	% 	% 
C	%	% !	% 	% 	% 	% 	% 	%	! 	! 	! 	! 	!Kr%   c                     t          | d          r.t          | j        t          j                  rt          d          d }|S )Nr   +Boolean dtype is unsupported (as per NumPy)c                    t          |           }|j        }|d         }|d         }t          |j                  D ]B}||         }t	          |          \  }}|r|c S t          ||          }t          ||          }C||z
  S r   )r+  r   r2   r   rB  r4  r7  )	r-   rd   a_flata_mina_maxr.   r   take_branchretvals	            r&   np_ptp_implznp_ptp.<locals>.np_ptp_impl  s    ""q	q	sx 	/ 	/A)C"/"4"4K "5#..E"5#..EEu}r%   )hasattrrT   r   r   r  r   )r-   rT  s     r&   np_ptprV    sT     q' Magu}-- 	MKLLL  " r%   )r{   r   ptpc                 f    t          j        |           rdS t          j        |          rdS | |k     S r"   )ra   r  r  s     r&   nan_aware_less_thanrY    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$   )re  rd  rf  s   `` r&   _partition_factoryrg    s0    , , , , , , ,Z r%   )rd  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$   )rk  rl  s   ` r&   _select_factoryrm    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)   )rf  rl  )r  rj  r^  r_  r.   s        r&   _select_tworo    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{   )ro  rl  )	temp_arrynr^  r_  halfr-   ro  s          r&   _median_innerrt  &  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   rt  )r-   rq  rr  s      r&   median_implznp_median.<locals>.median_impl;  s-     IIKK	OAY***r%   r   )r-   rx  s     r&   	np_medianry  6  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@)rj  r^  r_  )rE   ra   r   r   r   r2   r  rP  isfiniterF  r   r  inftrue_dividemathfloorro  int)r-   qrr  r   r.   
percentiler   num_pos_infnum_neg_inf
num_finiterankfr   loweruppers                  r&   _collect_percentiles_innerr  E  s&    	AAAvvgc!ffad"*555hs1vvRZ000s1vv %	 %	A1J S  fQiiF2;q>>*** %C((( % f qfQiiF2;q>>*** -"$&bf"5"5K"$&rvg"6"6K!"kK&?!@J!Q f"a''AFF f"Q f!Q&??*a//&(f AER^J%F%FFFJt$$1H*1AE

QPPPuq1uo	1CFFJr%   c                     |r| |          } t          |           dk    rdS nt          j        |          rdS t          |           dk    r| d         }t          j        |          S dS )Nr   Fr)   T)rE   ra   r  r}  )r-   nan_maskskip_nanr   s       r&   _can_collect_percentilesr  z  st     xiLq66Q;;5  6( 	5
1vv{{d{3tr%   c                    d}| j         dk    rY| j        dk     rNt          | j                  D ]8}| |         dk     s&| |         |k    st          j        | |                   rd} n9nXt          j        t          j        |                     s0t          j        | dk               st          j        | |k              rd}|S )NTr)   
   r  F)r|   r   r2   ra   r  r  )r  q_upper_boundvalidr.   s       r&   check_validr    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 )NrY  r  z%Quantiles must be in the range [0, 1]r  r  s    r&   quantile_is_validr    s3    q,,, B@AAAB Br%   c                    t          j        |t           j                                                  } ||           ||z  }t          j        | t           j                                                  }t          j        |          }t          |||          r||          }t          ||          }n,t          j        t          |          t           j	                  }|S r  )
ra   rt  r   rw  r  r  r  r   rE   rF  )r-   r  check_qfactorr  rq  r  r   s           r&   _collect_percentilesr    s    

1BJ'''//11AGAJJJ	F
A
1BJ///7799Ix	""H	8X>> &xi(	(A66gc!ffbf%%Jr%   c                 @   t          |           }t          j        |t          j                  rt	          d          fd}fd}t          |t          j        t          j        f          r|S t          |t          j	                  r|j
        dk    r|S |S )z
    The underlying algorithm to find percentiles and quantiles
    is the same, hence we converge onto the same code paths
    in this inner function implementation
    zNot supported for complex dtypec                 6    t          | |          d         S r   r  r-   r  r  r  r  s     r&   np_percentile_q_scalar_implz?_percentile_quantile_inner.<locals>.np_percentile_q_scalar_impl  s    #Aq'68DDQGGr%   c                 *    t          | |          S r,   r  r  s     r&   np_percentile_implz6_percentile_quantile_inner.<locals>.np_percentile_impl  s    #Aq'68DDDr%   r   )r  ra   r  r  r   rT   r   r  r  r   r|   )r-   r  r  r  r  r  r  r  s     ```   r&   _percentile_quantile_innerr    s     
		B	}R+,, =;<<<H H H H H H HE E E E E E E !elEM233 "**	Au{	#	# "!**!!r%   c                 4    t          | |ddt                    S )NFrY  r  r  r  r  r  r-   r  s     r&   np_percentiler    s%    %	1uS2E   r%   c                 4    t          | |ddt                    S )NTrY  r  r  r  s     r&   np_nanpercentiler    s%    %	1tC1D   r%   c                 4    t          | |ddt                    S )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)   )ra   r   r   r   rb   rc   rF  rt  )r-   rq  rr  r   rf   r  s        r&   nanmedian_implz$np_nanmedian.<locals>.nanmedian_impl  s    HQVQW--	IaLL 	 	D		A588  	!Q 666MY***r%   r  )r-   r  r  s     @r&   np_nanmedianr    sL    a%% agE+ + + + +  r%   c                    t          j        |           }t          j        | j        d d                   }|D ]N}| |                                         }d}t          |          dz
  }|D ]}t          ||||           |}|||<   O|S )Nr@  r   r)   )ra   
empty_likendindexr   copyrE   _select_w_nan)	r-   	kth_arrayr   r   sr  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  r@  r   r)   )	ra   r  r4   r  r   r  arangerE   _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-Dr@  zkth out of boundsr   )r)  astypera   r   r|   r}   r  r\  r   r  ndenumerateunique)r-   r  r  r   indexr   s         r&   
valid_kthsr  4  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d}t          |          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_implf  sE    :??::<<"5#..I*5)<<<r%   
rT   r   r   SequencerW   r   r|   r   r  r  )r-   r  r   kthdtr  s        r&   np_partitionr  W  s     a%+u~u{CDD IGHHH!U[!! "afkkCS!!!C#&&EeemU];<< @>???= = = r%   c                    t          | t          j        t          j        t          j        f          st          d          t          | t          j                  r| j        dk    rd}t          |          t          |d|          }t          |t          j        t          j	        f          st          d          d }|S )Nr  r   r  r   r  c                     t          |           }|j        dk    r'|                                                    d          S t	          ||          }t          ||          S )Nr   r4   )r)  r   r  r  r  r  r  s       r&   np_argpartition_implz-np_argpartition.<locals>.np_argpartition_impl  sS    :??::<<&&v..."5#..I-eY???r%   r  )r-   r  r   r  r  s        r&   np_argpartitionr  q  s     a%+u~u{CDD IGHHH!U[!! "afkkCS!!!C#&&EeemU];<< @>???@ @ @  r%   c                 .   t          d|           t          d|          f}t          j        |t          j                  }t	          |d                   D ]>}t          t          d||z   dz             |d                   }d||d |f<   d|||d f<   ?|S )Nr   r  r)   )r  ra   r   r   r2   r   )NMrj  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 )Nrj  r   c                 ,    || }t          | ||          S r,   )r  )r  r  rj  s      r&   tri_implznp_tri.<locals>.tri_impl  s    9AAq!!!r%   r   )r   )r  r  rj  r  s       r&   np_trir    s/     Q" " " "
 Or%   c                     | j         dk    sJ t          |           }t          j        ||f| j                  }t          |          D ]}| ||<   |S )zq
    Takes a 1d array and tiles it to form a square matrix
    - i.e. a facsimile of np.tile(m, (len(m), 1))
    r)   r  )r|   rE   ra   r   r   r2   )r   len_mr   r.   s       r&   _make_squarer    s]     6Q;;;;FFE
(E5>
1
1
1C5\\  AJr%   c                     t          j        | j        d         | j        d         |                              t           j                  }t          j        || t          j        | | j                            S Nr@  r  rj  r  ra   trir   r  uintwhere
zeros_liker   r   rj  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 )Nrj  r   c                 @    t          |           }t          ||          S r,   )r  r  r   rj  m_2ds      r&   np_tril_impl_1dz my_tril.<locals>.np_tril_impl_1d      AtQ'''r%   c                    t          j        | j        d         | j        d         |                              t           j                  }t          j        | j        d d                   }t          j        |           }t          j        || j                  }|D ]!}t          j	        || |         |          ||<   "|S r  
ra   r  r   r  r  r  r  r  r   r  r   rj  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   rj  r  r  s       r&   my_trilr    sf     Q( ( ( (    	v{{	
1!!r%   c                     t          | d           t          |d           t          |          st          |d           dd}|S )Nrr  rj  r   r   c                 T    t          j        t          j        | ||                    S )Nrj  ra   nonzeror  rr  rj  r   s      r&   np_tril_indices_implz-np_tril_indices.<locals>.np_tril_indices_impl  s#    z"&A+++,,,r%   r   Nr   r   )rr  rj  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 )Nrj  r{   input array must be 2-dr   c                 \    t          j        | j        d         || j        d                   S Nr   r)   )rj  r   )ra   tril_indicesr   rd   rj  s     r&   np_tril_indices_from_implz7np_tril_indices_from.<locals>.np_tril_indices_from_impl  %    sy|qCIaLAAAAr%   r  r   r|   r   )rd   rj  r  s      r&   np_tril_indices_fromr    L     Q
x1}}3444B B B B$$r%   c                     t          j        | j        d         | j        d         |dz
                                t           j                  }t          j        |t          j        | | j                  |           S Nr  r@  r)   r  r  r  r  s      r&   np_triu_impl_2dr    s]    6!'"+A666==bgFFD8D"-9991===r%   c                 t    t          |d           dd}dd}| j        dk    r|S | j        dk    rt          S |S )Nrj  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   rj  r  r!  s       r&   my_triur"    sf     Q( ( ( (    	v{{	
1!!r%   c                     t          | d           t          |d           t          |          st          |d           dd}|S )Nrr  rj  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  )rr  rj  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 )Nrj  r{   r  r   c                 \    t          j        | j        d         || j        d                   S r  )ra   triu_indicesr   r  s     r&   np_triu_indices_from_implz7np_triu_indices_from.<locals>.np_triu_indices_from_impl.  r  r%   r  r  )rd   rj  r*  s      r&   np_triu_indices_fromr+  %  r  r%   c                     d S r,   r$   rd   s    r&   _prepare_arrayr.  3  r5  r%   c                 .    | d t           j        fv rd S d S )Nc                 *    t          j        d          S )Nr$   ra   arrayr-  s    r&   r  z%_prepare_array_impl.<locals>.<lambda>:  s    28B<< r%   c                 D    t          |                                           S r,   )r)  rB  r-  s    r&   r  z%_prepare_array_impl.<locals>.<lambda><  s    8C==..00 r%   r   noner-  s    r&   _prepare_array_implr6  7  s&    
tUZ   '''000r%   c                 t   | }	 t          |t          j        t          j        f          rt	          |          S t          |dd           }| |            dk    rt          j        S t          |dd           }|t          d          t          |t          j	                  r|j
        }nt	          |          S )NT__len__r   r   ztype has no dtype attr)rT   r   r  r  r	   r   ra   r   r   r  r   )inobjobjlr  s       r&   _dtype_of_compoundr<  ?  s    
C cEL%-899 	!C== CD))=QQSSAXX:S'4((: !9:::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 )NrM  z3dtype of to_begin must be compatible with input aryz1dtype of to_end must be compatible with input aryc                 r   t          |          }t          |           }t          |          }|j        }t          |          dk    rt          j        t          |          t          |          z   t          |          z   dz
  |          }t          |          }t          |          t          |          z   dz
  }	||d |<   t          j        |          |||	<   |||	d <   nPt          j        t          |          t          |          z   |          }t          |          }||d |<   |||d <   |S )Nr   r)   r  )r.  r   rE   ra   r   diff)
aryto_endto_beginstartra  end	out_dtyper   	start_idxmid_idxs
             r&   np_ediff1d_implz#np_ediff1d.<locals>.np_ediff1d_implj  s%   x((S!!V$$I	 s88a<<(CJJS1CHH<q@!*, , ,CE

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

I#C

O!C	

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

    Values are accumulated using np.multiply to match the floating point
    precision behaviour of numpy.vander.
    r   r)   Nr@  )r   rE   r2   ra   r  )r  r  
increasingr   r   rr  r.   s          r&   
_np_vanderrl    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_paramsrn    s;    vzzIJJJ1uu>??? ur%   c                 r   |d t           j        fvr)t          |t           j                  st	          d          dfd	}dd}t          | t           j                  r0t          | j                  }t          j	        |t                    |S t          | t           j        t           j        f          r|S d S )Nz,Second argument N must be None or an integerFc                     |t          |           }t          | |           t          j        t          |           t	          |          f          }t          | |||           |S r  )rE   rn  ra   r   r  rl  )r  r  rk  r   r   s       r&   np_vander_implz!np_vander.<locals>.np_vander_impl  sc    9AAQ""" hAA'u5551aS)))
r%   c                    |t          |           }t          j        |           }t          ||           t          j        t          |           t          |          f|j                  }t          ||||           |S r  )rE   ra   r2  rn  r   r  r   rl  )r  r  rk  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   r5  rT   r  r   r   r	   r   ra   promote_typesr  rW   r  )r  r  rk  rq  rt  x_dtr   s         @r&   	np_vanderrw    s    uz"""!U]++ 	NLMMM
 
 
 
 
 
    !U[!! "   s++	AU^4	5	5 "!!" "r%   c                     t          |t          j        t          j        f          st	          d          d }t          | t          j        t          j        f          rd S |S )Nzshift must be an integerc                     t          j        |           }t          j        |j        |j                  }|j        }t          |j                  D ]}||z   |j        z  }||         |j        |<    |S r  )ra   rt  r   r   r   r   r2   r   )r-   shiftrd   r   arr_flatr.   r   s          r&   np_roll_implznp_roll.<locals>.np_roll_impl	  sm    jmmhsy	222 8sx 	( 	(Au9(C$QKCHSMM
r%   c                 *    t          j        |           S r,   r\  )r-   rz  s     r&   r  znp_roll.<locals>.<lambda>#	  s    
1 r%   )rT   r   r  r  r   r  )r-   rz  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)   r@     rz   r{   )LIKELY_IN_CACHE_SIZE)keyrd   lengthguessiminimaxr.   imids           r&   binary_search_with_guessr  .	  s    DD S!_	s1vr {{&jjSCF]]FA &jjSCF]]1uvz
qyy SZUQY19D +++3u';;<<<33 19 UQYL S^##qy  qyV&::Q>??s5+?#?@@@ #77D ++t)*#d)!8DDD ++ !8Or%   c                 	   t          j        |           }t          j        |          }t          j        |          }t          |          dk    rt          d          t          |          t          |          k    rt          d          |j        dk    r"t          j        |j        |d         |          S t          j        |j        |          }|j        }t          |          }	|d         }
||	dz
           }|	dk    r]|d         }|d         }t          |          D ];}|j	        |         }||k     r|
|j	        |<    ||k    r||j	        |<   1||j	        |<   <n&d}|	|k    rt          j        |	dz
  |          }nt          j        d|          }|j        ryt          |	dz
            D ]f}d||dz            ||         z
  z  }||dz            j
        ||         j
        z
  |z  }||dz            j        ||         j        z
  |z  }|d|z  z   ||<   gt          |          D ]]}|j	        |         }t          j        |          r|}d}|d|z  z   |j	        |<   9t          |||	|          }|d	k    r|
|j	        |<   \||	k    r||j	        |<   m||	dz
  k    r||         |j	        |<   ||         |k    r||         |j	        |<   |j        r	||         }nad||dz            ||         z
  z  }||dz            j
        ||         j
        z
  |z  }||dz            j        ||         j        z
  |z  }|d|z  z   }|j
        |||         z
  z  ||         j
        z   }t          j        |          rg|j
        |||dz            z
  z  ||dz            j
        z   }t          j        |          r,||         j
        ||dz            j
        k    r||         j
        }|j        |||         z
  z  ||         j        z   }t          j        |          rg|j        |||dz            z
  z  ||dz            j        z   }t          j        |          r,||         j        ||dz            j        k    r||         j        }|d|z  z   |j	        |<   _|S )
Nr   array of sample points is empty#fp and xp are not of the same size.r)   
fill_valuer   r  rE  r  r@  )ra   rt  rE   r}   r   r   r   r   r2   r   r   r   r  r  )r  xpfpr   dzrX  dydreslenxlenxplvalrvalxp_valfp_valr.   x_valrc  slopesinv_dxr   r   slopes                         r&   np_interp_impl_complex_innerr  s	  s    
AB	BB	BB
2ww!||:;;;
2ww#b''>???	w!||wrxBqE????8BHE***D7DGGEa5Deai=DzzAAt 	& 	&AGAJEv~~#	!#	!%	!	&  D==Xuqy777FFXau---F; 	-519%% - -bQi"Q%/01q5	A3v=1q5	A3v= 29,q		t 0	0 0	0AGAJEx #b4i/	!(E1==ABww#	!e#	!eai!!u	!A%!!u	!; -"1IEE"QU)be"34Fq1uINRUZ76ADq1uINRUZ76AD 29,E zURU]3bej@8D>> * :AE):;bQinLDx~~ *"Q%*1q5	*F*F!!uzzURU]3bej@8D>> * :AE):;bQinLDx~~ *"Q%*1q5	*F*F!!uz#b4i/	!Kr%   c                    t          j        | t           j                  }t          j        |t           j                  }t          j        |t           j                  }t          |          dk    rt	          d          t          |          t          |          k    rt	          d          |j        dk    r"t          j        |j        |d         |          S t          j        |j        |          }|j        }t          |          }	|d         }
||	dz
           }|	dk    r]|d         }|d         }t          |          D ];}|j
        |         }||k     r|
|j
        |<    ||k    r||j
        |<   1||j
        |<   <nd}|	|k    r,|dd          |d d         z
  |dd          |d d         z
  z  }nt          j        d|          }t          |          D ]z}|j
        |         }t          j        |          r||j
        |<   /t          |||	|          }|dk    r|
|j
        |<   R||	k    r||j
        |<   c||	dz
  k    r||         |j
        |<   }||         |k    r||         |j
        |<   |j        r	||         }n)||dz            ||         z
  ||dz            ||         z
  z  }||||         z
  z  ||         z   |j
        |<   t          j        |j
        |                   ri||||dz            z
  z  ||dz            z   |j
        |<   t          j        |j
        |                   r%||         ||dz            k    r||         |j
        |<   ||S )Nr  r   r  r  r)   r  r@  )ra   rt  r   rE   r}   r   r   r   r   r2   r   r  r  )r  r  r  r   r  rX  r  r  r  r  r  r  r  r  r.   r  rc  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_implU
  s    uQB&&&r%   c                 6     | ||          j         d         S r   r   r  s      r&   np_interp_scalar_implz(np_interp.<locals>.np_interp_scalar_implX
  s!    uQB&&+A..r%   )rU  r|   r   r  ra   r  r  result_typer   r  r  rT   r   r  r  )
r  r  r  complex_dtype_msgxp_dtfp_dtr  r  r   r   s
           @@r&   	np_interpr  :
  s^    r6 +rw{{/***r6 +rw{{/*** 	E  BE	}UB.// -+,,,BEN5"*--E	}UB.// %,$' ' ' ' ' '/ / / / / / !U\"" %a'' 	1/000$$r%   c                     | j         dk    sJ | j        \  }}t          j        |df| j                  }t          |          D ](}t          j        | |d d f                   |z  ||df<   )|S )Nr{   r)   r  r   )r|   r   ra   r   r   r2   r  )r-   r   rr  r   r.   s        r&   row_wise_averager  f
  sx    6Q;;;;7DAq
(Aq6
)
)
)C1XX ( (F1QT7OOa'AqD		Jr%   c                    ||rd}nd}| j         d         |z
  }t          |d          }| t          |           z  } t          j        | t          j        | j                            }|t          j        d|          z  }|S )Nr   r)   r  )r   r  r  ra   dotr   Tr  )Xbiasddoffactre   s        r&   np_cov_impl_innerr  s
  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  
  r5  r%   c                 4    |d t           j        fv rd }nd }|S )Nc                 Z    t          j        t          |                     }|s|j        }|S r,   )ra   
atleast_2dr)  r  )r   r  rowvarr   m_arrs        r&   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_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  )ra   r  r)  r   r  r}   r   )r   r  r  r   r  y_arrm_rowsm_colsy_rowsy_colsr   s              r&   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_inner
  s    M(1++..EM(1++..E
  $;q>Q&&!GE;q>Q&&!GE"[NFF"[NFF !GHHH (FVOV4EBBBC#C
O$C!!!Jr%   r4  )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).0rf   coltypess     r&   
<listcomp>z#determine_dtype.<locals>.<listcomp>
  s#    ...Qa...r%   r)   c                 ,    g | ]}t          |          S r$   )r	   )r  tys     r&   r  z#determine_dtype.<locals>.<listcomp>
  s    .O.O.Ox||.O.O.Or%   )ra   r   rT   r   r   r	   r   r  r  rF   rW   setrU  r  rE   ru  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                  ryt          | j        d         t          j                  rVt          | j        d         j        d         t          j                  r(d                    |          }t	          |          d S d S d S )Nr{   z{0} has more than 2 dimensionsr   )rT   r   r   r|   r   formatr  r  )r  namer   s      r&   check_dimensionsr  
  s    *ek** *?Q !A!H!H!N!NOOO 	J	/	/ *jnQ'88 	**.+/2ENCC *6==dCC$S)))	* *	* 	** *r%   c                     t          j        |           st          d          | t          |           z
  dk    rt          d          d S )Nz)Cannot convert non-finite ddof to integerr   zddof must be integral value)ra   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,   )rT   r   r  r  r  r  s     r&   	<genexpr>z)scalar_result_expected.<locals>.<genexpr>
  sI       / / !elEM:;; / / / / / /r%   r   TF)r   r5  rT   r   r|   	BaseTuplerP  rE   r  r  r  r  )mandatory_inputoptional_inputopt_is_nones      r&   scalar_result_expectedr  
  s     T5:$66K/5;// O4HA4M4M/5?33 # / /'-/ / / / / 	#O)**a//4Q7II 0""/EL%-#@AA /5>22 ?.q15>BB 		45r%   c                 ~    t          j        t          j        |           dk    t          j        |           |           S r\  )ra   r  fabssignr  s    r&   
_clip_corrr    s*    8BGAJJNBGAJJ222r%   c                 b    t          | j                  }t          | j                  }|d|z  z   S )NrE  )r  r   r   )r  r   r   s      r&   _clip_complexr    s/    afDafD"t)r%   c                 N  	
 t          | d           t          |d           |d t          j        fv rt          	n_t	          |t          j        t          j        f          rt          	n1t	          |t          j                  rt          	nt          d          t          
t	          | t          j                  rt          
t          |           }t          |          }t          j        ||t          j                  d	
fd	}	 	 d	
fd	}t#          | |          r|S |S )	Nr   r  z)ddof must be a real numerical scalar typeTFc           	      F   t          | |||                                        }t          j        t          j        |j                  dk              r9t          j        |j        d         |j        d         ft          j                  S t          |||          S )Nr   r  )	r  r  ra   r  r2  r   r   rF  r  )	r   r  r  r  r  r  r  r  r   s	         r&   np_cov_implznp_cov.<locals>.np_cov_impl<  s    q!VUD--/ //5ve}} 	
 6"(17##q()) 	47AGAJ
3!&( ( ( ( %Qd333r%   c           	      ,   t          | |||	                              	          }t          j        t          j        |j                  dk              rt          j        }nt          |||          j        d         }t          j        |          S r   )	r  r  ra   r  r2  r   rF  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_variableF  s    q!VT5--/ //5ve}} 	
 6"(17##q()) 	@vHH(D$77<Q?Hx!!!r%   NTFN)r  r   r5  _handle_ddof_noprT   r  r  r  r  r   _handle_m_dim_nopr   r  r  ra   r  r   r  )r   r  r  r  r  m_dty_dtr  r  r  r  r   s            @@@r&   np_covr    s[    QQ ej!!!(dU]EM:;; 	K,MMek** 	K(MMIJJJ
 'N!U[!! .- 1D1DN4rz22E4 4 4 4 4 4 4 4 BG)-
" 
" 
" 
" 
" 
" 
" 
" a## **r%   c                     t          |           }t          |          }t          j        ||t          j                  }|t          j        k    rt
          nt          dfd	}dd}t          | |          r|S |S )NTc                 *   t          j        | ||          }t          j        |          }t          j        |j                  }t          |j        d                   D ]*}||d d fxx         |z  cc<   |d d |fxx         |z  cc<   + |          S r   )ra   covdiagsqrtr   r2   r   )r  r  r  re   rd  stddevr.   clip_fns          r&   np_corrcoef_implz%np_corrcoef.<locals>.np_corrcoef_impld  s    F1a  GAJJqwqz"" 	 	AadGGGvGGGaaadGGGvGGGGwqzzr%   c                 8    t          j        | ||          }||z  S r,   )ra   r  )r  r  r  re   s       r&    np_corrcoef_impl_single_variablez5np_corrcoef.<locals>.np_corrcoef_impl_single_variableo  s    F1a  1ur%   NT)r  ra   r  r   
complex128r  r  r  )	r  r  r  rv  r  r   r   r  r  s	           @r&   np_corrcoefr  X  s     1D1DN4rz22E	 	 	 	 	 	    a##  //r%   c                     t          | t          j        t          j        f          }t	          |           r|sd }n
ddfd}|S )Nc                     t          j        |           }|j        dk    r t          j        dt          j                  S t          j        t          j        t          j        |                              S )Nr$   )r   r)   r  )	ra   rt  r   r  r   r4   rA  vstackr	  r*  s     r&   rI  znp_argwhere.<locals>.impl  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  ra   r  r   r4   )r-   falseishtrueishs    r&   rI  znp_argwhere.<locals>.impl  s@    }a}xuz::::x
;;;;r%   )rT   r   r  r  r
   )r-   
use_scalarrI  r
  r  s      @@r&   np_argwherer  }  sz    
 Aem<==J <: <	< 	< 	< 	< 	< 	< 	< 	< 	< 	< Kr%   c                 2    t          |           rd }nd }|S )Nc                     t          j        |           }t          j        t          j        |                    d         S r   )ra   rt  r	  rB  r*  s     r&   rI  znp_flatnonzero.<locals>.impl  s,    *Q--C:bhsmm,,Q//r%   c                     | t          |           rdg}nd t          d          D             }t          j        |t          j                  S )Nr   c                     g | ]}|S r$   r$   r  s     r&   r  z0np_flatnonzero.<locals>.impl.<locals>.<listcomp>  s    ,,,a,,,r%   r  )r  r2   ra   r2  r   r4   )r-   r@   s     r&   rI  znp_flatnonzero.<locals>.impl  sJ    }a}s,,588,,,8D
3333r%   r  )r-   rI  s     r&   np_flatnonzeror    s>      
4	0 	0 	0 	0	4 	4 	4 Kr%   c                    | j         dk    r;| j        d         }| j        d         }d|z   }|r||z  }n|t          ||          z  }nt          j        | j                  }t          j        t          j        |          dk              st          d          dt          j        |d d                   	                                z   }|
                                }||fS )Nr{   r   r)   z/All dimensions of input must be of equal lengthr@  )r|   r   r   ra   r2  rP  r?  r}   r   r  r   )r-   wrapr   rr  steprD  r   s          r&   _fill_diagonal_paramsr    s    v{{GAJGAJ1u 	 a%CCc!Qii-CC!!vbgenn)** 	PNOOOBJuSbSz**//111jjll9r%   c                 h    t          | |          \  }}t          d||          D ]}|| j        |<   d S r   )r  r2   r   )r-   r   r  rD  r  r.   s         r&   _fill_diagonal_scalarr    sG    %a..IC1c4    q		 r%   c                     t          | |          \  }}d}t          |          }t          d||          D ]}||         | j        |<   |dz  }||z  }d S r  )r  rE   r2   r   )r-   r   r  rD  r  ctrv_lenr.   s           r&   _fill_diagonalr    sm    %a..IC
CHHE1c4    Hq	qEk r%   c                     t          j        | j                  }|j        }|j        }t          j        t          j        |                     s0t          j        ||k               st          j        ||k              rt          d          d S Nz'Unable to safely conform val to a.dtype)ra   iinfor   r   r  r  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  )ra   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)    r5  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,   r1  r  s    r&   r  z_asarray_impl.<locals>.<lambda>  s    ! r%   c                 2    t          j        | g          S r  r1  r  r  s    r&   r  z_asarray_impl.<locals>.<lambda>  s    1#R000 r%   )rT   r   r   r  rW   r  r  r	   r.  s    @r&   _asarray_implr/    s    !U[!! 1{	A4	5	5 1$$$	Aem4	5	5 1a[[000001 1r%   c                    | j         dk    rt          | j        t          j                  rt
          n.t          | j        t          j                  rt          nt          dfd	}dfd	}t          |t          j        t          j        t          j	        f          r|S t          |t          j
        t          j        t          j        f          r|S d S d| j         z  }t          |          )Nr)   Fc                     t          |                                          } | |           t          | ||           d S r,   )r)  rw  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)  rw  r  r2  s       r&   non_scalar_implz)np_fill_diagonal.<locals>.non_scalar_impl  sD    c]]**,,FGAv1fd+++++r%   z4The first argument must be at least 2-D (found %s-D)F)r|   rT   r   r   r  r"  r  r&  
_check_nopr  rW   r  r   r   )r-   r   r  r5  r7  r   r4  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:   r0   modulellvmliteirFunctionTyper   get_or_insert_functionr=  callr   rn   )rq   r8   rr   r:   r   r<  lltyr@  fntyr  rs   s              r&   rD   z _np_round_float.<locals>.codegen&  s    Xa[%%b)){''tf55+FD,?,C,CE Ell2v&&!'7COSIIIr%   r$   )	typingctxr   rr   rD   s       r&   _np_round_floatrI  "  s-    
#c((C	J 	J 	J <r%   c                 2   t          j        |           st          j        |           r| S |dk    rK|dk    rd|dz
  z  }d}nd|z  }d}| |z  |z  }t          j        |          r| S t          |          |z  |z  S d| z  }| |z  }t          |          |z  S )Nr      g      $@gMDrY  )r  r[  r  rI  )r  ndigitspow1pow2r  s        r&   round_ndigitsrO  4  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   )rI  rO  r-   decimalsr   s      r&   rI  zimpl_np_round.<locals>.impl\  s)    1}}.q111,Q999r%   c                 L    |dk    r| S t          t          | |                    S r   )r  rO  rR  s      r&   rI  zimpl_np_round.<locals>.implc  s(    1}} "=H#=#=>>>r%   c                     |dk    r)t          | j                  }t          | j                  }n*t          | j        |          }t          | j        |          }t	          ||          S r   )rI  r   r   rO  complex)r-   rS  r   r   r   s        r&   rI  zimpl_np_round.<locals>.implj  s]    1}}.qv66.qv66,QVX>>,QVX>>"4...r%   c                 6    t          j        | |          |d<   |S r   )ra   roundrR  s      r&   rI  zimpl_np_round.<locals>.implt  s    !X..A
r%   c                 V    t          j        |           }t          j        | ||          S r,   )ra   r  rX  rR  s      r&   rI  zimpl_np_round.<locals>.implz  s%    mA&&x8S111r%   c                     | j         |j         k    rt          d          t          j        |           D ]\  }}t          j        ||          ||<   |S )Nzinvalid output shape)r   r}   ra   r  rX  )r-   rS  r   r  r   s        r&   rI  zimpl_np_round.<locals>.impl  sY    7ci''$%;<<<"$."3"3 9 9JE3!##x!8!8CJJ
r%   r  )	r
   r   rT   r   r   r   r  r  r  )r-   rS  r   r   rI  s        r&   impl_np_roundr[  O  s    A A?@@@sEK(( K,<,< E#!ek5=%-@AA ,s 	!U[)) : : : :
 Au}-- ? ? ? ?
 Au}-- 	/ / / / 	 	    K	Au{	#	# s 	2 2 2 2 K    K r%   c                     t          | t          j                  rd }|S t          | t          j                  rd }|S t	          d          )Nc                 ^    | dk    rd} | t           j        z  } t          j        |           | z  S )Nr  g#B;)ra   pisinr  s    r&   rI  zimpl_np_sinc.<locals>.impl  s-    DyyJA6!99q= r%   c                     t          j        |           }t          j        |           D ]\  }}t          j        |          ||<   |S r,   )ra   r  r  sinc)r  r   r  r   s       r&   rI  zimpl_np_sinc.<locals>.impl  sF    -""C nQ// * *
sWS\\E

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

Jr%   z6Argument "z" must be a complex or Array[complex]. Got r8  )r  ra   r^  rT   r   r  r   r   r  underlying_floatr  r   )r  rg  rI  r   rh  rk  s       @@r&   ov_np_anglerm    s    S25[!!H !U\"" <	2 	2 	2 	2 	2 	2
 	Au{	#	# <eU]++ 	.IIu{++ 	IIF	 	 	 	 	 	
  ;78; ; < < 	<r%   zarray.nonzeroc                 &    |j         d         }|j        }|j        |j        } t	          |           |d                   }t          j        |j                  }t          j        |j                  }	|j	        }
|j
        }                     t          j        d          }                     t          j        d          }t          j        |          }t          j        ||j                  5 }t          j         |
||	||          }t%           ||          }                     |j        |          }                    |          5                                                              |          |          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                       |          f fdt1          |          D             } fd|D             }d |D             }t          j        |          }t          j        ||j                  5 }t          j         |
||	||          }t%           ||          }                     |j        |          }                    |          5  |s|f}                    |          }t1          |          D ]<}t          j         ||         dd|g          }t3           ||         |           =                                        ||          |           d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y                        |j        |          }t7           |j        |          S )Nr   r)   c                 X    g | ]&}t                                                    'S r$   )r   	_getvalue)r  r.   r8   rq   	out_shapeoutarytys     r&   r  z!array_nonzero.<locals>.<listcomp>  sC     # # # 7GXyAAKKMM # # #r%   c                 D    g | ]} t                    |          S r$   )r   )r  r   r8   rq   rr  s     r&   r  z!array_nonzero.<locals>.<listcomp>  s0    KKKs#z(##GWc::KKKr%   c                     g | ]	}|j         
S r$   )r@   )r  r   s     r&   r  z!array_nonzero.<locals>.<listcomp>  s    ---c---r%   r$   C)r:   rn   r   r  r   r   unpack_tupler   stridesr@   layoutr3   r   r4   alloca_once_value	loop_nestr   get_item_pointer2r   is_trueif_thenstorer  loadr2   r   
make_tupler   )rq   r8   rr   r:   arytyr   noutsr@  r   rw  r@   rx  rg   r  r  indicesptrr   nzoutsoutarys	out_datasr  curr.   r<   rq  rr  s   ``                        @@r&   array_nonzeror    s    HQKEOE{HKE
*U

GWd1g
6
6C #)44E"7CK88G8D\F 
A..D


uz1
-
-C%gt44E		7E49	5	5 H'$w(.9 9%55__Wek377__R   	H 	HMM'++gll5&9&93??GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	HH H H H H H H H H H H H H H H e$$&I# # # # # # #5\\# # #DKKKKKKdKKKG--W---I %gt44E		7E49	5	5 8'$w(.9 9%55__Wek377__R   	8 	8 "',,u%%C5\\ H H/)A,09203cU< < 7GXwqz3GGGGMM'++c3//777	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	8 	88 8 8 8 8 8 8 8 8 8 8 8 8 8 8$ 

Wcot
<
<CGWcosCCCso   9AF8>F!F8!F%	%F8(F%	)F88F<?F<AM!BL>2M>M	MM	MMMc                       fd}|S )Nc                     t          j        |                                        }t          j        |                                        }| r|n|S r,   )ra   rt  r  )	conditionr  r  x_y_r   s        r&   rI  z)_where_zero_size_array_impl.<locals>.impl  sH    Z]]!!%((Z]]!!%((&rrB&r%   r$   )r   rI  s   ` r&   _where_zero_size_array_implr    s#    ' ' ' ' ' Kr%   c                 d    t          j        |           D ]\  }}|r||         n||         ||<   |S r,   )ra   r  )condr  r  rs   r   re   s         r&   _where_generic_inner_implr    s@    .&& + +Q*1S66AcFCJr%   c                     | j         }|j         }|j         }|j         }t          | j                  D ]}||         r||         n||         ||<   |S r,   )r   r2   r   )	r  r  r  rs   cfxfyfrfr.   s	            r&   _where_fast_inner_implr  
  s\    	B	
B	
B	B49 * *A)1BqE1Jr%   c                 *     dhdhfv  fd}|S )Nru  Fc                    t          j        |           t          j        |          t          j        |          }}}t          j        |j        |j        |j                  }t          j        ||          }t          j        ||          }t          j        ||          }	dk    r%t          j        |d d d                   j        }
nt          j        |          }
rt          |||	|
          S t          |||	|
          S )Nr  r@  r  )	ra   rt  r  r   r  r   r  r  r  )r  r  r  cond1x1y1r   cond_r  r  rs   r   rx  use_faster_impls              r&   rI  z!_where_generic_impl.<locals>.impl  s    
9--rz!}}bjmm2r#EK28DDu--_R''_R''S==(52;e4446CC(5...C 	A)%R===,UBC@@@r%   r$   )r   rx  rI  r  s   `` @r&   _where_generic_implr    sH    #.OA A A A A A A" Kr%   c                 L    t          |           sd}t          |          d }|S )N+The argument "condition" must be array-likec                 N    t          j        |                                           S r,   )ra   rt  r	  )r  s    r&   where_cond_none_nonez)ov_np_where.<locals>.where_cond_none_none2  s    z)$$,,...r%   )r
   r   )r  r   r  s      r&   ov_np_wherer  ,  s:    I&& ";S!!!/ / /r%   c                 0   t          |           sd}t          |          t          |          st          |          rt          d          t          ||fd          D ]8\  }}t          |          s$d}t          |                    |                    9t          | t          j                  }t          |t          j                  }t          |t          j                  }|rt          |          }	t          |          }
t          j
        |	|
          }d t          fd| ||fD                       }|rt          |          S | j        }|r+|r)|j        |j        cxk    r| j        k    rn n|j        }nd}t          ||          S d }|S )	Nr  z"Argument "x" or "y" cannot be Noner(  z0The argument "{}" must be array-like if providedc                     t          | t          j                  p$t          | t          j                  o
| j        dk    S r   )rT   r   r  r   r|   )args    r&   check_0_dimz$ov_np_where_x_y.<locals>.check_0_dimY  s7    c5<00 @3,,>Q@r%   c                 &    g | ]} |          S r$   r$   )r  r-   r  s     r&   r  z#ov_np_where_x_y.<locals>.<listcomp>\  s!    HHHkk!nnHHHr%   r]  c                     t          j        t          j        |           t          j        |          t          j        |                    S r,   )ra   r  rt  )r  r  r  s      r&   rI  zov_np_where_x_y.<locals>.implh  s0    8BJy112:a=="*Q--PPPr%   )r
   r   r   zipr  rT   r   r   r  ra   ru  rP  r  rx  r  )r  r  r  r   r  r  cond_arrrs  r  rv  r  r   special_0_caserx  rI  r  s                  @r&   ov_np_where_x_yr  7  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   rA  s    r&   np_real_implznp_real.<locals>.np_real_implo  	    xr%   r$   )r   r  s     r&   np_realr  m         r%   c                     d }|S )Nc                     | j         S r,   )r   rA  s    r&   np_imag_implznp_imag.<locals>.np_imag_implw  r  r%   r$   )r   r  s     r&   np_imagr  u  r  r%   c                 D    t          | t          j                  sd S d }|S )Nc                 F    t          j        |           D ]}||k    r dS dS r   )ra   rb   )rd   r  r  s      r&   np_contains_implz%np_contains.<locals>.np_contains_impl  s3    3 	 	ACxxtt ur%   r   )rd   r  r  s      r&   np_containsr    s2    c5;''    r%   c                 t    t          |           st          d          t          |          rdd}|S dd}|S )Nz3The argument to np.count_nonzero must be array-likec                 Z    t          j        |           }t          j        |dk              S r   )ra   rB  r  r-   rY   arr2s      r&   rI  znp_count_nonzero.<locals>.impl  s#    8A;;D6$!)$$$r%   c                 l    |                      t          j                  }t          j        ||          S )N)rY   )r  ra   r   r  r  s      r&   rI  znp_count_nonzero.<locals>.impl  s*    88BH%%D6$T****r%   r,   )r
   r   r   )r-   rY   rI  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)ra   rB  rt  r   onesr   )rd   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)   )ra   rB  rt  r   
IndexErrorconcatenate)rd   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%   )
rT   r   r   r  r   	SliceTypenp_delete_handler_isslicer   r  np_delete_handler_isarray)rd   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-negativer@  r)   )
r  r}   r   r  ra   r   r   r   rC  r2   )r-   rr  r   rq  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%   rR  )rT   r   r   r|   )r-   rr  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&   rI  znp_array_equal.<locals>.impl  s    8Or%   c                     t          j        |           }t          j        |          }|j        |j        k    rt          j        ||k              S dS r   )ra   rt  r   rP  )r  r  r-   ro  s       r&   rI  znp_array_equal.<locals>.impl  sB    
2A
2Aw!'!!va1f~~%5r%   )r
   r   r   r  r  rT   )r  r  acceptedrI  s       r&   np_array_equalr    s     R   Q%5b%9%9 QOPPPu|,H"h 
Jr8$<$< 
	 	 	 		 	 	 Kr%   c                     t          |           st          |          st          d          t          |t          j        t
          f          st          d          dd}|S )Nz.intersect1d: first two args must be array-likez5intersect1d: argument "assume_unique" must be booleanFc                    t          j        |           } t          j        |          }|s)t          j        |           } t          j        |          }n(|                                 } |                                }t          j        | |f          }|                                 |dd          |d d         k    }|d d         |         }|S )Nr)   r@  )ra   rt  r  rB  r  sort)ar1ar2assume_uniqueauxr  int1ds         r&   np_intersects1d_implz0jit_np_intersect1d.<locals>.np_intersects1d_impl  s    joojoo 	)C..C)C..CC))++C))++Cnc3Z((


122w#crc("CRCr%   r8  r
   r   rT   r   r  r  )r  r  r  r  s       r&   jit_np_intersect1dr    s    
 S!! L%5c%:%: LJKKKmemT%:;; F E F F 	F      r%   c                    t          |t          j                  r/|j        dk    r"t	          d                    |                     d S t          |t          j                  s"t	          d                    |                     d S )Nr)   z${0}(): input should have dimension 1z+{0}(): input should be an array or sequence)rT   r   r   r|   r   r  r  )	func_nameseqs     r&   validate_1d_array_liker  -  s    #u{## 18q== !G"(&"3"35 5 5 = U^,, 1J$fY//1 1 	11 1r%   c                    t          d|            t          | j        t          j                  sd S t          |d           |d t          j        fvr=t          d|           t          j        t          d             t          d             n,t          j
        t          d             t          d             d	fd	}|S )
Nbincount	minlengthc                 d    t          |           t          |          k    rt          d          d S )Nz7bincount(): weights and list don't have the same length)rE   r}   r-   r  r  s      r&   validate_inputsz$np_bincount.<locals>.validate_inputsF  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_itemL  s     HHH$HHHHHr%   c                     d S r,   r$   r  s      r&   r  z$np_bincount.<locals>.validate_inputsS  s    Dr%   c                 &    | |xx         dz  cc<   d S r\  r$   r  s       r&   r  znp_bincount.<locals>.count_itemW  s    HHHMHHHHHr%   r   c                     
| ||           |dk     rt          d          t          |           }|dk    r| d         nd}t          d|          D ]3}| |         dk     rt          d          t          || |                   }4t          |dz   |          }t	          j        |	          }t          |          D ]} ||| |         |           |S )Nr   z 'minlength' must not be negativer@  r)   z/bincount(): first argument must be non-negative)r}   rE   r2   r  ra   r  )r-   r  r  rr  rQ  r.   
out_lengthr   r  rE  r  s           r&   bincount_implz"np_bincount.<locals>.bincount_impl[  s    7I...q==?@@@FFA!2q! 	% 	%Ataxx  "0 1 1 1qt$$EEI..
hz9--q 	. 	.AJsAqtW----
r%   r   )r  rT   r   r   r  r   r5  ra   r   r   r4   )r-   r  r  r  r  rE  r  s       @@@r&   np_bincountr  7  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   )ra   r  r   r   r  s     r&   less_than_or_equal_complexr  u  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  )rT   rV  r  r  ra   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,   )rT   rV  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  )ra   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  r7  rG  mid_valcmps         r&   rI  z_searchsorted.<locals>.impl  si    'G"3!9:GjGs7G$$ "!A+!  r%   r$   )r  rI  s   ` r&   _searchsortedr    s#    	  	  	  	  	  Kr%   leftrightc                     |t           v sJ | j        dv rt          }t          }nt          }t
          }|dk    rt          |          }|}nt          |          }|}t          |          t          |          fS )NmMr  )VALID_SEARCHSORTED_SIDEScharr  r  r  r  r  r   )np_dtypesider>  le_impl_cmps         r&    make_searchsorted_implementationr!    s    +++++}"+ v~~b!!b!!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 )NrV   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)   )	ra   r   r   r4   r   rE   r2   rC  r   )r-   rf   r  r   last_key_valr  r7  r.   r  r   r  s            r&   rI  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  )ra   rt  searchsorted)r-   rf   r  s      r&   rI  zsearchsorted.<locals>.impl  s&    
1A?1ad3333r%   c                 D     | |dt          |                     \  }}|S r   )rE   )r-   rf   r  rr>   r  s        r&   rI  zsearchsorted.<locals>.impl  s'    5Aq#a&&))DAqHr%   r  )r   r  r   rT   r   r   r  r	   r   ra   ru  r!  )	r-   rf   r  side_valv_dtnp_dtrI  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)   r@  )rE   r2   )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 decreasingr@  r  r&  r  )r}   rE   ra   r'  )r  r0  r  monor3  s       r&   digitize_implz"np_digitize.<locals>.digitize_implI  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%   r8  )rT   r   r   r   complex_domainr   r   )r  r0  r  r6  r3  s       @r&   np_digitizer8    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,   )ra   rb   rc   	histogram)r-   r0  r2   bin_minbin_maxr   rf   r~  s          r&   histogram_implz$np_histogram.<locals>.histogram_implo  si    $IaLL $ $D		A{{"#{{"#|Atgw-?@@@r%   c                    |dk    rt          d          |\  }}||k    st          d          t          j        |t          j                  }||k    r|||z
  z  }t          j        |           D ]w}|                                }t          j        ||z
  |z            }	d|	cxk    r|k     r!n n|t          |	          xx         dz  cc<   ^||k    r||dz
  xx         dz  cc<   xt          j	        |||dz             }
||
fS )Nr   z0histogram(): `bins` should be a positive integerz;histogram(): max must be larger than min in range parameterr)   )
r}   ra   r  r4   rb   rc   r  r  r  linspace)r-   r0  r2   r<  r=  hist	bin_ratior   rf   ro  
bins_arrays              r&   r>  z$np_histogram.<locals>.histogram_impl{  s6   199$ &8 9 9 9#( '))$ &> ? ? ? xbg..W$$ $'(9 :I "	! 0 0 IIKK JGy'@AA====D===== QLLLA-LLLL'\\ NNNa/NNN['4!8DD
Z''r%   c                    t          |          dz
  }t          |          D ]&}||         ||dz            k    st          d          '|d         }||         }t          j        |t          j                  }|dk    r}t          j        |           D ]h}|                                }	||	cxk    r|k    sn &d}
|dz
  }|
|k     r%|
|z   dz   dz	  }|	||         k     r|dz
  }n|}
|
|k     %||
xx         dz  cc<   i||fS )Nr)   z-histogram(): bins must increase monotonicallyr   )rE   _ranger}   ra   r  r4   rb   rc   )r-   r0  r2   nbinsr.   r<  r=  rA  r   rf   lohira  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)rT   r  r   r  r5  r  )r-   r0  r2   r>  r~  s       @r&   np_histogramrJ  f  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)rM  rO  rP  rL  r  rS  r   rQ  rN  nexpnmantrZ  r[  rX  bitsr$  )r   r  r_  r  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$   rT  )r  r  r  s     r&   r  z'generate_xinfo_body.<locals>.<listcomp>  s!    ...A'!Q--...r%   c                       S r,   r$   )r  	containerr@   s    r&   rI  z!generate_xinfo_body.<locals>.impl  s    y$r%   )r   r	   r}   rJ  r   )	r  np_funcrc  attrnbtyr  rI  r@   r  s	     `    @@r&   generate_xinfo_bodyrg    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&   rI  zol_np_finfo.<locals>.impl  s    r%yyr%   )rg  ra   r$  _finfo_supported)r   rI  r  s     @r&   ol_np_finfork    s7    	UBHe5E	F	FB    Kr%   c                 ^    t          | t          j        t          t                    fd}|S )Nc                      |           S r,   r$   )int_typer  s    r&   rI  zol_np_iinfo.<locals>.impl  s    r(||r%   )rg  ra   r  _iinfo_supported)rn  rI  r  s     @r&   ol_np_iinforp    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   r2   rE   )r-   ro  accr.   s       r&   
_innerprodz#_get_inner_prod.<locals>._innerprod  s?    s1vv 	$ 	$A!qt#CC
r%   c                 z    t          j        |                               |                                        S r,   )ra   r  r  )r-   ro  r  s     r&   	_dot_wrapz"_get_inner_prod.<locals>._dot_wrap
  s)    6!((2,,555r%   )r   
_HAVE_BLASr   real_domainr7  r	   ra   ru  )	dtadtbru  fltyfloatsa_dtb_dtrw  r  s	           @r&   _get_inner_prodr    s         u33DD[(SD[F 
}}}}dD))		6 	6 	6 	6 
		6r%   c                 x    t          | t          j                  r| j        dk    st	          d|z            d S d S )Nr)   z!%s() only supported on 1D arrays )rT   r   r   r|   r   )r-   r  s     r&   
_assert_1dr    sG    !U[!! Ov{{AIMNNNO O{r%   c                     d S r,   r$   )ap1ap2mode	directions       r&   _np_correlate_corer    r5  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'r@  zInvalid direction)rE   r}   ra   r  r2   )r  r  r  r  n1n2r  rr  n_leftn_rightrf  r   incr.   rj  r  	innerprods                  r&   rI  z%_np_correlate_core_impl.<locals>.impl!  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   ra   ru  r  )	r  r  r  r  r~  r  rI  r  r  s	          @@r&   _np_correlate_core_implr    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,   )ra   r   r  s    r&   op_conjz_np_correlate.<locals>.op_conji  s    wqzzr%   c                     | S r,   r$   r  s    r&   op_nopz_np_correlate.<locals>.op_nopm  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 emptyr@  r)   rE   r}   r  )r-   rf   r  lalva_opb_ops        r&   rI  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   r7  )r-   rf   r  r  r  rI  r  r  s         @@r&   _np_correlater  d  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-   rf   r  r  r  s        r&   rI  znp_convolve.<locals>.impl  s    VVVV77233377233377%a44R4$:::%a44R4$:::r%   r   )r  )r-   rf   r  rI  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&   rI  znp_asarray.<locals>.impl  s    r%   c                 ,    |                      |          S r,   )r  r  s     r&   rI  znp_asarray.<locals>.impl  s    xx&r%   c                 *    t          j        |           S r,   r1  r  s     r&   rI  znp_asarray.<locals>.impl  s    x{{"r%   c                 ,    t          j        | |          S r,   r1  r  s     r&   rI  znp_asarray.<locals>.impl  s    x5)))r%   c                 .    t          j        |           S r,   r1  )r-   r   r  s     r&   rI  znp_asarray.<locals>.impl  s    8Ar??"r%   z?asarray support for List is limited to Boolean and Number typesc                     t          |           }t          j        |          }t          |           D ]
\  }}|||<   |S r  )rE   ra   r   r   )r-   r   r;  rf  r.   rf   target_dtypes         r&   rI  znp_asarray.<locals>.impl  sK    AA(1L111C!!  1AJr%   c                 ,                                     S r,   )r  )r-   r   rd   s     r&   rI  znp_asarray.<locals>.impl  s    88::r%   r,   )r
   rT   r   r   r   r   r  rW   r  r  r	   
containersListTyper   StringLiteralra   rt  rV   )r-   r   rI  dt_convrd   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   rX  s     r&   rI  znp_asfarray.<locals>.impl  s    :a$$$r%   )rT   r   Typer	   ra   r  inexactr   )r-   r   rI  rX  s      @r&   np_asfarrayr    sp     eUZ(( 	$UOOE}UBJ// 	BBB* 	% 	% 	% 	% 	% 	%r%   c                     d }|S )Nc                    t          j        |                                           t          j        |          j        dk    rt	          d          t          j        j        d                    r!j        j        k    rd}t	          |          t          j        j                  }fdt          |          D             }t          j        |          S )Nr   z"Cannot extract from an empty arrayz+condition shape inconsistent with arr shapec                 :    g | ]}|         
j         |         S r$   r  )r  r   r-   r  s     r&   r  z7np_extract.<locals>.np_extract_impl.<locals>.<listcomp>  s(    BBBsS	Bqvc{BBBr%   )	ra   rt  rw  r   r}   r  r   r2   r2  )r  rd   r   max_lenr   r-   r  s        @@r&   np_extract_implz#np_extract.<locals>.np_extract_impl  s    z)$$,,..JsOO6Q;;ABBB 6$qvww-   	"TY%7%7?CS//! afdi((BBBBBeGnnBBBx}}r%   r$   )r  rd   r  s      r&   
np_extractr    s      ( r%   c                    dd}t          | t          j        t          j        f          st	          d          t          |t          j        t          j        f          st	          d          t          |t
          t          j        t          j        f          st	          d          t          | d         t          j                  st	          d          t          |d         t          j                  st	          d          t          | d         t          j                  r4t          | d         j	        t          j                  st	          d          t          | d         t          j                  rUt          | d         t          j                  r&t          | d         d         t          j                  st	          d	          t          | d         t          j                  r+| d         j
        |d         j
        k    rt	          d
          t          | d         t          j                  r | d         j
        dk     rt	          d          |S )Nr   c                 T   t          |           t          |          k    rt          d          |t          j        |d         j        |d         j                  z  }t          t          |           dz
  dd          D ](}| |         }||         }t          j        |||          })|S )Nz7list of cases must be same length as list of conditionsr   r)   r@  )rE   r}   ra   r  r   r   r2   r  )condlist
choicelistdefaultr   r.   r  choices          r&   np_select_arr_implz%np_select.<locals>.np_select_arr_impl  s    x==C
OO++ - . . .
1 3Z]5HIIIs8}}q("b11 	. 	.AA;D]F(4--CC
r%   z"condlist must be a List or a Tuplez$choicelist must be a List or a Tuplez,default must be a scalar (number or boolean)z items of condlist must be arraysz"items of choicelist must be arraysz%condlist arrays must contain booleansz*condlist tuples must only contain booleanszHcondlist and choicelist elements must have the same number of dimensionsr)   z/condlist arrays must be of at least dimension 1r  )rT   r   ListrF   r   r  r  r  r   r   r|   )r  r  r  r  s       r&   	np_selectr  	  s   
 
 
 
 hU^ <== CABBBj5:u~">?? ECDDDgU\5=ABB MKLLL hqk5;// A?@@@jmU[11 CABBB (1+u{++ J(1++U];; 	J !HIII(1+u~.. O8A;77 	Ox{1~u}==	O !MNNN8A;,, :QK
1 222 9 : : 	:(1+u{++ P0@10D0DNOOOr%   c                     t          |           rt          |          st          d          d| j        j        v sd|j        j        v r)| j        j        |j        j        k    rt          d          d }|S )Nz.The arguments to np.union1d must be array-likeunichrz/For Unicode arrays, arrays must have same dtypec                     t          j        t          j        |                     }t          j        t          j        |                    }t          j        t          j        ||f                    S r,   )ra   rB  rt  r  r  )r  r  r-   ro  s       r&   
union_implznp_union1d.<locals>.union_implD  sN    HRZ__%%HRZ__%%yA//000r%   )r
   r   r   r  )r  r  r  s      r&   
np_union1dr  <  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)ra   rt  rb   r}  r}   )r-   r   r.   r  s      r&   rI  z"np_asarray_chkfinite.<locals>.impl[  s[    Jq###1 	H 	HA;q>> H !FGGGHr%   r,   )
rT   r   r   r  rW   r   r   r   r	   r   )r-   r   r   rI  r  s       @r&   np_asarray_chkfiniter  L  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r@  -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)   r@  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 )Nr@  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}   ra   rt  r  r   rC  r   divmodr2   r?  modr  r2  r  r   )pdiscontrY   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&   rI  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%   Nr@  r  )rT   r  r   r  r   r
   r  r   r   r  r  rN   ra   r  r	   r   r   r  integer)	r  r  rY   r  r   rI  r   r  r  s	         @@@r&   numpy_unwrapr  e  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 )NrY  r{   r   r)   )ra   r  r  
less_equalr  rr  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 )NrY  r{   gzG?r   r)   g{Gz?rb  ra   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  )ra   r2  r   r  )r  funcs    r&   window_implz>window_generator.<locals>.window_overload.<locals>.window_impl  sP    1uux"*5555Avvwq
3333477Nr%   )rT   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   rs  )r  valsb0b1r.   b2s         r&   _chbevlr  "  s_    	aB	B1c$ii   # #Vb[47""r'?r%   c                    | dk     r|  } | dk    r2d| z  dz
  }t          j        |           t          |t                    z  S t          j        |           t          d| z  dz
  t                    z  t          j        |           z  S )Nr   g       @r   rb  g      @@)ra   expr  _i0A_i0Br  r(  s     r&   _i0r  /  sw    1uuBCxx1WOvayy71d++++6!99wtax#~t444rwqzzAAr%   c           	      >   t          j        | t           j                  }t          t          j        |                    }t	          t          |                    D ]>}t          |t          j        d| |         |z
  |z  dz  z
            z            |z  ||<   ?|S )Nr  r)   rb  )ra   r  r   r  r2   rE   r  )rr  alphabetar  tr.   s         r&   _i0nr  :  s    
arz***ABJt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   rb  )ra   r2  r   r  r  r  )r  r  rr  r  s       r&   np_kaiser_implz!np_kaiser.<locals>.np_kaiser_implL  sp    q558Bbj11116671BJ////IaOOQ#Aud###r%   )rT   r   r  r   r  )r  r  r  s      r&   	np_kaiserr  D  sf    a'' 20111dU]EK899 ><===	$ 	$ 	$ r%   c                 h   d } ||           \  }}} ||          \  }}}	t          j        ||	          t          j        ||          z
  }
t          j        ||          t          j        ||	          z
  }t          j        ||          t          j        ||          z
  }|
|d<   ||d<   ||d<   d S )Nc                     | d         }| d         }| j         d         dk    r	| d         }n-t          j        | j                            d          |          }|||fS )N.r   .r)   r@  rz   .r{   r   )r   ra   r  r   r   )r  x0r  x2s       r&   _cross_preprocessingz._cross_operation.<locals>._cross_preprocessing]  sY    vYvY72;!6BBQW\\!__b11B2rzr%   r  r  r  )ra   r  )r-   ro  r   r  a0r  r  r  r  r  cp0cp1cp2s                r&   _cross_operationr"  Z  s       &%a((JBB%%a((JBB
+b"

B 3 3
3C
+b"

B 3 3
3C
+b"

B 3 3
3CCKCKCKKKr%   c                     d S r,   r$   r  s     r&   _crossr$  r  r5  r%   c                     t          j        t          | j                  t          |j                            | j        dk    r|j        dk    rfd}nfd}|S )Nr)   c                 T    t          j        d          }t          | ||           |S )Nrz   )ra   r   r"  )r-   ro  cpr   s      r&   rI  z_cross_impl.<locals>.implz  s+    $&&BQ2&&&Ir%   c                     t          j        | d         |d                   j        }t          j        |dz             }t	          | ||           |S )Nr  r'  )ra   r  r   r   r"  )r-   ro  r   r(  r   s       r&   rI  z_cross_impl.<locals>.impl  sK    F1V9ai006E%$,..BQ2&&&Ir%   )ra   ru  r	   r   r|   )r-   ro  rI  r   s      @r&   _cross_implr*  v  s|    Xag..0A0ABBEv{{qv{{	 	 	 	 	 	
	 	 	 	 	
 Kr%   c                 f    t          |           rt          |          st          d          d }|S )NInputs must be array-like.c                 .   t          j        |           }t          j        |          }|j        d         dvs|j        d         dvrt          d          |j        d         dk    s|j        d         dk    rt	          ||          S t          d          )Nr@  )r{   rz   zDIncompatible dimensions for cross product
(dimension must be 2 or 3)rz   zDimensions for both inputs is 2.
Please replace your numpy.cross(a, b) call with a call to `cross2d(a, b)` from `numba.np.extensions`.)ra   rt  r   r}   r$  r-   ro  r  r  s       r&   rI  znp_cross.<locals>.impl  s    Z]]Z]]8B<v%%"V)C)C-  
 8B<1 1 1"b>>!H  r%   r
   r   r-   ro  rI  s      r&   np_crossr1    sG    A 8&6q&9&9 86777  " Kr%   c                     d } ||           \  }} ||          \  }}t          j        ||          t          j        ||          z
  }t          j        |          S )Nc                 *    | d         }| d         }||fS )Nr  r  r$   )r  r  r  s      r&   r  z0_cross2d_operation.<locals>._cross_preprocessing  s    vYvY2vr%   )ra   r  rt  )r-   ro  r  r  r  r  r  r(  s           r&   _cross2d_operationr4    sm      
 "!!$$FB!!!$$FB	R		r{2r22	2B :b>>r%   c                     d S r,   r$   r  s     r&   cross2dr6    r5  r%   c                 f    t          |           rt          |          st          d          d }|S )Nr,  c                     t          j        |           }t          j        |          }|j        d         dk    s|j        d         dk    rt          d          t	          ||          S )Nr@  r{   zRIncompatible dimensions for 2D cross product
(dimension must be 2 for both inputs))ra   rt  r   r}   r4  r.  s       r&   rI  zcross2d_impl.<locals>.impl  sf    Z]]Z]]8B<1 1 18   ""b)))r%   r/  r0  s      r&   cross2d_implr9    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 stringr:  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)   ro  r@  )ra   rt  r  rE   )filttrimr  firstr.   lasts         r&   rI  znp_trim_zeros.<locals>.impl  s    Zzz||$;; & &66E!AIEE4yy$;;"X $ $66E!8DD%*~r%   r:  )rT   r   r   r   r|   strUnicodeType)r=  r>  rI  s      r&   np_trim_zerosrD    s    dEK(( DBCCCy1}}/000dS%"3455 ECDDD   & Kr%   c                     t          |           st          |          st          d          t          |t          j        t
          f          st          d          dd}|S )Nz+setxor1d: first two args must be array-likez2setxor1d: Argument "assume_unique" must be booleanFc                 (   t          j        |           }t          j        |          }|s)t          j        |          }t          j        |          }n(|                                }|                                }t          j        ||f          }|                                 t          j        |j        d         dz   t           j                  }d|d<   d|d<   |dd          |d d         k    |dd<   ||dd          |d d         z           S )Nr   r)   r  Tr@  )	ra   rt  r  rB  r  r  r   r   r   )r  r  r  r-   ro  r  flags          r&   np_setxor1d_implz)jit_np_setxor1d.<locals>.np_setxor1d_impl  s    JsOOJsOO 		!A	!AA		A		A naV$$


x	!q(999QRWCRC(QrT
48d3B3i'((r%   r8  r  )r  r  r  rH  s       r&   jit_np_setxor1drI    sx    S!! I%5c%:%: IGHHH}u}d&;<< PNOOO) ) ) ), r%   c                     t          |           st          |          st          d          t          |t          j        t
          f          st          d          dd}|S )Nz,setdiff1d: first two args must be array-likez3setdiff1d: Argument "assume_unique" must be booleanFc                 4   t          j        |           } t          j        |          }|r)|                                 } |                                }n(t          j        |           } t          j        |          }| t          j        | |dd                   S )NTr  invert)ra   rt  rB  r  in1d)r  r  r  s      r&   np_setdiff1d_implz+jit_np_setdiff1d.<locals>.np_setdiff1d_impl  sx    joojoo 	!))++C))++CC)C..C)C..C2734EEEFFr%   r8  r  )r  r  r  rO  s       r&   jit_np_setdiff1drP    s|    S!! J%5c%:%: JHIII}u}d&;<< QOPPP	G 	G 	G 	G r%   c                 (   t          |           st          |          st          d          t          |t          j        t
          f          st          d          t          |t          j        t
          f          st          d          dd}|S )Nz'in1d: first two args must be array-likez.in1d: Argument "assume_unique" must be booleanz'in1d: Argument "invert" must be booleanFc                 &   t          j        |                                           } t          j        |                                          }t          |          dt          |           dz  z  k     r{|r<t          j        t          |           t           j                  }|D ]}|| |k    z  }n;t          j        t          |           t           j                  }|D ]}|| |k    z  }|S |st          j        |           }| |         }t          j        |j	        t           j                  }d|d d<   |dd          |d d         k    |dd <   ||         } t          j
        |          dz
  }t          j        |j	        t           j                  }	||	|<   t          j        |          }t          j        | |f          }
|
                    d          }|
|         }t          j        |j        t           j                  }|r|dd          |d d         k    |d d<   n|dd          |d d         k    |d d<   ||dd <   t          j        |
j	        t           j                  }|||<   |r|d t          |                    S ||	         S )	Nr  g(\?r  Tr)   r@  	mergesort)kind)ra   rt  rB  rE   r  r   r  argsortr   r   r   r4   r  r  r   )r  r  r  rM  r  r-   order1r  imaskinv_idxarordersarrG  rf  s                  r&   np_in1d_implz!jit_np_in1d.<locals>.np_in1d_impl+  s    joo##%%joo##%%
 s88b3s88u,,,, 'ws3xxrx888 ' 'ASAX&DD' xC999 ' 'ASAX&DDK  	! Z__Ff+C8CIRX666DD!H122w#crc(*DHd)CIdOOa'Ehtz999G#GFO)C..C^S#J'' 


,,ix"(++ 	.QRRCH,D"IIQRRCH,D"IRSS	hrxrx000E
  	 yCy>!w<r%   FFr  )r  r  r  rM  r\  s        r&   jit_np_in1dr^  "  s    S!! E%5c%:%: ECDDDmemT%:;; LJKKKfu}d344 ECDDD7  7  7  7 r r%   c                 (   t          |           st          |          st          d          t          |t          j        t
          f          st          d          t          |t          j        t
          f          st          d          dd}|S )Nz'isin: first two args must be array-likez.isin: Argument "assume_unique" must be booleanz'isin: Argument "invert" must be booleanFc                     t          j        |           } t          j        | |||                              | j                  S )NrL  )ra   rt  rN  rC  r   )r  test_elementsr  rM  s       r&   np_isin_implz!jit_np_isin.<locals>.np_isin_implq  sB    *W%%ww]$& & &&-ggm&<&<	=r%   r]  r  )r  ra  r  rM  rb  s        r&   jit_np_isinrc  g  s    W%% E)9-)H)H ECDDD}u}d&;<< LJKKKvt455 ECDDD= = = = r%   r,   r  r  r8  r   r  r  rh  r   r  r  rR  r*  rI  r  r  r  rA  r]  (  __doc__r  collectionsr   r9  llvmlite.irrA  numpyra   
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   numba.cpython.unsafe.tupler    r'   rx  rJ   r]   r  r   rt   rw   r   r4   	DTypeSpecIntegerLiteralr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   aminr  r  amaxr  r   r%  r*  r+  r3  r8  r;  r=  r2  rK  rO  rP  rU  rd  re  r  r  r  averager  r  	iscomplexr  isrealr  r  r  isscalarr  r  r  r  r  r  r  r  r  r  r  r  r  r  nanminr  nanmaxr  r	  r  r  r  nanstdr  nansumr  nanprodr  
nancumprodr"  	nancumsumr'  r+  r1  r4  r7  r;  r?  rB  rK  rW  rV  rY  rg  rf  _partition_w_nan_argpartition_w_nanrm  rl  r  r  ro  rt  medianry  r  r  r  r  r  r  r  r  r  nanpercentiler  quantiler  nanquantiler  	nanmedianr  r  r  r  	partitionr  rd  r  r  r  r  r  r  trilr  r  r  tril_indices_fromr  r  triur"  r)  r&  triu_indices_fromr+  r.  r6  r<  ediff1drM  rO  rV  rY  r_  trapzri  	trapezoidrl  rn  vanderrw  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&  r9  r)  r/  fill_diagonalr:  r=  rI  rO  aroundrX  r[  round_ra  rb  rj  rm  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'  digitizer8  r2   rE  r;  rJ  _mach_ar_supportedr\  rj  r$  ro  r  rg  rk  rp  r  r  r  r  	correlater  convolver  rt  r  asfarrayr   r  extractr  selectr  union1dr  asarray_chkfiniter  unwrapr  r  r  r  r  r  bartlettblackmanhamminghanningr2  r
  r  r  r  r  kaiserr  r"  r$  r*  crossr1  r4  r6  r9  
trim_zerosrD  setxor1drI  	setdiff1drP  rN  r^  isinrc  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/ / / / / / / / / / / / ' ' ' ' ' ' * * * * * */ / / / / / / / / / / / / / 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	 	 	 
-  . 
"&  6 6'OOEK''///   . . . .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 
",  2 
"/     8 	 	 	 
"&
 
 
 
     > > > >
 
"'" " " "4 
"/
  
  
  
  
"

% 
% 
%  
% > > > >
 
"'" " " "2 
"/
  
  
  
  
"

% 
% 
%  
%	 	 	 
.1 1 1     " 
"*4 4 4 4n	 	 	 
/  	 	 	 
&   
"(   , FHHR\8$$$ < < <6 @ @ @ 
")$" $" $" $"N 
"'  2   A A AH j j jZ U U Up 
")% % %V 	 	 	   0	 	 	 

"##$$ $$ $#$$N       %$[[11   ** * * 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 6HHRY&&& 
"'M M M& 
"(< < < <@ rz5;'',,5D 5D -, ('5Dp          . 
"(      
"(2 2 2j 
"'   
"'   
(

 
 
 
"
     -,\\:: ,,-E-EFF  
")+% +% +%\ 
"'# # # #L 
".  * 
".       :1 1 1 
"+6 6 6 6r #"9--$$Z00  ! ! !B       	 	 	 + + +  $ %9fg%677 ; ; ;* 
"/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 6XbkZ     
"*  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   &	 	 	 
'  " 
"-   @ 
"+   @ 
",   * 
"'A A A AH 
"'     r%   