
    xKg?             	       $   d Z ddlZddlmZ ddlZddlZddlZddlZ	ddl
mZmZ ddlmZmZmZ ddlmZmZmZmZmZmZmZmZ ddlmZmZmZmZ ddlm Z m!Z!m"Z"m#Z# dd	l$m%Z% dd
lm&Z& ddl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- ddl.m/Z/ d Z0 e0       Z1e&d        Z2e&d        Z3 ee	jh                  ejj                         edejj                        d               Z6ed        Z7d Z8 ee	jh                  ejj                  ejr                  ejt                         ee	jh                  ejj                  ejv                  ejt                         edejj                  ejr                  ejt                         edejj                  ejv                  ejt                        d                             Z< ee	jh                  ejj                  ejt                         edejj                  ejt                        d               Z= ee	jh                  ejj                  ejr                         ee	jh                  ejj                  ejv                         edejj                  ejr                         edejj                  ejv                        d                             Z>d Z? ee	j                         eejj                  d      d               ZA ee	j                         eejj                  d      d               ZC ee	j                         eejj                  d      d               ZE ee	j                         eejj                  d      d               ZG ee	j                         eejj                  d       d!               ZI ee	j                         eejj                  d"      d#               ZKed$        ZLed%        ZMed&        ZN ee	j                         ee	j                         eejj                  d'      d(                      ZQ ee	j                         ee	j                         eejj                  d)      d*                      ZTed+        ZUed,        ZVed-        ZW ee	j                         eejj                  d.      dd/              ZYed0        ZZed1        Z[ed2        Z\d3 Z] ee	j                         eejj                  d4      dd5              Z_ ee	j                         eejj                  d6      d7               Zaedd9       Zb ee	j                         eejj                  d:      dd;              Zd ee	j                         eejj                  d<      d=               Zf ee	j                        dd>       Zhd? Zi ee	j                        d@        Zk ee	j                        dA        Zm ee	j                        dB        Zn ee	j                        dC        Zo ee	j                        dD        ZqdE Zr ee	j                        ddF       Zs ee	j                        ddG       ZtedH        ZuedI        ZvedJ        ZwdK Zx e exeud8L            Zy e exevd8L            Zz e exeudML            Z{ e exevdML            Z|edN        Z} ee	j                        ddO       Z~ ee	j                        dP        Z ee	j                        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        ZedY        ZdZ Zd[ Zd\ Z ee      d]        Z ee      d^        Zd_ Z ee      d`        Z ee	j2                        da        Zedbk  r  eejj                  dc      e       edd        ZddeZ e eeu            Z e ee            Z e eedMf            Zdg Z e ee            Z e ee            Z e ee            Zedh        Zedi        Z ee	jL                        dj        Zedk        Zedl        Zedm        Zedn        Zedo        Zedp        Zdq Z ee	j^                        dr        Z ee	jb                        ds        Z ee	jf                        dt        Z ee	jj                        du        Z ee	jn                        dv        Zedw        Zedx        Zedy        Z ee	jx                        dz        Z ee	j|                        d{        Zed|        Z ee	j                        dd}       Zed~        Zed	d       Z ee	j                        d	d       Z ee	j                        d
d       Z ee	j                        d	d       Zed	d       Z ee	j                        d	d       Z ee	j                        d
d       Z ee	j                        d	d       Zd Z eeҫ      d        Zd Z ee	j                        dd       Zd Z ee׫      d        Zd Z ee٫      d        Z ee	j                        dd       Zed        Zed        Z ee	j                        dd       Z ee	j                        d        ZdZed        Zed        Zed        Z ee	j                        d        Zed        Zed        Zd Z ee      d        Zed        Z ed       Zd Zd Zed        Z ed       Zed        Zd Zed        Zed        Z ee	j                        dd       Z ee	j                        dd       Z ee	j                        d        Z ee	j                        d        Zed        Zed        Z ed        Zed        Zed        Z ed       Zd Z ee      d        Z ee	j                        dd       Zd Z	e&d        Z
ed        Z ee	j                         ee	j                        d
d              Zedbk  r  ee	j                        e        ee	j                         d        Z ee	j$                        dd       Z ee	j(                  ejj                         edejj                        d               Zd Zed        Zed        Zd Z ee	j4                        d        Z ee	j4                        d        Z ee	j:                        d        Z ee	j>                        dÄ        Z  eejB                        dĄ        Z" ee	jF                        ddń       Z$ edƄ       Z% edǄ       Z& ee	jN                        dȄ        Z( ee	jR                        ddɄ       Z* ee	jV                        dʄ        Z, ee	jZ                        d˄        Z.d̄ Z/ ee	j`                        dd̈́       Z1 ee      Z2 ee      Z3ed΄        Z4edτ        Z5edЄ        Z6edф        Z7ed҄        Z8dӄ Z9 e:ddh      Z;dք Z< ee	jz                        ddׄ       Z= ee	j|                        dd؄       Z?e@ZA ee	j                        ddل       ZCdڐZD edېeD      ZEdܐZF edݐeF      ZGdސZH edߐeH      ZId ZJ eJ        d ZK ee	j                        d        ZL ee	j                        d        ZMd ZNd ZOd ZP eeP      d        ZQ ee	j                        dd       ZS ee	j                        dd       ZU ee	j                        dd       ZWedbk  r' ee	j                        e	j                  fd       ZZ ee	j                        d        Z\ ee	j                        d	d       Z^ ee	j                        d        Z` ee	j                        dd       Zb ee	j                        dd       Zded        Zeed        Zfed        Zged        Zhd Zi  ee	j                         eiee               ee	j                         eief               ee	j                         eieg               ee	j                         eieh              e	j                  g d      Zo e	j                  g d      Zped        Zqed        Zred        Zs ee	j                        d        Zued        Zvd Zw eew      d        Zx ee	j                        d        Zzed         Z{d Z| ee|      d        Z} ee	j                        dd       Zy(  z5
Implementation of math operations on Array objects.
    N)
namedtuple)typescgutils)overloadoverload_methodregister_jitable)as_dtypetype_can_asarraytype_is_scalarnumpy_versionis_nonelikecheck_is_integer	lt_floats
lt_complex)lower_builtinimpl_ret_borrowedimpl_ret_new_refimpl_ret_untracked)
make_array	load_item
store_item_empty_nd_impl)ensure_blas)	intrinsic)RequireLiteralValueTypingErrorNumbaValueErrorNumbaNotImplementedErrorNumbaTypeErrorNumbaDeprecationWarning)tuple_setitemc                  8    	 t                y# t        $ r Y yw xY wNFT)r   ImportError     V/home/alanp/www/video.onchill/myenv/lib/python3.12/site-packages/numba/np/arraymath.py_check_blasr(       s%       s   
 	c                     t        |      dz
  t        j                  t        j                         |      }fd}||fS )a  
    This routine converts shape list where the axis dimension has already
    been popped to a tuple for indexing of the same size.  The original shape
    tuple is also required because it contains a length field at compile time
    whereas the shape list does not.
       c           	      Z   | j                        }t        j                  |      }|\  }}d }t              D ]m  }	| j	                  t
        j                  |	      }
| j                  ||t        j                  t
        j                        ||
g      }|j                  |||	      }o |S )Nc                     | |   S Nr%   )ais     r'   array_indexerzB_create_tuple_result_shape.<locals>.codegen.<locals>.array_indexerE   s    Q4Kr&   )	get_value_typer   get_null_valuerangeget_constantr   intpcompile_internalinsert_value)cgctxbuilder	signatureargslltuptytupin_shape_r0   r/   dataidxdatand
shape_listtuptys               r'   codegenz+_create_tuple_result_shape.<locals>.codegen=   s    &&u-$$W- 1	 rA((Q7G))'=*/**Z*L+3W*=?D &&sD!4C  
r&   )lenr   UniTupler5   )tyctxrC   shape_tuplefunction_sigrE   rB   rD   s    `   @@r'   _create_tuple_result_shaperK   ,   sF     
[	A	BNN5::r*E[1L*   r&   c                 ~  	
 t        |t        j                        st        d      |j                  	t        |      
	
k\  rd		}
|z
  dz
  }g }|t        j                  g|z  z  }|t        j                  gz  }|t        j                  g|z  z  }t        j                  |       |||      }	
fd}||fS )aH  
    Generates a tuple that can be used to index a specific slice from an
    array for sum with axis.  shape_tuple is the size of the dimensions of
    the input array.  'value' is the value to put in the indexing tuple
    in the axis dimension and 'axis' is that dimension.  For this to work,
    axis has to be a const.
    z axis argument must be a constantr   r*   c                 n   | j                        }t        j                  |      }|\  }}}d }| j                  ||t	        j
                         g       }	t        d      D ]  }
|j                  ||	|
      } |j                  ||      }t        dz         D ]  }
|j                  ||	|
      } |S )Nc                      t        d d       S r-   )slicer%   r&   r'   create_full_slicez<_gen_index_tuple.<locals>.codegen.<locals>.create_full_slice   s    t$$r&   r   r*   )r1   r   r2   r6   r   slice2_typer3   r7   )r8   r9   r:   r;   r<   r=   r?   	value_argrP   
slice_datar/   
axis_valuerB   rD   s              r'   rE   z!_gen_index_tuple.<locals>.codegen|   s    &&u-$$W- !Iq	% ++G5F,1,=,=,?,.0
 q*%A&&sJ:C & ""3	:> zA~r*A&&sJ:C +
r&   )	
isinstancer   Literalr   literal_valuerF   rQ   r5   Tuple)rH   rI   valueaxisbeforeafter
types_listrJ   rE   rT   rB   rD   s            @@@r'   _gen_index_tupler^   U   s     dEMM*!"DEE##J	[	B R
 FK!OEJ5$$%..J5::,J5$$%--J KK
#EeT2L>   r&   z	array.sumc           	          |j                  d      fd}| j                  ||||t        |j                               }t        | ||j                   |      S )Nr   c                 f    }t        j                  |       D ]  }||j                         z  } |S r-   npnditeritem)arrcvzeros      r'   array_sum_implz!array_sum.<locals>.array_sum_impl   .    3AMA  r&   rf   localsreturn_typer6   dictr   contextr9   sigr;   ri   resrh   s         @r'   	array_sumru      Y     ??1D 
"
"7NC*.*A # CCWgsDDr&   c                     | S r-   r%   )re   rg   s     r'   _array_sum_axis_noprx      s    Jr&   c                       fd}|S )Nc                    | j                   }s|dk  s|dkD  rt        d      ||k\  rt        d      t        | j                        }||   }|j	                  |       t        || j                        }t        j                  |t                    }t        |      D ]  }r t        | j                  |      }|| |   z  }%|dk(  r t        | j                  |d      }	|| |	   z  }J|dk(  r t        | j                  |d      }
|| |
   z  }o|dk(  r t        | j                  |d      }|| |   z  }|dk(  st        | j                  |d      }|| |   z  }  |d      S )a(  
        function that performs sums over one specific axis

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

        typing/arraydecl.py:sum_expand defines the return type for sum with
        axis. It is one dimension less than the input array.
        r      zHNumba does not support sum with axis parameter outside the range 0 to 3.zaxis is out of bounds for arrayr*      )ndim
ValueErrorlistshapepoprK   rb   fulltyper3   r^   )re   rZ   r}   ashapeaxis_lenashape_without_axisresult
axis_indexindex_tuple_genericindex_tuple1index_tuple2index_tuple3index_tuple4const_axis_valis_axis_constoprh   s                r'   innerz gen_sum_axis_impl.<locals>.inner   s~    xxax4!8  "G H H
 4<>?? cii$<

48K,dDJ?  /J&6syy*7E'G##122
 19#3CIIz1#MLc,//FQY#3CIIz1#MLc,//FQY#3CIIz1#MLc,//FQY#3CIIz1#MLc,//F+ *, &!}r&   r%   )r   r   r   rh   r   s   ```` r'   gen_sum_axis_implr      s    <z Lr&   c                    |j                   } t        |d|      d      }t        |dd       t        j                  }nt        }|j
                  \  }}}	d}
d}t        |t        j                        r|j                  }|dk  r|j                  |z   }|dk  s||j                  kD  rt        d      | j                  j                  |      }| j                  ||      }|d   ||d   f}|j                  |||	g      }d}
t!        |
|||      }t#        |      fd	}| j%                  ||||      }t'        | ||j                   |      S )
Ndtyper   r}   Fz'axis' entry is out of boundsr|   r;   Tc                      | |      S r-   r%   )re   rZ   r   compileds      r'   array_sum_impl_axisz1array_sum_axis_dtype.<locals>.array_sum_impl_axis      T""r&   )ro   getattrrb   takerx   r;   rU   r   rV   rW   r}   r~   typing_contextresolve_value_typer4   replacer   r   r6   r   )rr   r9   rs   r;   rettyrh   r   ty_arrayty_axisty_dtyper   r   axis_valgen_implr   rt   r   s                   @r'   array_sum_axis_dtyper      sO   
 OOE)75'5)!,D ufd#+WW $'HH!XwMN'5==) ..A%]]^;NA(--!?<==((;;NK''@Aw$q')kk'8<k= DIH)H# 
"
"7,?d
KCGWcoosCCr&   c           	          |j                  d      fd}| j                  ||||t        |j                               }t        | ||j                   |      S )Nr   c                 f    }t        j                  |       D ]  }||j                         z  } |S r-   ra   )re   r   rf   rg   rh   s       r'   ri   z'array_sum_dtype.<locals>.array_sum_impl'  rj   r&   rk   rl   rn   rq   s         @r'   array_sum_dtyper   "  rv   r&   c                    |j                   } t        |d|      d      }t        |dd       t        j                  }nt        }|j
                  \  }}d}	d}
t        |t        j                        r|j                  }
|
dk  r|j                  |
z   }
|
dk  s|
|j                  kD  rd|
 d}t        |      | j                  j                  |
      }| j                  ||
      }|d   |f}|j                  ||g      }d}	t!        |	|
||      }t#        |      fd	}| j%                  ||||      }t'        | ||j                   |      S )
Nr   r   r}   Fz'axis' entry (z) is out of boundsr   Tc                      | |      S r-   r%   )re   rZ   r   s     r'   r   z+array_sum_axis.<locals>.array_sum_impl_axisW  r   r&   )ro   r   rb   r   rx   r;   rU   r   rV   rW   r}   r   r   r   r4   r   r   r   r6   r   )rr   r9   rs   r;   r   rh   r   r   r   r   r   msgr   r   r   rt   r   s                   @r'   array_sum_axisr   2  sT   
 OOE)75'5)!,D ufd#+WW ((XwMN'5==) ..A%]]^;NA(--!?">"22DEC!#&&((;;NK''@Aw kk'2k3 DIH)H# 
"
"7,?d
KCGWcoosCCr&   c                     | j                   t        j                  k(  r&t        j                  |      j	                  |       }|S | j                  |      }|S r-   )r   rb   timedelta64int64view)r   rY   acc_inits      r'   get_accumulatorr   ^  sF    zzR^^#88E?''. O ::e$Or&   prodc                     t        | t        j                        r(t        | j                        }t        |d      fd}|S y )Nr*   c                 f    }t        j                  |       D ]  }||j                         z  } |S r-   ra   r.   rf   rg   r   s      r'   array_prod_implz#array_prod.<locals>.array_prod_impln  s.    AYYq\QVVX "Hr&   )rU   r   Arrayr	   r   r   )r.   r   r   r   s      @r'   
array_prodr   f  s?     !U[[!!"5!,	  "r&   cumsumc                    t        | t        j                        r| j                  t        j                  v }| j                  t        j
                  k(  }|r1| j                  j                  t        j                  j                  k  s|rt        t        j                        nt        | j                        t        d      fd}|S y )Nr   c                     t        j                  | j                        }}t        | j                        D ]  \  }}||z  }|||<    |S r-   rb   emptysize	enumerateflatr.   outrf   idxrg   r   r   s        r'   array_cumsum_implz'array_cumsum.<locals>.array_cumsum_impl  L    ((1665)CA#AFF+QQC , Jr&   
rU   r   r   r   signed_domainbool_bitwidthr5   r	   r   )r.   
is_integeris_boolr   r   r   s       @@r'   array_cumsumr   w  s     !U[[!WW 3 33
''U[[(177++ejj.A.AAUZZ(EQWW%E"5!,	 ! ' "r&   cumprodc                    t        | t        j                        r| j                  t        j                  v }| j                  t        j
                  k(  }|r1| j                  j                  t        j                  j                  k  s|rt        t        j                        nt        | j                        t        d      fd}|S y )Nr*   c                     t        j                  | j                        }}t        | j                        D ]  \  }}||z  }|||<    |S r-   r   r   s        r'   array_cumprod_implz)array_cumprod.<locals>.array_cumprod_impl  r   r&   r   )r.   r   r   r   r   r   s       @@r'   array_cumprodr     s     !U[[!WW 3 33
''U[[(177++ejj.A.AAUZZ(EQWW%E"5!,	 "!' "r&   meanc                 0   t        | t        j                        r{| j                  t        j                  t        t        j                  g      z  v }|rt        t        j                        }nt        | j                        }t        |d      fd}|S y )Nr   c                     }t        j                  |       D ]  }||j                         z  } || j                  z  S r-   )rb   rc   rd   r   r   s      r'   array_mean_implz#array_mean.<locals>.array_mean_impl  s9     AYYq\QVVX "qvv:r&   )
rU   r   r   r   integer_domain	frozensetr   r	   float64r   )r.   	is_numberr   r   r   s       @r'   
array_meanr     st     !U[[!GGu33i6NNN	U]]+EQWW%E"5!,	 # "r&   varc                 B    t        | t        j                        rd }|S y )Nc                     | j                         }d}t        j                  |       D ]C  }|j                         |z
  }|t        j                  |t        j
                  |      z        z  }E || j                  z  S Nr   )r   rb   rc   rd   realconjr   )r.   mssdrg   vals        r'   array_var_implz!array_var.<locals>.array_var_impl  se    A CYYq\vvx!|rwwsRWWS\122 " <r&   rU   r   r   )r.   r   s     r'   	array_varr     s$     !U[[!		   "r&   stdc                 B    t        | t        j                        rd }|S y )Nc                 (    | j                         dz  S N      ?)r   r.   s    r'   array_std_implz!array_std.<locals>.array_std_impl  s    557c>!r&   r   )r.   r   s     r'   	array_stdr     s$     !U[[!	" 	 "r&   c                     | |k  S r-   r%   r.   min_vals     r'   min_comparatorr         w;r&   c                     | |kD  S r-   r%   r   s     r'   max_comparatorr     r   r&   c                      yNFr%   r   s    r'   return_falser     s    r&   minc                    t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rt        j                  t        nt        | j                  t        j                        rt        d }t        |      nGt        | j                  t        j                        rt        j                  t        nt        t        fd}|S )Nc                     | j                   |j                   k  ry| j                   |j                   k(  r| j                  |j                  k  ryyNTFr   imagr   s     r'   	comp_funcznpy_min.<locals>.comp_func  ;    vv$7<<'66GLL(r&   c                    | j                   dk(  rt        d      t        j                  |       }t	        |      j                  d      } |      r|S |D ]*  }|j                         } |      r|c S  ||      s)|}, |S )Nr   zDzero-size array to reduction operation minimum which has no identityr   r~   rb   rc   nextr   rd   )r.   it	min_valuer   rg   
comparatorpre_return_funcs        r'   impl_minznpy_min.<locals>.impl_min      66Q; = > > YYq\HMM!$	9%D		Aq!!Y'	  r&   )rU   r   r   r   
NPDatetimeNPTimedeltarb   isnatr   Complexr   r   Floatisnan)r.   r   r	  r  r  s      @@r'   npy_minr         a%!''E,,e.?.?@A((#
	AGGU]]	+&	 &i0
	AGGU[[	)((#
&#
$ Or&   maxc                    t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rt        j                  t        nt        | j                  t        j                        rt        d }t        |      nGt        | j                  t        j                        rt        j                  t        nt        t        fd}|S )Nc                     | j                   |j                   kD  ry| j                   |j                   k(  r| j                  |j                  kD  ryy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	        |      j                  d      } |      r|S |D ]*  }|j                         } |      r|c S  ||      s)|}, |S )Nr   zDzero-size array to reduction operation maximum which has no identityr  )r.   r  	max_valuer   rg   r  r  s        r'   impl_maxznpy_max.<locals>.impl_max:  r
  r&   )rU   r   r   r   r  r  rb   r  r   r  r   r   r  r  )r.   r   r  r  r  s      @@r'   npy_maxr    r  r&   c                 J   | j                   dk(  rt        d      t        j                  |       }t	        |      j                  d      }d}t        j                  |      r|S d}|D ]9  }|j                         }t        j                  |      r|c S ||k  r|}|}|dz  }; |S Nr   *attempt to get argmin of an empty sequencer*   r   r~   rb   rc   r  r   r  rd   )arryr  r  min_idxr   r   rg   s          r'   array_argmin_impl_datetimer!  O      yyA~EFF	4BRa IG	xx	
CIIK88A;Jy=IGq  Nr&   c                    | j                   dk(  rt        d      | j                  D ]  }|}d} n t        j                        rS d}| j                  D ])  }t        j                  |      r|c S ||k  r|}|}|dz  }+ S r  r   r~   r   rb   r  r  rg   r  r   r   s        r'   array_argmin_impl_floatr&  e      yyA~EFFYY	  
xx	
CYY88A;Jy=IGq  Nr&   c                     | j                   dk(  rt        d      | j                  D ]  }|}d} n t        d      d}| j                  D ]  }||k  r|}|}|dz  } |S )Nr   r  unreachabler*   )r   r~   r   RuntimeErrorr%  s        r'   array_argmin_impl_genericr+  {  su    yyA~EFFYY	 
 =))
CYYy=IGq	 
 Nr&   argminc                     t        | j                  t        j                  t        j                  f      rt
        n1t        | j                  t        j                        rt        nt        t        |      rdfd	}|S t        | |      }|S )Nc                      |       S r-   r%   r.   rZ   flatten_impls     r'   array_argmin_implz'array_argmin.<locals>.array_argmin_impl      ?"r&   r-   )rU   r   r   r  r  r!  r  r&  r+  r   %build_argmax_or_argmin_with_axis_impl)r.   rZ   r1  r0  s      @r'   array_argminr4    w     !''E,,e.?.?@A1	AGGU[[	).04	#  Bt\
 r&   c                 J   | j                   dk(  rt        d      t        j                  |       }t	        |      j                  d      }d}t        j                  |      r|S d}|D ]9  }|j                         }t        j                  |      r|c S ||kD  r|}|}|dz  }; |S Nr   z*attempt to get argmax of an empty sequencer*   r  )r  r  r  max_idxr   r   rg   s          r'   array_argmax_impl_datetimer9    r"  r&   c                    | j                   dk(  rt        d      | j                  D ]  }|}d} n t        j                        rS d}| j                  D ])  }t        j                  |      r|c S ||kD  r|}|}|dz  }+ S r7  r$  r  rg   r  r8  r   s        r'   array_argmax_impl_floatr<    r'  r&   c                     | j                   dk(  rt        d      | j                  D ]  }|}d} n d}| j                  D ]  }|kD  r|}|}|dz  } S r7  )r   r~   r   r;  s        r'   array_argmax_impl_genericr>    sj    yyA~EFFYY	 
 CYYy=IGq	 
 Nr&   c                     t        |d       t        j                  t        t	        | j
                              dfd	}|S )z|
    Given a function that implements the logic for handling a flattened
    array, return the implementation function.
    rZ   c                    |dk  r| j                   |z   }|dk  s|| j                   k\  rt        d      | j                   dk(  r 	|       S }t        || j                   dz
        D ]  }t        |||dz         } t        || j                   dz
  |      }| j	                  |      }|j
                  d   }|j                         }|j                  | j                  k(  sJ |j                  |z  dk(  sJ t        j                  |j                  |z  
      }t        |j                        D ]  } 	|||z  |dz   |z         ||<    |j                  |j
                  d d       S )Nr   zaxis is out of boundsr*   )r}   r~   r3   r!   	transposer   ravelr   rb   r   reshape)r.   rZ   tmpr/   transpose_indextransposed_arrr   raveledr   r0  r   tuple_buffers            r'   implz3build_argmax_or_argmin_with_axis_impl.<locals>.impl  s\   !866D=D!8tqvv~455 66Q;?" tQVVaZ(AQA.C )'QVVaZ>_5   $ &&(||qvv%%%""Q&!+++hh~**a/7sxxA!'!a%Q!"<=CF ! {{>//455r&   r-   )r   r   r5   tupler3   r}   )r.   rZ   r0  rJ  r   rI  s     ` @@r'   r3  r3    s6    
 T6"JJEqvv'L6> Kr&   argmaxc                     t        | j                  t        j                  t        j                  f      rt
        n1t        | j                  t        j                        rt        nt        t        |      rdfd	}|S t        | |      }|S )Nc                      |       S r-   r%   r/  s     r'   array_argmax_implz'array_argmax.<locals>.array_argmax_impl  r2  r&   r-   )rU   r   r   r  r  r9  r  r<  r>  r   r3  )r.   rZ   rO  r0  s      @r'   array_argmaxrP    r5  r&   allc                     d }|S )Nc                 \    t        j                  |       D ]  }|j                         r y yr#   ra   r.   rg   s     r'   flat_allznp_all.<locals>.flat_all$  s%    1A668  r&   r%   )r.   rU  s     r'   np_allrV  !  s     Or&   Fc                 H   t        j                  |       }t        j                  |      }|s|s|r|sy|r|r|syyt        j                  |       st        j                  |      r| |k(  S t        j                  | |z
        ||t        j                  |dz        z  z   kD  ryy)NF      ?Trb   r  isinfabs)a_vb_vrtolatol	equal_nan	a_v_isnan	b_v_isnans          r'   _allclose_scalarsrc  -  s    II Iy Y  88C=BHHSM#:66#)tdRVVC#I->&>>>r&   allclosec                 (   t        |       st        d      t        |      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j                  f      st        d      t        | t        j                        }t        |t        j                        }|r
|r	 	 d
d}|S |r
|s	 	 d
d}|S |s
|r	 	 d
d}	|	S |s|s	 	 d
d	}
|
S y y )N)The first argument "a" must be array-like*The second argument "b" must be array-like2The third argument "rtol" must be a floating point3The fourth argument "atol" must be a floating point0The fifth argument "equal_nan" must be a booleanc                 "    t        | ||||      S )Nr^  r_  r`  )rc  r.   br^  r_  r`  s        r'   np_allclose_impl_scalar_scalarz3np_allclose.<locals>.np_allclose_impl_scalar_scalara  s    $Q4/8: :r&   c                     t        j                  |      }t        j                  |      D ]"  }t        | |j	                         |||      r" y yNrl  FTrb   asarrayrc   rc  rd   )r.   rn  r^  r_  r`  bvs         r'   np_allclose_impl_scalar_arrayz2np_allclose.<locals>.np_allclose_impl_scalar_arrayg  sB    

1Aiil(BGGIDt3<>  # r&   c                     t        j                  |       } t        j                  |       D ]"  }t        |j	                         ||||      r" y yrq  rr  )r.   rn  r^  r_  r`  avs         r'   np_allclose_impl_array_scalarz2np_allclose.<locals>.np_allclose_impl_array_scalarq  sB    

1Aiil(ADt3<>  # r&   c                 $   t        j                  |       } t        j                  |      }t        j                  | |      \  }}t        j                  ||f      D ]3  \  }}t	        |j                         |j                         |||      r3 y yrq  )rb   rs  broadcast_arraysrc   rc  rd   )	r.   rn  r^  r_  r`  a_ab_brw  rt  s	            r'   np_allclose_impl_array_arrayz1np_allclose.<locals>.np_allclose_impl_array_array{  su    

1A

1A**1a0HC))S#J/B(BGGID.2iI  0
 r&   gh㈵>g:0yE>F)	r
   r   rU   floatr   r  boolBooleanNumber)r.   rn  r^  r_  r`  is_a_scalaris_b_scalarro  ru  rx  r}  s              r'   np_allcloser  G  s(    AEFFAFGGdUEKK01 + , 	, dUEKK01 + , 	, i$!67 $ % 	% Q-KQ-K{BG5:	: .-	[AF49	 -,[AF49	 -,@E38	 ,+ "-[r&   anyc                     d }|S )Nc                 \    t        j                  |       D ]  }|j                         s y yr   ra   rT  s     r'   flat_anyznp_any.<locals>.flat_any  s%    1Avvx  r&   r%   )r.   r  s     r'   np_anyr    s     Or&   c                     |t        |t        j                        rdd}|S |t        |t        j                        rdd}|S dd}|S )Nc                 V    t        j                  |       }t        j                  |      S r-   )rb   rs  r   )r.   rZ   weightsre   s       r'   np_average_implz#np_average.<locals>.np_average_impl  s    **Q-C773<r&   c                 |   t        j                  |       }t        j                  |      }|j                  |j                  k7  r'|t        d      |j                  dk7  rt        d      t        j
                  |      }|dk(  rt        d      t        j
                  t        j                  ||            |z  }|S )NzCNumba does not support average when shapes of a and weights differ.r*   z81D weights expected when shapes of a and weights differ.        z)Weights sum to zero, can't be normalized.)rb   rs  r   	TypeErrorr}   sumZeroDivisionErrormultiply)r.   rZ   r  re   sclavgs         r'   r  z#np_average.<locals>.np_average_impl  s    jjm**W-99-|'45 5 ||q('45 5 ffWo#:+CE E ffR[[g67#=
r&   c                     t        d      )Nz)Numba does not support average with axis.)r  )r.   rZ   r  s      r'   r  z#np_average.<locals>.np_average_impl  s     KLLr&   NN)rU   r   NoneType)r.   rZ   r  r  s       r'   
np_averager    sR     *Wenn=	 < 5 <:dENN;2 M r&   c                     t        | t        j                  t        j                  f      rt        j
                  S t        d        }|S )z$
    A generic isnan() function
    c                      yr   r%   xs    r'   _trivial_isnanz!get_isnan.<locals>._trivial_isnan  s    r&   )rU   r   r  r  rb   r  r   )r   r  s     r'   	get_isnanr    s<     %%++u}}56xx		 
	r&   c                      t        |       rd S y )Nc                 F    t        j                  |       j                  dk7  S r   rb   rs  r   r  s    r'   <lambda>znp_iscomplex.<locals>.<lambda>      A++q0r&   r
   r  s    r'   np_iscomplexr        00r&   c                      t        |       rd S y )Nc                 F    t        j                  |       j                  dk(  S r   r  r  s    r'   r  znp_isreal.<locals>.<lambda>  r  r&   r  r  s    r'   	np_isrealr    r  r&   c                    t        |       }t        | t        j                        rt        | j                        }t        j                  |t
        j                        t        | t        j                        rfd}|S fd}|S )Nc                     | yS r   r%   r  iscmplxs    r'   rJ  ziscomplexobj.<locals>.impl  s    yNr&   c                     S r-   r%   r  s    r'   rJ  ziscomplexobj.<locals>.impl  s    Nr&   )determine_dtyperU   r   Optionalr   rb   
issubdtypecomplexfloating)r  dtrJ  r  s      @r'   iscomplexobjr    se     
	B!U^^$QVV$mmB 2 23G!U^^$	 K	Kr&   c                     d }|S )Nc                 .    t        j                  |        S r-   )rb   r  r  s    r'   rJ  zisrealobj.<locals>.impl  s    ??1%%%r&   r%   r  rJ  s     r'   	isrealobjr    s    
&Kr&   c                 (    t        |       fd}|S )Nc                     S r-   r%   )elementrt   s    r'   rJ  znp_isscalar.<locals>.impl  s    
r&   )r   )r  rJ  rt   s     @r'   np_isscalarr    s    

!CKr&   c                 :    t        |      rdfd	}|S dfd	}|S )Nc                     t        j                  t        j                  |        t        j                  |                   S r-   rb   logical_andrZ  signbitr  r   fns     r'   rJ  zis_np_inf_impl.<locals>.impl  s)    >>"((1+r"**Q-/@AAr&   c                     t        j                  t        j                  |        t        j                  |             |      S r-   r  r  s     r'   rJ  zis_np_inf_impl.<locals>.impl  s+    >>"((1+r"**Q-/@#FFr&   r-   r   )r  r   r  rJ  s     ` r'   is_np_inf_implr     s'     3	B K	G Kr&   c                 4    t        d       }t        | ||      S )Nc                     | S r-   r%   r  s    r'   r  zisneginf.<locals>.<lambda>  s    Ar&   r   r  r  s      r'   isneginfr    s    	+	&B!S"%%r&   c                 4    t        d       }t        | ||      S )Nc                     |  S r-   r%   r  s    r'   r  zisposinf.<locals>.<lambda>  s    QBr&   r  r  s      r'   isposinfr    s    	,	'B!S"%%r&   c                     | |k  S r-   r%   r.   rn  s     r'   	less_thanr        q5Lr&   c                     | |kD  S r-   r%   r  s     r'   greater_thanr    r  r&   c                 8    | j                   dk(  rt        d      y )Nr   z3zero-size array to reduction operation not possible)r   r~   r   s    r'   check_arrayr  #  s    vv{NOO r&   c                 $     |r fd}|S  fd}|S )Nc                 
   t        j                  |       }t        |       t        j                  |      }t	        |      j                  d      }|D ]  }|j                         }t        j                  |j                        r"t        j                  |j                        s|}T |j                  |j                        r|}t|j                  |j                  k(  s |j                  |j                        s|} |S r   )
rb   rs  r  rc   r  r   rd   r  r   r   r.   re   r  
return_valr   rg   comparison_ops         r'   rJ  z!nan_min_max_factory.<locals>.impl+  s    **Q-C3Bbq)JIIK88JOO,RXXaff5E!"J$QVVZ__=%&
:??2(A)*J  r&   c                    t        j                  |       }t        |       t        j                  |      }t	        |      j                  d      }|D ]4  }|j                         }t        j                  |      r) ||      r3|}6 |S r   )rb   rs  r  rc   r  r   rd   r  r  s         r'   rJ  z!nan_min_max_factory.<locals>.impl<  sn    **Q-C3Bbq)JIIKxx{(Q7%&
	 
 r&   r%   )r  is_complex_dtyperJ  s   `  r'   nan_min_max_factoryr  )  s    	: K
	 Kr&   )r  Tc                 Z   t        j                  |       rt        j                  |      r|S t        j                  |       r t        j                  |      r| dkD  |dkD  k(  S t        j                  |       st        j                  |      ryt        | |z
        ||t        |      z  z   k  S )Nr   FrY  )r  yr^  r_  r`  s        r'   _isclose_itemr  Y  s}    	xx{rxx{	!!A1q5!!	!1q5zTD3q6M111r&   c                    t        |       st        d      t        |      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j
                  f      st        d      t        |t        t        j                  f      st        d      t        | t        j                        r t        |t        j                        rd
d}|S t        | t        j                        r t        |t        j                        rd
d}|S t        | t        j                        r t        |t        j                        rd
d}|S d
d	}|S )Nrf  rg  rh  ri  rj  c                    | j                  d      }|}t        j                  t        |      t        j                        }t        t        |            D ]  }t        ||   ||||      ||<    |j                  | j                        S NrA  rD  rb   zerosrF   r   r3   r  r   	r.   rn  r^  r_  r`  r  r  r   r/   s	            r'   isclose_implzisclose.<locals>.isclose_implz  sk    		"AA((3q6288,C3s8_&qtQdIFA %;;qww''r&   c                    | }|j                  d      }t        j                  t        |      t        j                        }t        t        |            D ]  }t        |||   |||      ||<    |j                  |j                        S r  r  r  s	            r'   r  zisclose.<locals>.isclose_impl  sk    A		"A((3q6288,C3s8_&q!A$dIFA %;;qww''r&   c                    t        j                  | j                  |j                        }t        j                  | |      }t        j                  ||      }t        j                  t        |      t         j                        }t        t        j                  ||f            D ]6  \  }	\  }
}t        |
j                         |j                         |||      ||	<   8 t        j                  ||      S Nr   )rb   broadcast_shapesr   broadcast_tor  rF   r   r   rc   r  rd   )r.   rn  r^  r_  r`  r   a_b_r   r/   rw  rt  s               r'   r  zisclose.<locals>.isclose_impl  s    ''9EE*BE*B((3r7"((3C(B8)<=8B&rwwy"'')T4'02A  > ??3..r&   c                      t        | ||||      S r-   )r  rm  s        r'   r  zisclose.<locals>.isclose_impl  s     AtT9==r&   r~  )
r
   r   rU   r  r   r  r  r  r   r  )r.   rn  r^  r_  r`  r  s         r'   iscloser  e  s)   AEFFAFGGdUEKK01 + , 	, dUEKK01 + , 	, i$!67 $ % 	% !U[[!jELL&A	(B 3 
Au||	$Au{{)C	(0 ! 
Au{{	#
1ekk(B		/ 	> r&   c                 x    t        |       }t        j                  |t        j                        rt        S t
        S r-   )r  rb   r  r  complex_nanminreal_nanminr.   r  s     r'   	np_nanminr    ,    		B	}}R++,r&   c                 x    t        |       }t        j                  |t        j                        rt        S t
        S r-   )r  rb   r  r  complex_nanmaxreal_nanmaxr  s     r'   	np_nanmaxr    r  r&   c                 r    t        | t        j                        sy t        | j                        fd}|S )Nc                     d}d}t        j                  |       D ]3  }|j                         } |      r||j                         z  }|dz  }5 t        j                  ||      S Nr  r   r*   )rb   rc   rd   divide)r.   rf   countr   rg   r  s        r'   nanmean_implz np_nanmean.<locals>.nanmean_impl  s\    IIaLD		A8QVVX
	 ! yyE""r&   rU   r   r   r  r   )r.   r  r  s     @r'   
np_nanmeanr    s/    a%aggE	# r&   c                 r    t        | t        j                        sy t        | j                        fd}|S )Nc                 T   t        j                  |       }d}d}t        j                  |       D ]a  }|j                         } |      r|j                         |z
  }|t        j                  |t        j
                  |      z        z  }|dz  }c t        j                  ||      S r   )rb   nanmeanrc   rd   r   r   r  )r.   r   r   r  r   rg   r   r  s          r'   nanvar_implznp_nanvar.<locals>.nanvar_impl  s    JJqM IIaLD		A8vvx!|rwwsRWWS\122
 ! yye$$r&   r  )r.   r	  r  s     @r'   	np_nanvarr
    s/    a%aggE%  r&   c                 B    t        | t        j                        sy d }|S )Nc                 2    t        j                  |       dz  S r   )rb   nanvarr   s    r'   nanstd_implznp_nanstd.<locals>.nanstd_impl  s    yy|s""r&   r   )r.   r  s     r'   	np_nanstdr    s     a%# r&   c                    t        | t        j                        sy t        | j                  t        j                        rt        j
                  }n| j                  } |d      t        | j                        fd}|S )Nr   c                 |    }t        j                  |       D ]   }|j                         } |      r||z  }" |S r-   ra   )r.   rf   r   rg   r  rh   s       r'   nansum_implznp_nansum.<locals>.nansum_impl  s<    IIaLD		A8Q ! r&   rU   r   r   r   Integerr5   r  )r.   r   r  r  rh   s      @@r'   	np_nansumr    s\    a%!''5==)

8DaggE r&   c                    t        | t        j                        sy t        | j                  t        j                        rt        j
                  }n| j                  } |d      t        | j                        fd}|S )Nr*   c                 |    }t        j                  |       D ]   }|j                         } |      r||z  }" |S r-   ra   )r.   rf   r   rg   r  ones       r'   nanprod_implz np_nanprod.<locals>.nanprod_impl	  s<    IIaLD		A8Q ! r&   r  )r.   r   r  r  r  s      @@r'   
np_nanprodr    s\    a%!''5==)


(CaggE r&   c                     t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rd S | j                  t               d      fd}|S )Nc                 ,    t        j                  |       S r-   )rb   r   r   s    r'   r  znp_nancumprod.<locals>.<lambda>  s    Ar&   r*   c                     t        j                  | j                        }}t        | j                        D ]  \  }} |       r||z  }|||<    |S r-   r   )r.   r   rf   r   rg   is_nanr  r   s        r'   nancumprod_implz&np_nancumprod.<locals>.nancumprod_impl!  sU    ((1665)CA#AFF+Q1I:FAC , Jr&   rU   r   r   r   r  r  r  )r.   r  r  r  r   s     @@@r'   np_nancumprodr!    s^    a%!''EMM5==9:&&5!Ah	 r&   c                     t        | t        j                        sy t        | j                  t        j                  t        j
                  f      rd S | j                  t               d      fd}|S )Nc                 ,    t        j                  |       S r-   )rb   r   r   s    r'   r  znp_nancumsum.<locals>.<lambda>4  s    1r&   r   c                     t        j                  | j                        }}t        | j                        D ]  \  }} |       r||z  }|||<    |S r-   r   )r.   r   rf   r   rg   r  r   rh   s        r'   nancumsum_implz$np_nancumsum.<locals>.nancumsum_impl:  sU    ((1665)CA#AFF+Q1I:FAC , Jr&   r   )r.   r%  r  r   rh   s     @@@r'   np_nancumsumr&  -  s^    a%!''EMM5==9:%%5!Qx	 r&   c                 N    t        |       }t        |      dk(  rt        d      |S )Nr   z&zero-size array reduction not possible)_asarrayrF   r~   r.   re   s     r'   prepare_ptp_inputr*  F  s'    
1+C
3x1}ABB
r&   c                 T     t        |t        j                        r fd}|S  fd}|S )Nc                      |j                   | j                         r|S |j                   | j                   k(  r |j                  | j                        r|S | S r-   r   current_valr   r   s     r'   rJ  z+_compute_current_val_impl_gen.<locals>.implV  sM    #((K,,-
((k...388[%5%56
r&   c                      ||       r|S | S r-   r%   r-  s     r'   rJ  z+_compute_current_val_impl_gen.<locals>.impl^  s    S+.3?K?r&   )rU   r   r  )r   r.  r   rJ  s   `   r'   _compute_current_val_impl_genr0  O  s(    +u}}-	 K	@Kr&   c                      y r-   r%   r.  r   s     r'   _compute_a_maxr3  c      r&   c                      y r-   r%   r2  s     r'   _compute_a_minr6  g  r4  r&   c                 8    t        t        j                  | |      S r-   )r0  operatorgtr2  s     r'   _compute_a_max_implr:  k      (k3GGr&   c                 8    t        t        j                  | |      S r-   )r0  r8  ltr2  s     r'   _compute_a_min_implr>  p  r;  r&   c                      y r-   r%   r   s    r'   _early_returnrA  u  r4  r&   c                     dt        | t        j                        rfd}|S t        | t        j                        rfd}|S fd}|S )Nr   c                     t        j                  | j                        rZt        j                  | j                        r&dt         j                  t         j                  dz  z   fS dt         j                  dz   fS dfS )NT              ?y                F)rb   r  r   r   nanr   UNUSEDs    r'   rJ  z _early_return_impl.<locals>.impl}  s\    xx!88CHH%"&&2+!555",,f}$r&   c                 Z    t        j                  |       rdt         j                  fS dfS r   )rb   r  rE  rF  s    r'   rJ  z _early_return_impl.<locals>.impl  s&    xx}RVV|#f}$r&   c                     dfS r   r%   rF  s    r'   rJ  z _early_return_impl.<locals>.impl  s    &= r&   )rU   r   r  r  )r   rJ  rG  s     @r'   _early_return_implrJ  y  sH    F#u}}%	%" K 
C	%	% K	!Kr&   c                     t        | d      r/t        | j                  t        j                        rt        d      d }|S )Nr   +Boolean dtype is unsupported (as per NumPy)c                     t        |       }|j                  }|d   }|d   }t        |j                        D ]3  }||   }t	        |      \  }}|r|c S t        ||      }t        ||      }5 ||z
  S r   )r*  r   r3   r   rA  r3  r6  )	r.   re   a_flata_mina_maxr/   r   take_branchretvals	            r'   np_ptp_implznp_ptp.<locals>.np_ptp_impl  s}    "q	q	sxxA)C"/"4K"5#.E"5#.E ! u}r&   )hasattrrU   r   r   r  r   )r.   rS  s     r'   np_ptprU    s9     q'aggu}}-KLL" r&   )r|   r   ptpc                 d    t        j                  |       ryt        j                  |      ry| |k  S r#   )rb   r  r  s     r'   nan_aware_less_thanrX    s'    	xx{88A;q5Lr&   c                      d fd	}|S )Nc                    ||z   dz	  } 	| |   | |         r$| |   | |   c| |<   | |<   r||   ||   c||<   ||<    	| |   | |         r$| |   | |   c| |<   | |<   r||   ||   c||<   ||<    	| |   | |         r$| |   | |   c| |<   | |<   r||   ||   c||<   ||<   | |   }| |   | |   c| |<   | |<   r||   ||   c||<   ||<   |}|dz
  }	 ||k  r# 	| |   |      r|dz  }||k  r 	| |   |      r||k\  r# 	|| |         r|dz  }||k\  r 	|| |         r||k\  rn/| |   | |   c| |<   | |<   r||   ||   c||<   ||<   |dz  }|dz  }| |   | |   c| |<   | |<   r||   ||   c||<   ||<   |S Nr*   r%   )
AlowhighImidpivotr/   jargpartition	pivotimpls
           r'   
_partitionz&_partition_factory.<locals>._partition  sG   Tza QsVQsV$sVQsVNAcFAcF!"33##QtWaf%fagOAdGQsV"#C&!D'$3QsVQsV$sVQsVNAcFAcF!"33###C&!D'$3fagOAdGQsV1Hd(y1u5Q d(y1u5s(y!5Q s(y!5Av1qtJAaD!A$qT1Q4
!adFAFA  $1!agdGQqTMAaD!D'r&   r-   r%   )rd  rc  re  s   `` r'   _partition_factoryrf    s    ,Z r&   )rc  c                      d fd	}|S )Nc                      | |||      }||k7  r,||k  r|dz   } | |||      }n|dz
  } | |||      }||k7  r,| |   S )zJ
        Select the k'th smallest element in array[low:high + 1].
        r*   r%   )r  kr]  r^  r   r/   partitionimpls         r'   _selectz _select_factory.<locals>._select  si     $T3/1f1u!e!$T371u!$T37 1f Awr&   r-   r%   )rj  rk  s   ` r'   _select_factoryrl    s     Nr&   c                     	 ||kD  sJ t        | ||      }||k  r|dz   }n:||dz   kD  r|dz
  }n,||k(  rt        | |dz   |dz   |       nt        | |||dz
         nZ| |   | |dz      fS )z
    Select the k'th and k+1'th smallest elements in array[low:high + 1].

    This is significantly faster than doing two independent selections
    for k and k+1.
    r*   )re  rk  )r  ri  r]  r^  r/   s        r'   _select_tworn    s     czztS$'q5a%CQYq5D!VD!a%Q-D!S!a%(  7DQKr&   c                 ~    d}|dz
  }|dz	  }|dz  dk(  rt        | |dz
  ||      \  }}||z   dz  S t        | |||      S )zt
    The main logic of the median() call.  *temp_arry* must be disposable,
    as this function will mutate it.
    r   r*   r|   )rn  rk  )	temp_arrynr]  r^  halfr.   rn  s          r'   _median_innerrs  '  s]     Cq5D6D1uz9dQhT:1A{y$T22r&   c                 B    t        | t        j                        sy d }|S )Nc                 X    | j                         }|j                  d   }t        ||      S r   )flattenr   rs  )r.   rp  rq  s      r'   median_implznp_median.<locals>.median_impl<  s*     IIK	OOAY**r&   r   )r.   rw  s     r'   	np_medianrx  7  s     a%+ r&   c                    t        |       }|dk(  r4t        j                  t        |      | d   t        j                        }|S t        j                  t        |      t        j                        }t        t        |            D ]  }||   }|dk(  rht        j                  |       }t        j                  t        j                  |              rt        j                  |       rwt        j                  }ne|dk(  rt        j                  |       }t        j                  t        j                  |              r!t        j                  | t        j                  k(        }t        j                  | t        j                   k(        }|||z   z
  }	|	dk(  rt        j                  }|dk(  r|dk(  rt        j                  }|dkD  rt        j                  }|	dk(  r|dkD  r~|dk7  ryt        j                  }nhd|dz
  t        j                  |d      z  z   }
t        j                  |
      }|
|z
  }t!        | t#        |dz
        d|dz
        \  }}|d|z
  z  ||z  z   }|||<    |S )Nr*   r   r  d   r|         Y@)ri  r]  r^  )rF   rb   r   r   r   r3   r  rQ  isfiniterE  r   r  inftrue_dividemathfloorrn  int)r.   qrq  r   r/   
percentiler   num_pos_infnum_neg_inf
num_finiterankfr   loweruppers                  r'   _collect_percentiles_innerr  F  s    	AAAvggc!fad"**5T JQ hhs1vRZZ0s1vA1J S ffQiFF2;;q>**C(( ff qffQiFF2;;q>**"$&&bff"5K"$&&rvvg"6K!"kK&?!@J!Q ff"a'AF ff"Q ff!Q&?*a/&(ff AER^^J%FFFJJt$1H*1AE
QPuq1uo	1CFK N Jr&   c                     |r| |    } t        |       dk(  ryt        j                  |      ryt        |       dk(  r| d   }t        j                  |      S y)Nr   Fr*   T)rF   rb   r  r|  )r.   nan_maskskip_nanr   s       r'   _can_collect_percentilesr  {  sS    xiLq6Q;66(
1v{d{{3r&   c                    d}| j                   dk(  rX| j                  dk  rIt        | j                        D ]/  }| |   dk  s!| |   |kD  st        j                  | |         s,d} |S  |S t        j
                  t        j                  |             s0t        j
                  | dk        st        j
                  | |kD        rd}|S )NTr*   
   r  F)r}   r   r3   rb   r  r  )r  q_upper_boundvalidr/   s       r'   check_validr    s    E 	vv{qvv{qvvAtczQqTM1RXXad^
 L  L 66"((1+"&&S/RVVA<M5NELr&   c                 4    t        | d      st        d      y )Nr{  r  z)Percentiles must be in the range [0, 100]r  r~   r  s    r'   percentile_is_validr    s    q.DEE /r&   c                 4    t        | d      st        d      y )NrX  r  z%Quantiles must be in the range [0, 1]r  r  s    r'   quantile_is_validr    s    q,@AA -r&   c                    t        j                  |t         j                        j                         } ||       ||z  }t        j                  | t         j                        j                         }t        j                  |      }t        |||      r||    }t        ||      }|S t        j                  t        |      t         j                        }|S r  )
rb   rs  r   rv  r  r  r  r   rF   rE  )r.   r  check_qfactorr  rp  r  r   s           r'   _collect_percentilesr    s    


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

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

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

    Values less than 0 are transformed to equivalent positive
    index values.
    r*   zkth must be scalar or 1-DrA  zkth out of boundsr   )r(  astyperb   r   r}   r~   r  r[  r   r  ndenumerateunique)r.   r  r  r   indexr   s         r'   
valid_kthsr  5  s     $$RXX.I~~455 
vvbffY1772;./,--
--	
"CnnY/
s7qwwr{*CJCJ	 0 99S>r&   c                    t        | t        j                  t        j                  t        j                  f      st        d      t        | t        j                        r| j                  dk(  rt        d      t        |d|      }t        |t        j                  t        j                  f      st        d      d }|S )N(The first argument must be an array-liker   3The first argument must be at least 1-D (found 0-D)r   Partition index must be integerc                     t        |       }|j                  dk(  r|j                         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  s;    ::?::<"5#.I*5)<<r&   
rU   r   r   SequencerX   r  r}   r   r  r  )r.   r  kthdtr  s       r'   np_partitionr  X  s     a%++u~~u{{CDBCC!U[[!affkMNNC#&EeemmU]];<9::= r&   c                    t        | t        j                  t        j                  t        j                  f      st        d      t        | t        j                        r| j                  dk(  rt        d      t        |d|      }t        |t        j                  t        j                  f      st        d      d }|S )Nr  r   r  r   r  c                     t        |       }|j                  dk(  r|j                         j                  d      S t	        ||      }t        ||      S )Nr   r5   )r(  r   r  r  r  r  r  s       r'   np_argpartition_implz-np_argpartition.<locals>.np_argpartition_impl  sF    ::?::<&&v.."5#.I-eY??r&   r  )r.   r  r  r  s       r'   np_argpartitionr  q  s     a%++u~~u{{CDBCC!U[[!affkMNNC#&EeemmU]];<9::@  r&   c                    t        d|       t        d|      f}t        j                  |t        j                        }t	        |d         D ]3  }t        t        d||z   dz         |d         }d||d |f<   d|||d f<   5 |S )Nr   r  r*   )r  rb   r   r   r3   r   )NMri  r   r   r/   m_maxs          r'   	_tri_implr    s    1Is1ay E
((5


+C58_C1q519%uQx0AvvIAuvI 
 Jr&   c                 &    t        |d       dd}|S )Nri  c                 $    || }t        | ||      S r-   )r  )r  r  ri  s      r'   tri_implznp_tri.<locals>.tri_impl  s    9AAq!!r&   r   )r   )r  r  ri  r  s       r'   np_trir    s     Q"
 Or&   c                     | j                   dk(  sJ t        |       }t        j                  ||f| j                        }t        |      D ]  }| ||<   	 |S )zq
    Takes a 1d array and tiles it to form a square matrix
    - i.e. a facsimile of np.tile(m, (len(m), 1))
    r*   r  )r}   rF   rb   r   r   r3   )r   len_mr   r/   s       r'   _make_squarer    sS     66Q;;FE
((E5>
1C5\A  Jr&   c                    t        j                  | j                  d   | j                  d   |      j                  t         j                        }t        j
                  || t        j                  | | j                              S NrA  r  ri  r  rb   trir   r  uintwhere
zeros_liker   r   ri  masks      r'   np_tril_impl_2dr    sU    66!''"+299"''BD88D!R]]1AGG<==r&   c                 z    t        |d       dd}dd}| j                  dk(  r|S | j                  dk(  rt        S |S )Nri  c                 0    t        |       }t        ||      S r-   )r  r  r   ri  m_2ds      r'   np_tril_impl_1dz my_tril.<locals>.np_tril_impl_1d      AtQ''r&   c                    t        j                  | j                  d   | j                  d   |      j                  t         j                        }t        j
                  | j                  d d       }t        j                  |       }t        j                  || j                        }|D ]  }t        j                  || |   |      ||<   ! |S r  
rb   r  r   r  r  r  r  r  r   r  r   ri  r  r   zzero_optsels          r'   np_tril_impl_multiz#my_tril.<locals>.np_tril_impl_multi  s    vvaggbkQWWR[A6==bggFjj"&MM!==QWW5CXXdAcFH5AcF r&   r*   r|   r   )r   r}   r  )r   ri  r  r  s       r'   my_trilr    sB     Q( 	vv{	
1!!r&   c                 l    t        | d       t        |d       t        |      st        |d       dd}|S )Nrq  ri  r   c                 X    t        j                  t        j                  | ||            S )Nri  rb   nonzeror  rq  ri  r   s      r'   np_tril_indices_implz-np_tril_indices.<locals>.np_tril_indices_impl  s    zz"&&A+,,r&   r   Nr   r   )rq  ri  r   r
  s       r'   np_tril_indicesr    s4     QQq>C -r&   c                 Z    t        |d       | j                  dk7  rt        d      dd}|S )Nri  r|   input array must be 2-dc                 f    t        j                  | j                  d   || j                  d         S Nr   r*   )ri  r   )rb   tril_indicesr   re   ri  s     r'   np_tril_indices_from_implz7np_tril_indices_from.<locals>.np_tril_indices_from_impl  %    syy|qCIIaLAAr&   r  r   r}   r   )re   ri  r  s      r'   np_tril_indices_fromr    1     Q
xx1}344B$$r&   c                    t        j                  | j                  d   | j                  d   |dz
        j                  t         j                        }t        j
                  |t        j                  | | j                        |       S Nr  rA  r*   r  r  r  r  s      r'   np_triu_impl_2dr    sY    66!''"+A6==bggFD88D"--91==r&   c                 z    t        |d       dd}dd}| j                  dk(  r|S | j                  dk(  rt        S |S )Nri  c                 0    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
        j                  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    vvaggbkQWWR[AE:AA"''Jjj"&MM!==QWW5CXXdHaf5AcF r&   r*   r|   r  )r   r}   r  )r   ri  r  r   s       r'   my_triur!    sB     Q( 	vv{	
1!!r&   c                 l    t        | d       t        |d       t        |      st        |d       dd}|S )Nrq  ri  r   c           	      d    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'    zz!bffQQU3344r&   r  r  )rq  ri  r   r$  s       r'   np_triu_indicesr%    s4     QQq>C 5r&   c                 Z    t        |d       | j                  dk7  rt        d      dd}|S )Nri  r|   r  c                 f    t        j                  | j                  d   || j                  d         S r  )rb   triu_indicesr   r  s     r'   np_triu_indices_from_implz7np_triu_indices_from.<locals>.np_triu_indices_from_impl-  r  r&   r  r  )re   ri  r)  s      r'   np_triu_indices_fromr*  $  r  r&   c                      y r-   r%   re   s    r'   _prepare_arrayr-  2  r4  r&   c                 6    | d t         j                  fv rd S d S )Nc                 ,    t        j                  d      S )Nr%   rb   arrayr,  s    r'   r  z%_prepare_array_impl.<locals>.<lambda>9  s    288B<r&   c                 4    t        |       j                         S r-   )r(  rC  r,  s    r'   r  z%_prepare_array_impl.<locals>.<lambda>;  s    8C=..0r&   r   noner,  s    r'   _prepare_array_implr5  6  s    
tUZZ  ''00r&   c                 ^   | }	 t        |t        j                  t        j                  f      rt	        |      S t        |dd       }| |       dk(  rt        j                  S t        |dd       }|t        d      t        |t        j                        r|j                  }nt	        |      S )N__len__r   r   ztype has no dtype attr)rU   r   r  r  r	   r   rb   r   r  r  r   )inobjobjlr  s       r'   _dtype_of_compoundr;  >  s    
C
cELL%--89C= CD)=QSAX::S'4(:455c5>>*))CB< r&   c                    t        | t        j                        r/t        | j                  t        j                        rt        d      t        |       }d }t        |      st        |      }d }t        |      st        |      }|#t        j                  ||      sd}t        |      |#t        j                  ||      sd}t        |      dd}|S )NrL  z3dtype of to_begin must be compatible with input aryz1dtype of to_end must be compatible with input aryc                    t        |      }t        |       }t        |      }|j                  }t        |      dkD  rt        j                  t        |      t        |      z   t        |      z   dz
  |      }t        |      }t        |      t        |      z   dz
  }	||d | t        j
                  |      |||	 |||	d  |S t        j                  t        |      t        |      z   |      }t        |      }||d | |||d  |S )Nr   r*   r  )r-  r   rF   rb   r   diff)
aryto_endto_beginstartr`  end	out_dtyper   	start_idxmid_idxs
             r'   np_ediff1d_implz#np_ediff1d.<locals>.np_ediff1d_impli  s    x(S!V$II	 s8a<((CJS1CH<q@!*,CE
I%j3s8+a/G#C
O%'WWS\C	'"CM 
	 ((CJS1)DCE
I#C
O!C	
O
r&   r  )
rU   r   r   r   r  r   r;  r   rb   can_cast)r?  r@  rA  ary_dtto_begin_dt	to_end_dtr   rG  s           r'   
np_ediff1drL  O  s     #u{{#cii/ !NOO
  $FK!(2I&v.	r{{;'GCS!!R[[F%CAS!!6 r&   c                      y r-   r%   r,  s    r'   _select_elementrN    r4  r&   c                 :    t        | dd       dk(  }|rd }|S d }|S )Nr}   r   c                 X    t        j                  d| j                        }| |d d  |d   S )Nr*   r  r   )rb   r1  r   )re   r  s     r'   rJ  z"_select_element_impl.<locals>.impl  s(    SYY/AAaDQ4Kr&   c                     | S r-   r%   r,  s    r'   rJ  z"_select_element_impl.<locals>.impl  s    Jr&   )r   )re   zerodrJ  s      r'   _select_element_implrT    s.    C&!+E	 	r&   c                      y r-   r%   )dxr  s     r'   _get_drW    r4  r&   c                 ,    t        |       rd }|S d }|S )Nc                 ,    t        j                  |      S r-   rb   rs  r  rV  s     r'   rJ  zget_d_impl.<locals>.impl  s    ::b>!r&   c                 R    t        j                  t        j                  |             S r-   )rb   r>  rs  r[  s     r'   rJ  zget_d_impl.<locals>.impl  s    772::a=))r&   r  )r  rV  rJ  s      r'   
get_d_implr]    s    1~	"
 K	*Kr&   c                     t        | t        j                  t        j                  f      rt	        d      t        | t        j
                        r| j                  dk(  rt	        d      dd}|S )Nzy cannot be a scalarr   zy cannot be 0Dc                     t        j                  |       }t        ||      }|dt        dd       f   |dt        d d      f   z   dz  }t        j                  ||z  d      }t        |      }|S )N.r*   rA         @)rb   rs  rW  rO   r  rN  )r  r  rV  yarrdy_averet	processeds           r'   rJ  znp_trapz.<locals>.impl  sm    zz!}1bMc5D>)*T#uT22F-GG3NffQY##C(	r&   NrX  )rU   r   r  r  r   r   r}   )r  r  rV  rJ  s       r'   np_trapzrg    sW     !ellEMM23011	Au{{	#!*++
 Kr&   c                 ~   |j                   \  }}|t        |       k(  sJ ||k(  sJ |rGt        |      D ]8  }|dk(  r
d|dd|f<   t        j                  | |dd|dz
  f         |dd|f<   : yt        |dz
  dd      D ];  }||dz
  k(  r
d|dd|f<   t        j                  | |dd|dz   f         |dd|f<   = y)a*  
    Generate an N-column Vandermonde matrix from a supplied 1-dimensional
    array, x. Store results in an output matrix, out, which is assumed to
    be of the required dtype.

    Values are accumulated using np.multiply to match the floating point
    precision behaviour of numpy.vander.
    r   r*   NrA  )r   rF   r3   rb   r  )r  r  
increasingr   r   rq  r/   s          r'   
_np_vanderrj    s     99DAqA;;6M6qAAvAqD	KK3q1q5z?;AqD		  q1ub"%AAEzAqD	KK3q1q5z?;AqD		 &r&   c                 X    | j                   dkD  rt        d      |dk  rt        d      y )Nr*   z.x must be a one-dimensional array or sequence.r   z#Negative dimensions are not allowed)r}   r~   )r  r  s     r'   _check_vander_paramsrl    s1    vvzIJJ1u>?? r&   c                 z   |d t         j                  fvr%t        |t         j                        st	        d      dfd	}dd}t        | t         j
                        r1t        | j                        }t        j                  |t              |S t        | t         j                  t         j                  f      r|S y )Nz,Second argument N must be None or an integerc                     |t        |       }t        | |       t        j                  t        |       t	        |      f      }t        | |||       |S r  )rF   rl  rb   r   r  rj  )r  r  ri  r   r   s       r'   np_vander_implz!np_vander.<locals>.np_vander_impl  sM    9AAQ" hhAA'u51aS)
r&   c                     |t        |       }t        j                  |       }t        ||       t        j                  t        |       t        |      f|j                        }t        ||||       |S r  )rF   rb   r1  rl  r   r  r   rj  )r  r  ri  x_arrr   s        r'   np_vander_seq_implz%np_vander.<locals>.np_vander_seq_impl  s]    9AAUA& hhAA'u{{;5!Z-
r&   r   )r   r4  rU   r  r   r   r	   r   rb   promote_typesr  rX   r  )r  r  ri  ro  rr  x_dtr   s         @r'   	np_vanderru    s    uzz""!U]]+LMM
 !U[[!   s+	AU^^4	5!! 
6r&   c                     t        |t        j                  t        j                  f      st	        d      d }t        | t        j
                  t        j                  f      rd S |S )Nzshift must be an integerc                    t        j                  |       }t        j                  |j                  |j                        }|j
                  }t        |j                        D ]&  }||z   |j                  z  }||   |j
                  |<   ( |S r  )rb   rs  r   r   r   r   r3   r   )r.   shiftre   r   arr_flatr/   r   s          r'   np_roll_implznp_roll.<locals>.np_roll_impl	  sn    jjmhhsyy		2 88sxxAu9(C$QKCHHSM ! 
r&   c                 ,    t        j                  |       S r-   rZ  )r.   rx  s     r'   r  znp_roll.<locals>.<lambda>	  s    

1r&   )rU   r   r  r  r   r  )r.   rx  rz  s      r'   np_rollr|  	  sO    eemmU]];<455
 !ellEMM23--r&      c                    d}|}| ||dz
     kD  r|S | |d   k  ry|dk  r'd}||k  r| ||   k\  r|dz  }||k  r	| ||   k\  r|dz
  S ||dz
  kD  r|dz
  }|dk  rd}| ||   k  r7| ||dz
     k  r'|dz
  }|t         kD  rg| ||t         z
     k\  rX|t         z
  }nN|dz
  S | ||dz      k  r|S | ||dz      k  r|dz   S |dz   }||t         z
  dz
  k  r| ||t         z      k  r	|t         z   }||k  r!|||z
  dz	  z   }| ||   k\  r|dz   }n|}||k  r!|dz
  S )Nr   r*   rA     r{   r|   )LIKELY_IN_CACHE_SIZE)keyre   lengthguessiminimaxr/   imids           r'   binary_search_with_guessr  (	  s    DD S!_	s1v {&jSCF]FA &jSCF]1uvz
qy SZUQY19D ++3u';;<<33 19 UQYL S^#qy  qyV&::Q>?s5+?#?@@ #77D +t)*#d)!8DD + !8Or&   c                 v	   t        j                  |       }t        j                  |      }t        j                  |      }t        |      dk(  rt        d      t        |      t        |      k7  rt        d      |j                  dk(  r%t        j
                  |j                  |d   |      S t        j                  |j                  |      }|j                  }t        |      }	|d   }
||	dz
     }|	dk(  rd|d   }|d   }t        |      D ]J  }|j                  |   }||k  r|
|j                  |<   '||kD  r||j                  |<   <||j                  |<   L |S d}|	|k  rt        j                  |	dz
  |      }nt        j                  d|      }|j                  ryt        |	dz
        D ]h  }d||dz      ||   z
  z  }||dz      j                  ||   j                  z
  |z  }||dz      j                  ||   j                  z
  |z  }|d|z  z   ||<   j t        |      D ]  }|j                  |   }t        j                  |      r|}d}|d|z  z   |j                  |<   Bt        |||	|      }|d	k(  r|
|j                  |<   e||	k(  r||j                  |<   z||	dz
  k(  r||   |j                  |<   ||   |k(  r||   |j                  |<   |j                  r||   }ncd||dz      ||   z
  z  }||dz      j                  ||   j                  z
  |z  }||dz      j                  ||   j                  z
  |z  }|d|z  z   }|j                  |||   z
  z  ||   j                  z   }t        j                  |      rq|j                  |||dz      z
  z  ||dz      j                  z   }t        j                  |      r1||   j                  ||dz      j                  k(  r||   j                  }|j                  |||   z
  z  ||   j                  z   }t        j                  |      rq|j                  |||dz      z
  z  ||dz      j                  z   }t        j                  |      r1||   j                  ||dz      j                  k(  r||   j                  }|d|z  z   |j                  |<    |S )
Nr   array of sample points is empty#fp and xp are not of the same size.r*   
fill_valuer   r  rD  r  rA  )rb   rs  rF   r~   r   r   r   r   r3   r   r   r   r  r  )r  xpfpr   dzrV  dydreslenxlenxplvalrvalxp_valfp_valr/   x_valrb  slopesinv_dxr   r   slopes                         r'   np_interp_impl_complex_innerr  m	  sh    
AB	BB	BB
2w!|:;;
2w#b'>??	ww!|wwrxxBqE??88BHHE*D77DGEa5Deai=DzAAtAGGAJEv~#		!#		!%		! V KC  D=XXuqy7FXXau-F;;519%bQi"Q%/01q5	A3v=1q5	A3v= 29,q		 & tAGGAJExx#b4i/		!(E1=ABw#		!e#		!eai!!u		!A%!!u		!;;"1IE"QU)be"34Fq1uINNRUZZ76ADq1uINNRUZZ76AD 29,E zzURU]3bejj@88D> ::AE):;bQinnLDxx~"Q%**1q5	*F!!uzzzzURU]3bejj@88D> ::AE):;bQinnLDxx~"Q%**1q5	*F!!uzz#b4i/		!a d Kr&   c                    t        j                  | t         j                        }t        j                  |t         j                        }t        j                  |t         j                        }t        |      dk(  rt	        d      t        |      t        |      k7  rt	        d      |j
                  dk(  r%t        j                  |j                  |d   |      S t        j                  |j                  |      }|j
                  }t        |      }	|d   }
||	dz
     }|	dk(  rd|d   }|d   }t        |      D ]J  }|j                  |   }||k  r|
|j                  |<   '||kD  r||j                  |<   <||j                  |<   L |S d}|	|k  r|dd  |d d z
  |dd  |d d z
  z  }nt        j                  d|      }t        |      D ]  }|j                  |   }t        j                  |      r||j                  |<   8t        |||	|      }|dk(  r|
|j                  |<   [||	k(  r||j                  |<   p||	dz
  k(  r||   |j                  |<   ||   |k(  r||   |j                  |<   |j
                  r||   }n||dz      ||   z
  ||dz      ||   z
  z  }||||   z
  z  ||   z   |j                  |<   t        j                  |j                  |         s||||dz      z
  z  ||dz      z   |j                  |<   t        j                  |j                  |         s_||   ||dz      k(  so||   |j                  |<    |S )Nr  r   r  r  r*   r  rA  )rb   rs  r   rF   r~   r   r   r   r   r3   r   r  r  )r  r  r  r   r  rV  r  r  r  r  r  r  r  r  r/   r  rb  r  r  s                      r'   np_interp_impl_innerr  	  s    
ARZZ	(B	Bbjj	)B	Bbjj	)B
2w!|:;;
2w#b'>??	ww!|wwrxxBqE??88BHHE*D77DGEa5Deai=DzAAtAGGAJEv~#		!#		!%		! n K[  D=fr#2w&2ab6BsG+;<FXXau-FtAGGAJExx$		!(E1=ABw#		!e#		!eai!!u		!A%!!u		!;;"1IEAYA.2a!e9r!u3DEE$16A>		! 88DIIaL)#(EBq1uI,=#>AE#JDIIaLxx		!-"Q%2a!e92D')!u		!G J Kr&   c                 t  	 t        |d      r|j                  dkD  rt        d      t        |d      r|j                  dkD  rt        d      d}t        |      }t	        j
                  |t        j                        rt        |      t        |      }t	        j                  |t        j                        t	        j
                  t        j                        rt        	nt        		fd}	fd}t        | t        j                        r't        | t        j                        rt        |      |S |S )Nr}   r*   zxp must be 1Dzfp must be 1Dz:Cannot cast array data from complex dtype to float64 dtypec                      | ||      S r-   r%   r  r  r  r   r   s      r'   np_interp_implz!np_interp.<locals>.np_interp_implO
  s    QB&&r&   c                 4     | ||      j                   d   S r   )r   r  s      r'   np_interp_scalar_implz(np_interp.<locals>.np_interp_scalar_implR
  s    QB&++A..r&   )rT  r}   r   r  rb   r  r  result_typer   r  r  rU   r   r  r  )
r  r  r  complex_dtype_msgxp_dtfp_dtr  r  r   r   s
           @@r'   	np_interpr  4
  s     r6rww{/**r6rww{/** 	E  BE	}}UB../+,,BENN5"**-E	}}UB../,$'/ !U\\"a'/00$$r&   c                     | j                   dk(  sJ | j                  \  }}t        j                  |df| j                        }t        |      D ]&  }t        j                  | |d d f         |z  ||df<   ( |S )Nr|   r*   r  r   )r}   r   rb   r   r   r3   r  )r.   r   rq  r   r/   s        r'   row_wise_averager  `
  sn    66Q;;77DAq
((Aq6
)C1XFF1QT7Oa'AqD	  Jr&   c                    ||rd}nd}| j                   d   |z
  }t        |d      }| t        |       z  } t        j                  | t        j
                  | j                              }|t        j                  d|      z  }|S )Nr   r*   r  )r   r  r  rb   dotr   Tr~  )Xbiasddoffactrf   s        r'   np_cov_impl_innerr  m
  s     |DD 771:D tS>D 	!	A 	q"''!##,A4	  AHr&   c                       y r-   r%   r%   r&   r'   _prepare_cov_input_innerr  
  r4  r&   c                 >    |d t         j                  fv rd }|S d }|S )Nc                 ^    t        j                  t        |             }|s|j                  }|S r-   )rb   
atleast_2dr(  r  )r   r  rowvarr   m_arrs        r'   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_inner
  s%    MM(1+.ELr&   c                    t        j                  t        |             }t        j                  t        |            }|s<|j                  d   dk7  r|j                  }|j                  d   dk7  r|j                  }|j                  \  }}|j                  \  }}	||	k7  rt        d      t        j                  ||z   |f|      }
||
d |d d f<   ||
| d d d f<   |
S )Nr   r*   z$m and y have incompatible dimensionsr  )rb   r  r(  r   r  r~   r   )r   r  r  r   r  y_arrm_rowsm_colsy_rowsy_colsr   s              r'   r  z9_prepare_cov_input_impl.<locals>._prepare_cov_input_inner
  s    MM(1+.EMM(1+.E
 ;;q>Q&!GGE;;q>Q&!GGE"[[NFF"[[NFF !GHH ((FVOV4EBC#C
O$C!Jr&   r3  )r   r  r  r   r  s        r'   _prepare_cov_input_implr  
  s.    T5::	D $#5	4 $#r&   c                 b    | j                   dk(  r | j                  d   dk(  rd}t        |      y y )Nr|   r   r*   z2D array containing a single row is unsupported due to ambiguity in type inference. To use numpy.cov in this case simply pass the row as a 1D array, i.e. m[0].)r}   r   r*  )r   r   s     r'   _handle_m_dim_changer  
  s6    vv{qwwqzQ? 3	 '{r&   c                     | S r-   r%   r  s    r'   r  r  
  s    qr&   c                    t         j                  }t        | t        j                        rt        | j                        }|S t        | t        j                  t        j                  f      rt        |       }|S t        | t        j                  t        j                  f      rt               }| D ]?  }t        |d      r |D cg c]  }|j                  |       c} /|j                  |       A t        |      dkD  r+t        j                  |D cg c]  }t        |       c} }|S t        |      dk(  rt        |j!                               }|S c c}w c c}w )Nr  r*   )rb   r   rU   r   r   r	   r   r  r  rG   rX   setrT  addrF   rs  r   )
array_likearray_like_dtcoltypesr   rg   tys         r'   r  r  
  s   JJM*ekk* !1!12  
Ju}} =	> ,  
J =	>5CsG$*-.#Qa#.S!	 
 x=1,,h.Ohx|h.OPM  ]a$X\\^4M / /Ps   EEc                    t        | t        j                        r*| j                  dkD  rt	        dj                  |            y t        | t        j                        rwt        | j                  d   t        j                        rOt        | j                  d   j                  d   t        j                        rt	        dj                  |            y y y )Nr|   z{0} has more than 2 dimensionsr   )rU   r   r   r}   r  formatr  r  )r  names     r'   check_dimensionsr  
  s    *ekk*??Q<CCDIJJ 	J	/jnnQ'8*..+//2ENNC @ G G MNN D 9 
0r&   c                 |    t        j                  |       st        d      | t        |       z
  dk7  rt        d      y )Nz)Cannot convert non-finite ddof to integerr   zddof must be integral value)rb   r|  r~   r  )r  s    r'   _handle_ddofr  
  s<    ;;tDEEc$i1677 r&   c                     | S r-   r%   r  s    r'   r  r  
  s    ar&   c                 >     ||         ||       t        | |||      S r-   )r  )r   r  r  r   r  _DDOF_HANDLER_M_DIM_HANDLERs          r'   _prepare_cov_inputr  
  s%     1$#Aq&%88r&   c                 T   |d t         j                  fv }t        | t         j                        r| j                  dk(  r|S t        | t         j
                        r_t        d | j                   D              r|S t        | j                         dk(  r)t        | j                   d   t         j
                        r|S t        | t         j                  t         j                  f      r|S t        | t         j                        r*t        | j                  d   t         j                        s|ryy)Nr*   c              3   p   K   | ].  }t        |t        j                  t        j                  f       0 y wr-   )rU   r   r  r  ).0r  s     r'   	<genexpr>z)scalar_result_expected.<locals>.<genexpr>
  s,      /-1 !ellEMM:;-s   46r   TF)r   r4  rU   r   r}   	BaseTuplerQ  rF   r  r  r  r  )mandatory_inputoptional_inputopt_is_nones      r'   scalar_result_expectedr  
  s     T5::$66K/5;;/O4H4HA4M/5??3 /'--/ /O))*a/44Q7I""/ELL%--#@A/5>>2?..q15>>Br&   c                     t        j                  t        j                  |       dkD  t        j                  |       |       S r[  )rb   r  fabssignr  s    r'   
_clip_corrr  
  s)    88BGGAJNBGGAJ22r&   c                 f    t        | j                        }t        | j                        }|d|z  z   S )NrD  )r  r   r   )r  r   r   s      r'   _clip_complexr    s-    affDaffD"t)r&   c                 .  	
 t        | d       t        |d       |d t        j                  fv rt        	n]t	        |t        j
                  t        j                  f      rt        	n,t	        |t        j                        rt        	nt        d      t        
t	        | t        j                        rt        
t        |       }t        |      }t        j                  ||t        j                         d	
fd	}	 	 d	
fd	}t#        | |      r|S |S )Nr   r  z)ddof must be a real numerical scalar typec           	      L   t        | |||      j                        }t        j                  t        j                  |j
                        dk(        rBt        j                  |j
                  d   |j
                  d   ft        j                        S t        |||      S )Nr   r  )	r  r  rb   r  r1  r   r   rE  r  )	r   r  r  r  r  r  r  r  r   s	         r'   np_cov_implznp_cov.<locals>.np_cov_impl5  s    q!VUD--//5ve} 	
 66"((177#q()77AGGAJ
3!&( ( %Qd33r&   c           	      .   t        | |||	      j                  	      }t        j                  t        j                  |j
                        dk(        rt        j                  }nt        |||      j                  d   }t        j                  |      S r   )	r  r  rb   r  r1  r   rE  r  r   )
r   r  r  r  r  r  variancer  r  r   s
          r'   np_cov_impl_single_variablez+np_cov.<locals>.np_cov_impl_single_variable?  sy    q!VT5--//5ve} 	
 66"((177#q()vvH(D$7<<Q?Hxx!!r&   NTFN)r  r   r4  _handle_ddof_noprU   r  r  r  r  r   _handle_m_dim_nopr   r  r  rb   r  r   r  )r   r  r  r  r  m_dty_dtr  r  r  r  r   s            @@@r'   np_covr    s     QQ ejj!!(dU]]EMM:;,Mekk*(MIJJ
 'N!U[[!- 1D1DNN4rzz2E4 BG)-
" a#**r&   c                     t        |       }t        |      }t        j                  ||t        j                        }|t        j                  k(  rt
        nt        dfd	}dd}t        | |      r|S |S )Nc                 (   t        j                  | ||      }t        j                  |      }t        j                  |j                        }t        |j                  d         D ]$  }||d d fxx   |z  cc<   |d d |fxx   |z  cc<   &  |      S r   )rb   covdiagsqrtr   r3   r   )r  r  r  rf   rb  stddevr/   clip_fns          r'   np_corrcoef_implz%np_corrcoef.<locals>.np_corrcoef_impl]  sz    FF1a GGAJqwwqz"AadGvGadGvG # qzr&   c                 :    t        j                  | ||      }||z  S r-   )rb   r  )r  r  r  rf   s       r'    np_corrcoef_impl_single_variablez5np_corrcoef.<locals>.np_corrcoef_impl_single_variableh  s    FF1a 1ur&   NT)r  rb   r  r   
complex128r  r  r  )	r  r  r  rt  r  r   r  r  r  s	           @r'   np_corrcoefr  Q  sg     1D1DNN4rzz2E	 a#//r&   c                     t        | t        j                  t        j                  f      }t	        |       r|sd }|S ddfd}|S )Nc                 
   t        j                  |       }|j                  dk(  r%t        j                  dt        j
                        S t        j                  t        j                  t        j                  |                  S )Nr%   )r   r*   r  )	rb   rs  r   r  r   r5   rB  vstackr  r)  s     r'   rJ  znp_argwhere.<locals>.impl}  sO    **Q-CyyBxxejj99<<		"**S/ :;;r&   )r   r   )r*   r   c                     | 0t        |       r%t        j                  t        j                        S t        j                  t        j                        S r  )r  rb   r  r   r5   )r.   falseishtrueishs    r'   rJ  znp_argwhere.<locals>.impl  s8    }axxuzz::xx

;;r&   )rU   r   r  r  r
   )r.   
use_scalarrJ  r  r  s      @@r'   np_argwherer  v  sL    
 Aemm<=J:	< K 	< Kr&   c                 ,    t        |       rd }|S d }|S )Nc                     t        j                  |       }t        j                  t        j                  |            d   S r   )rb   rs  r  rC  r)  s     r'   rJ  znp_flatnonzero.<locals>.impl  s+    **Q-C::bhhsm,Q//r&   c                     | t        |       rdg}nt        d      D cg c]  }| }}t        j                  |t        j
                        S c c}w )Nr   r  )r  r3   rb   r1  r   r5   )r.   rA   r  s      r'   rJ  znp_flatnonzero.<locals>.impl  sF    }as#(8,8a8,88D

33 -s   	Ar  )r.   rJ  s     r'   np_flatnonzeror
    s$     	0 K	4 Kr&   c                    | j                   dk(  rA| j                  d   }| j                  d   }d|z   }|r	||z  }||fS |t        ||      z  }||fS t        j                  | j                        }t        j
                  t        j                  |      dk(        st        d      dt        j                  |d d       j                         z   }|j                         }||fS )Nr|   r   r*   z/All dimensions of input must be of equal lengthrA  )r}   r   r   rb   r1  rQ  r>  r~   r   r  r   )r.   wrapr   rq  steprC  r   s          r'   _fill_diagonal_paramsr    s    vv{GGAJGGAJ1ua%C 9 c!Qi-C 9 !vvbggen)*NOOBJJuSbz*//11jjl9r&   c                 d    t        | |      \  }}t        d||      D ]  }|| j                  |<    y r   )r  r3   r   )r.   r   r  rC  r  r/   s         r'   _fill_diagonal_scalarr    s2    %a.IC1c4 q	 !r&   c                     t        | |      \  }}d}t        |      }t        d||      D ]  }||   | j                  |<   |dz  }||z  }  y r  )r  rF   r3   r   )r.   r   r  rC  r  ctrv_lenr/   s           r'   _fill_diagonalr    sV    %a.IC
CHE1c4 Hq	qEk !r&   c                 :   t        j                  | j                        }|j                  }|j                  }t        j
                  t        j                  |             s0t        j
                  ||k        st        j
                  ||kD        rt        d      y Nz'Unable to safely conform val to a.dtype)rb   iinfor   r   r  r  r|  r~   )r.   r   r  v_minv_maxs        r'   _check_val_intr    sp    HHQWWEIIEIIE 
vvr{{3 BFF3;$7266#+;NBCC <Or&   c                    t        j                  | j                        }|j                  }|j                  }|t        j
                  |         }t        j                  ||k        st        j                  ||kD        rt        d      y r  )rb   finfor   r   r  r|  r  r~   )r.   r   r  r  r  finite_valss         r'   _check_val_floatr    sn    HHQWWEIIEIIE bkk#&'K	vvkE!"bff[5-@&ABCC 'Br&   c                     | S r-   r%   r  r  s     r'   r  r    s    1r&   c                      y r-   r%   r  s    r'   r(  r(    r4  r&   c                    t        | t        j                        rd S t        | t        j                  t        j                  f      rd S t        | t        j
                  t        j                  f      rt        |       fdS y )Nc                     | S r-   r%   r  s    r'   r  z_asarray_impl.<locals>.<lambda>  s    r&   c                 ,    t        j                  |       S r-   r0  r  s    r'   r  z_asarray_impl.<locals>.<lambda>  s    !r&   c                 4    t        j                  | g      S r  r0  r  r  s    r'   r  z_asarray_impl.<locals>.<lambda>  s    1#R0r&   )rU   r   r   r  rX   r  r  r	   r&  s    @r'   _asarray_implr'    s_    !U[[!	A4	5$$	Aemm4	5a[00 
6r&   c                    | j                   dkD  rt        | j                  t        j                        rt
        n1t        | j                  t        j                        rt        nt        dfd	}dfd	}t        |t        j                  t        j                  t        j                  f      r|S t        |t        j                  t        j                  t        j                  f      r|S y d| j                   z  }t        |      )Nr*   c                 d    t        |      j                         } | |       t        | ||       y r-   )r(  rv  r  r.   r   r  tmpvalcheckers       r'   scalar_implz%np_fill_diagonal.<locals>.scalar_impl  s+    c]**,FAv!!S$/r&   c                 d    t        |      j                         } | |       t        | ||       y r-   )r(  rv  r  r*  s       r'   non_scalar_implz)np_fill_diagonal.<locals>.non_scalar_impl  s+    c]**,FAv1fd+r&   z4The first argument must be at least 2-D (found %s-D)F)r}   rU   r   r   r  r  r  r  
_check_nopr  rX   r  r   r   )r.   r   r  r-  r/  r   r,  s         @r'   np_fill_diagonalr2    s     	vvz aggu}}-$G-&G G	0
	,
 cEKKFGekk5>>5;;GH"" I EqvvM#r&   c                 "    d| j                   fz  S )Nzllvm.rint.f%d)r   )tps    r'   _np_round_intrinsicr5    s    bkk^++r&   c                       ||      }d }||fS )Nc                 :   |\  }|j                   d   }| j                  |      }|j                  }t        j                  j                  ||g      }t        j                  ||t        |            }	|j                  |	|f      }
t        | ||j                  |
      S r   )r;   r1   modulellvmliteirFunctionTyper   get_or_insert_functionr5  callr   ro   )rr   r9   rs   r;   r   r4  lltyr8  fntyr  rt   s              r'   rE   z _np_round_float.<locals>.codegen  s    XXa[%%b){{''tf5++FD,?,CEll2v&!'7COOSIIr&   r%   )	typingctxr   rs   rE   s       r'   _np_round_floatrA    s    
c(C	J <r&   c                 $   t        j                  |       st        j                  |       r| S |dk\  rG|dkD  rd|dz
  z  }d}nd|z  }d}| |z  |z  }t        j                  |      r| S t        |      |z  |z  S d| z  }| |z  }t        |      |z  S )Nr      g      $@gMDrX  )r  rZ  r  rA  )r  ndigitspow1pow2r  s        r'   round_ndigitsrG  -  s    zz!}

1 !|R< GbL)DD7?DDX::a=H"T)T11 !Hq!D((r&   c                 L   t        |       st        d      t        |t        j                        st        |      sd}t        |      t        | t        j                  t        j                  t        j                  f      rrt        |      r`t        | t        j                        rd	d}|S t        | t        j                        rd	d}|S t        | t        j                        rd	d}|S d	d}|S y t        | t        j                        rt        |      rd	d}|S d	d}|S y )
Nz#The argument "a" must be array-likez5The argument "out" must be an array if it is providedc                 :    |dk(  rt        |       S t        | |      S r   )rA  rG  r.   decimalsr   s      r'   rJ  zimpl_np_round.<locals>.implU  s!    1}.q11,Q99r&   c                 :    |dk(  r| S t        t        | |            S r   )r  rG  rJ  s      r'   rJ  zimpl_np_round.<locals>.impl\  s     1} "=H#=>>r&   c                     |dk(  r+t        | j                        }t        | j                        }n,t        | j                  |      }t        | j                  |      }t	        ||      S r   )rA  r   r   rG  complex)r.   rK  r   r   r   s        r'   rJ  zimpl_np_round.<locals>.implc  sR    1}.qvv6.qvv6,QVVX>,QVVX>"4..r&   c                 8    t        j                  | |      |d<   |S r   )rb   roundrJ  s      r'   rJ  zimpl_np_round.<locals>.implm  s    !X.A
r&   c                 Z    t        j                  |       }t        j                  | ||      S r-   )rb   r  rP  rJ  s      r'   rJ  zimpl_np_round.<locals>.impls  s#    mmA&xx8S11r&   c                     | j                   |j                   k7  rt        d      t        j                  |       D ]  \  }}t        j                  ||      ||<     |S )Nzinvalid output shape)r   r~   rb   r  rP  )r.   rK  r   r  r   s        r'   rJ  zimpl_np_round.<locals>.implx  sN    77cii'$%;<<"$.."3JE3!##x!8CJ #4
r&   r  )	r
   r   rU   r   r   r   r  r  r  )r.   rK  r   r   rJ  s        r'   impl_np_roundrS  H  s     A?@@sEKK(K,<E#!ekk5==%--@As!U[[):
 Au}}-?
 Au}}-/  K . 
Au{{	#s2 K K 
$r&   c                     t        | t        j                        rd }|S t        | t        j                        rd }|S t	        d      )Nc                 f    | dk(  rd} | t         j                  z  } t        j                  |       | z  S )Nr  g#B;)rb   pisinr  s    r'   rJ  zimpl_np_sinc.<locals>.impl  s-    DyJA66!9q= r&   c                     t        j                  |       }t        j                  |       D ]  \  }}t        j                  |      ||<    |S r-   )rb   r  r  sinc)r  r   r  r   s       r'   rJ  zimpl_np_sinc.<locals>.impl  s=    --"C nnQ/
sWWS\E
 0Jr&   z,Argument "x" must be a Number or array-like.)rU   r   r  r   r   r  s     r'   impl_np_sincrZ    sB    !U\\"	!
 	Au{{	#	
 KLLr&   c                    t        dt        j                  z        t        | t        j
                        rdfd	}|S t        | t        j                        rY| j                  }t        |t        j                        r|j                  nt        |t        j                        r|ny dfd	}|S t        d|        )N   c                     |r-t        j                  | j                  | j                        z  S t        j                  | j                  | j                        S r-   )rb   arctan2r   r   )r  degdeg_mults     r'   rJ  zov_np_angle.<locals>.impl  s=    zz!&&!&&1H<<zz!&&!&&11r&   c                     t        j                  |       }t        j                  |       D ]  \  }}t        j                  ||      ||<     |S r  )rb   r  r  angle)r  r_  r   r  r   	ret_dtypes        r'   rJ  zov_np_angle.<locals>.impl  sC    --3C nnQ/
sXXc3/E
 0Jr&   z6Argument "z" must be a complex or Array[complex]. Got r0  )r  rb   rV  rU   r   r  r   r   r  underlying_floatr  r   )r  r_  rJ  r   r`  rc  s       @@r'   ov_np_anglere    s    S255[!H !U\\"	2
 	Au{{	#eU]]+..Iu{{+I	
  778c; < 	<r&   zarray.nonzeroc                 ~   |j                   d   }|j                  }|j                  }|j                  } t	        |      | ||d         }t        j                  ||j                        }	t        j                  ||j                        }
|j                  }|j                  }| j                  t        j                  d      }| j                  t        j                  d      }t        j                  ||      }t        j                  ||	|j                         5 }t        j"                  | |||	|
||      }t%        | |||      }| j'                  ||j                  |      }|j)                  |      5  |j+                  |j-                  |j/                  |      |      |       d d d        d d d        |j/                  |      f}t1        |      D cg c]  }t3        | |||      j5                           }}|D cg c]  } t	        |      | ||       }}|D cg c]  }|j                   }}t        j                  ||      }t        j                  ||	|j                         5 }t        j"                  | |||	|
||      }t%        | |||      }| j'                  ||j                  |      }|j)                  |      5  |s|f}|j/                  |      }t1        |      D ]3  }t        j"                  | |||   |dd|g      }t7        | ||||   |       5 |j+                  |j-                  ||      |       d d d        d d d        | j9                  ||j                  |      }t;        | ||j                  |      S # 1 sw Y   xY w# 1 sw Y   xY wc c}w c c}w c c}w # 1 sw Y   oxY w# 1 sw Y   sxY w)Nr   r*   r%   C)r;   ro   r   r  r   r   unpack_tupler   stridesrA   layoutr4   r   r5   alloca_once_value	loop_nestr   get_item_pointer2r   is_trueif_thenstorer  loadr3   r   	_getvaluer   
make_tupler   )rr   r9   rs   r;   arytyr   outarytynoutsr?  r   ri  rA   rj  rh   r  r  indicesptrr   nz	out_shaper/   outsr   outarys	out_datasr  curr=   s                                r'   array_nonzeror    sA    HHQKEOOE{{HKKE
*U
GWd1g
6C  #))4E""7CKK8G88D\\F 

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

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

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

2A

2Aww!''!vva1f~%r&   )r
   r   r   r  r  rU   )r  r  acceptedrJ  s       r'   np_array_equalr    s]     R %5b%9OPPu||,H"hJr8$<	 K	 Kr&   c                 N    t        |       st        |      st        d      d }|S )Nz.intersect1d: first two args must be array-likec                 "   t        j                  |       } t        j                  |      }t        j                  |       } t        j                  |      }t        j                  | |f      }|j	                          |dd  |d d k(  }|d d |   }|S )Nr*   rA  )rb   rs  r  r  sort)ar1ar2auxr  int1ds        r'   np_intersects1d_implz0jit_np_intersect1d.<locals>.np_intersects1d_impl  s{    jjojjoiiniinnnc3Z(
12w#cr("CRr&   r
   r   )r  r  r  s      r'   jit_np_intersect1dr    s-    
 S!%5c%:JKK  r&   c                     t        |t        j                        r*|j                  dk7  rt	        dj                  |             y t        |t        j                        st	        dj                  |             y )Nr*   z${0}(): input should have dimension 1z+{0}(): input should be an array or sequence)rU   r   r   r}   r  r  r  )	func_nameseqs     r'   validate_1d_array_liker    si    #u{{#88q=B#VI.0 0  U^^,E	*, 	, -r&   c                 x   t        d|        t        | j                  t        j                        sy t        |d       |d t        j                  fvr5t        d|       t        j                  t        d        t        d        n(t        j                  t        d        t        d        dfd	}|S )	Nbincount	minlengthc                 H    t        |       t        |      k7  rt        d      y )Nz7bincount(): weights and list don't have the same length)rF   r~   r.   r  r  s      r'   validate_inputsz$np_bincount.<locals>.validate_inputs8  s)    1vW%  "3 4 4 &r&   c                 $    | |xx   ||   z  cc<   y r-   r%   r   r   r   r  s       r'   
count_itemznp_bincount.<locals>.count_item>  s    H$Hr&   c                      y r-   r%   r  s      r'   r  z$np_bincount.<locals>.validate_inputsE  s    r&   c                     | |xx   dz  cc<   y r[  r%   r  s       r'   r  znp_bincount.<locals>.count_itemI  s    HMHr&   c                 V    
| ||       |dk  rt        d      t        |       }|dkD  r| d   nd}t        d|      D ]$  }| |   dk  rt        d      t        || |         }& t        |dz   |      }t	        j
                  |	      }t        |      D ]  } ||| |   |        |S )Nr   z 'minlength' must not be negativerA  r*   z/bincount(): first argument must be non-negative)r~   rF   r3   r  rb   r  )r.   r  r  rq  rP  r/   
out_lengthr   r  rD  r  s           r'   bincount_implz"np_bincount.<locals>.bincount_implM  s    7I.q=?@@FA!2q!Atax  "0 1 1qt$E	  I.
hhz9-qAsAqtW- 
r&   r   )r  rU   r   r   r  r   r4  rb   r   r   r5   )r.   r  r  r  r  rD  r  s       @@@r'   np_bincountr  )  s    :q)aggu}}-Y,tUZZ((z73 JJ			4 
	4
 
	% 
	% JJ			 
	 
	 
	& r&   c                 8   t        j                  | j                        rt        j                  |j                        rwt        j                  | j                        rt        j                  |j                        S t        j                  |j                        ry| j                  |j                  k  S yt        j                  |j                        ryt        j                  | j                        r9t        j                  |j                        r| j                  |j                  k  S yt        j                  |j                        ry| j                  |j                  k  ry| j                  |j                  k(  r| j                  |j                  k  S yr   )rb   r  r   r   r  s     r'   less_than_or_equal_complexr  g  s   	xx88AFFxxxx''88AFF#66QVV++ 88AFFxx88AFF#66QVV++ 88AFF#vv#166) vv// r&   c                     t        | t              st        |t              rt        | |      S t        |t              rt	        j
                  |      ry| |k  S r  )rU   rN  r  r  rb   r  r  s     r'   _less_than_or_equalr    sC    !WAw!7)!Q//	Au	88A;6Mr&   c                     t        | t              st        |t              rt        | |      S t        |t              rt	        | |      S | |k  S r-   )rU   rN  less_than_complexr  less_than_floatr  s     r'   
_less_thanr    sB    !WAw!7 A&&	Au	q!$$q5Lr&   c                 d    t        j                  |       ryt        j                  |      ry| |k  S r  )rb   r  r  s     r'   _less_then_datetime64r     s)     
xx{	xx{q5Lr&   c                     t        ||        S r-   )r   r  s     r'   _less_then_or_equal_datetime64r    s    $Q***r&   c                       fd}|S )Nc                 d    ||k  r'|||z
  dz	  z   }| |   } ||      r|dz   }n|}||k  r'||fS r[  r%   )r.   key_valr   r8  rF  mid_valcmps         r'   rJ  z_searchsorted.<locals>.impl  sW    'G"3!9:GjG7G$!A+!  r&   r%   )r  rJ  s   ` r'   _searchsortedr    s    	  Kr&   leftrightc                 F   |t         v sJ | j                  dv rt        }t        }nt        }t
        }|dk(  rt        |      }|}nHt        j                  | t        j                        rt        dk  rt        |      }|}nt        |      }|}t        |      t        |      fS )NmMr	  )r*      )VALID_SEARCHSORTED_SIDEScharr   r  r  r  r  rb   r  inexactr   r   )np_dtypesider=  le_impl_cmps         r'    make_searchsorted_implementationr    s    ++++}}"+ v~b!==2::.=73J ""%ED!"%EDE"$4T$:::r&   c                    t        |d|      }|t        vrt        d|       t        |t        j
                  t        j                  f      rt        |j                        }nt        |      }t        j                  t        | j                        |      }t        ||      \  t        |t        j
                        r	dfd	}|S t        |t        j                        rdd}|S dfd	}|S )NrW   z Invalid value given for 'side': c                    t        j                  |j                  t         j                        }|j                  d   }d}t        |       }t        |j                        D ]\  }|j                  |   } 	||      rt        |       }n!d}|t        |       k  r|dz  }nt        |       }|} 
| |||      \  }}|||<   ^ |j                  |j                        S )Nr  r   r*   )	rb   r   r   r5   r   rF   r3   rD  r   )r.   rg   r  r   last_key_valr   r8  r/   r  r  r  s            r'   rJ  zsearchsorted.<locals>.impl  s    ((1661C66!9LG!fG166]&&)g.!!fGGQ'1"%a&&#(GWg#F  A #  ;;qww''r&   c                 \    t        j                  |      }t        j                  | ||      S )Nr  )rb   rs  searchsorted)r.   rg   r  s      r'   rJ  zsearchsorted.<locals>.impl  s"    

1A??1ad33r&   c                 6     | |dt        |             \  }}|S r   )rF   )r.   rg   r  rr?   r  s        r'   rJ  zsearchsorted.<locals>.impl  s     Aq#a&)DAqHr&   r	  )r   r  r   rU   r   r   r  r	   r   rb   rs  r  )	r.   rg   r  side_valv_dtnp_dtrJ  r  r  s	          @@r'   r  r    s    t_d3H//  @
KLL!ekk5>>23 {Xagg.5E25(CKE4!U[[!	(> K 
Au~~	&	4 K	 Kr&   c                     t        | t        j                        r'| j                  t        j                  v rt        d      t        d        dfd	}|S )Nzx may not be complexc                 t   t        |       dk(  ry| d   }d}|t        |       k  r$| |   |k(  r|dz  }|t        |       k  r	| |   |k(  r|t        |       k(  ry| |   }||k  r,t        |dz   t        |             D ]  }|}| |   }||kD  s y yt        |dz   t        |             D ]  }|}| |   }||k  s y y)Nr   r*   rA  )rF   r3   )bins
last_valuer/   
next_values       r'   _monotonicityz"np_digitize.<locals>._monotonicity  s     t9> !W
#d)mQ: 5FA #d)mQ: 5 D	>!W

"1q5#d),'
!!W

*	 -
  1q5#d),'
!!W

*	 -
 r&   c                 T    |      }|dk(  rt        d      |rG|dk(  r*t        |      t        j                  |d d d   | d      z
  S t        j                  || d      S |dk(  r*t        |      t        j                  |d d d   | d      z
  S t        j                  || d      S )Nr   z3bins must be monotonically increasing or decreasingrA  r	  r  r
  )r~   rF   rb   r  )r  r%  r
  monor(  s       r'   digitize_implz"np_digitize.<locals>.digitize_implB  s    T"19E 
 rz4y2??4":qv#NNNtQV<<rz4y2??4":qw#OOOtQW==r&   r0  )rU   r   r   r   complex_domainr   r   )r  r%  r
  r+  r(  s       @r'   np_digitizer-    sP     !U[[!agg1E1E&E011" "H>. r&   c                     t        |t        t        j                  f      r-|d t        j                  fv rt        d      dfd	}|S dd}|S dd}|S )Nr}  c                     } }t        j                  |       D ]!  }|j                         }||kD  r|}||k  s |}# t        j                  | |||f      S r-   )rb   rc   rd   	histogram)r.   r%  r3   bin_minbin_maxr   rg   r}  s          r'   histogram_implz$np_histogram.<locals>.histogram_implh  s^    $IIaLD		A{"#{"# ) ||Atgw-?@@r&   c                    |dk  rt        d      |\  }}||k  st        d      t        j                  |t        j                        }||kD  r|||z
  z  }t        j                  |       D ]h  }|j                         }t        j                  ||z
  |z        }	d|	cxk  r|k  rn n|t        |	      xx   dz  cc<   S||k(  sY||dz
  xx   dz  cc<   j t        j                  |||dz         }
||
fS )Nr   z0histogram(): `bins` should be a positive integerz;histogram(): max must be larger than min in range parameterr*   )
r~   rb   r  r5   rc   rd   r  r  r  linspace)r.   r%  r3   r1  r2  hist	bin_ratior   rg   rn  
bins_arrays              r'   r3  z$np_histogram.<locals>.histogram_implt  s    19$ &8 9 9#( ')$ &> ? ? xxbgg.W$ $'(9 :I "		! IIK JJGy'@A=D= QLA-L'\ Na/N !-  [['4!8D
Z''r&   c                    t        |      dz
  }t        |      D ]  }||   ||dz      k  rt        d       |d   }||   }t        j                  |t        j
                        }|dkD  rrt        j                  |       D ]Z  }|j                         }	||	cxk  r|k  sn !d}
|dz
  }|
|k  r!|
|z   dz   dz	  }|	||   k  r|dz
  }n|}
|
|k  r!||
xx   dz  cc<   \ ||fS )Nr*   z-histogram(): bins must increase monotonicallyr   )rF   _ranger~   rb   r  r5   rc   rd   )r.   r%  r3   nbinsr/   r1  r2  r6  r   rg   lohir`  s                r'   r3  z$np_histogram.<locals>.histogram_impl  s   IMEE]Aw$q1u+-$ &5 6 6 # 1gG5kG88E277+DqyIIaLD		A"a272 BBr'  "Bw{q0tCy=!$qB!$B r' HMH! )$ :r&   r  N)rU   r  r   r  r4  r  )r.   r%  r3   r3  r}  s       @r'   np_histogramr?  _  s_    $emm,- T5::&&,C	AN w(v C	B r&   )ibetar  machepepsnegepepsnegiexpminexpxminmaxexpxmaxirndngrdepsilontinyhuge	precision
resolutionMachAr)rB  rD  rE  rA  r  rH  r   rF  rC  nexpnmantrO  rP  rM  bitsr  )r   r  rT  r  c                      t         dk\  ry d t        j                  d      5 d} t        j                  d| t        d       t
        j                  d d d        t              fd       }y # 1 sw Y   xY w)	N)r*      T)recordz(`np.MachAr` is deprecated \(NumPy 1.22\)alwaysz.*numba.*arraymath)messagecategoryr8  c            	                 } t        t        D cg c]  }t        | |       c}      rLd   }t        j                  |j
                  j                  d   t        |j                  |j                         fd}|S c c}w )Nr   c                      t          S r-   )rQ  )_mach_ar_datas   r'   rJ  z1_gen_np_machar.<locals>.MachAr_impl.<locals>.impl  s    =))r&   )
rK  _mach_ar_supportedr   warningswarn_explicitrY  r;   r    filenamelineno)r  r  wmsgrJ  r]  	np_MachArws       @r'   MachAr_implz#_gen_np_machar.<locals>.MachAr_impl  sx    K6HI6Hwq!}6HIJQ4D""4<<#4#4Q#7#:#'==#';;0
	* Js   B)r   r_  catch_warningsfilterwarningsDeprecationWarningrb   rQ  r   )r   rf  rd  re  s     @@r'   _gen_np_macharrj    sr    A		 	 	-9#);'<	> II	 
. i  
.	-s   0A22A;c           	         	 t        | d|       }t        |      }	  ||      }t        |D cg c]  }t        ||       c}      	t        	fd       }|S # t        $ r Y y w xY wc c}w )Nr   c                       S r-   r%   )r  	containerrA   s    r'   rJ  z!generate_xinfo_body.<locals>.impl  s    $r&   )r   r	   r~   rK  r   )
r  np_funcrm  attrnbtyr  r  r  rJ  rA   s
     `      @r'   generate_xinfo_bodyrq    sy    3%D~HH .A'!Q-./D   K   /s   A A'	A$#A$c                 Z    t        | t        j                  t        t              fd}|S )Nc                      |       S r-   r%   )r   r  s    r'   rJ  zol_np_finfo.<locals>.impl   s    %yr&   )rq  rb   r  _finfo_supported)r   rJ  r  s     @r'   ol_np_finforu    s"    	UBHHe5E	FBKr&   c                 Z    t        | t        j                  t        t              fd}|S )Nc                      |       S r-   r%   )int_typer  s    r'   rJ  zol_np_iinfo.<locals>.impl	  s    (|r&   )rq  rb   r  _iinfo_supported)rx  rJ  r  s     @r'   ol_np_iinforz    s"    	Xrxx8H	IBKr&   c                    t         d        }t        s|S t        j                  t        j                  z  }| |v xr ||v }|s|S t        |       }t        |      }t        j                  ||      t         fd       }|S )Nc                 X    d}t        t        |             D ]  }|| |   ||   z  z   } |S r   r3   rF   )r.   rn  accr/   s       r'   
_innerprodz#_get_inner_prod.<locals>._innerprod  s4    s1vA!qt#C 
r&   c                 l    t        j                  | j                        |j                              S r-   )rb   r  r  )r.   rn  r  s     r'   	_dot_wrapz"_get_inner_prod.<locals>._dot_wrap&  s$    66!((2,55r&   )r   
_HAVE_BLASr   real_domainr,  r	   rb   rs  )	dtadtbr  fltyfloatsa_dtb_dtr  r  s	           @r'   _get_inner_prodr    s       u333DD[(SD[F}}dD)		6 
	6r&   c                 t    t        | t        j                        r| j                  dk  st	        d|z        y y )Nr*   z!%s() only supported on 1D arrays )rU   r   r   r}   r   )r.   r  s     r'   
_assert_1dr  ,  s6    !U[[!vv{AIMNN  "r&   c                      y r-   r%   )ap1ap2mode	directions       r'   _np_correlate_corer  2  r4  r&   c                     t        | j                        }t        |j                        }t        j                  ||      t	        | j                  |j                        fd}|S )Nc                 v   t        |       }t        |      }||k  rt        d      |}|}|dk(  r||z
  dz   }d}d}	n6|dk(  r|dz
  }	|dz
  }||z   dz
  }n|dk(  r|dz  }||z
  dz
  }	nt        d      t        j                  |      }
|dk(  rd}d}n|d	k(  r|dz
  }d	}nt        d
      t	        |      D ]"  }||z   |z
  } | d | || d        |
|<   ||z   }$ t	        ||z
  dz         D ]  } | |||z    |      |
|<   ||z   } t	        |	      D ]"  }||z
  dz
  } | | d  |d |       |
|<   ||z   }$ |
S )Nz''len(ap1)' must greater than 'len(ap2)'r  r*   r   r   samer|   z1Invalid 'mode', valid are 'full', 'same', 'valid'rA  zInvalid direction)rF   r~   rb   r  r3   )r  r  r  r  n1n2r  rq  n_leftn_rightrd  r   incr/   ri  r  	innerprods                  r'   rJ  z%_np_correlate_core_impl.<locals>.impl=  s    XX7 FGG7?aZ!^FFGV^!eGUFaZ!^FV^!VF&j1nG4 
 hhvr">CC"_1*CC011vAAA Ra#qbc(3CH)C 
 rBw{#A QR#6CH)C $ wAA	A aRS3r73CH)C  
 
r&   )r	   r   rb   rs  r  )	r  r  r  r  r  r  rJ  r  r  s	          @@r'   _np_correlate_core_implr  6  sR    CIIDCIID			$	%B		3995I>@ Kr&   c                 F   t        | d       t        |d       t        d        }t        d        }| j                  t        j                  v r&|j                  t        j                  v r||n*||n%|j                  t        j                  v r||n||dfd	}|S )Nznp.correlatec                 ,    t        j                  |       S r-   )rb   r   r  s    r'   op_conjz_np_correlate.<locals>.op_conj  s    wwqzr&   c                     | S r-   r%   r  s    r'   op_nopz_np_correlate.<locals>.op_nop  s    r&   c                     t        |       }t        |      }|dk(  rt        d      |dk(  rt        d      ||k  rt         |       |       |d      S t         |        |      |d      S Nr   z'a' cannot be emptyz'v' cannot be emptyrA  r*   rF   r~   r  )r.   rg   r  lalva_opb_ops        r'   rJ  z_np_correlate.<locals>.impl  st    VV723372337%d1gtAwbAA%d1gtAwa@@r&   r  )r  r   r   r   r,  )r.   rg   r  r  r  rJ  r  r  s         @@r'   _np_correlater    s    q.!q.!    	ww%&&&77e***DDDD77e***DDDDA Kr&   c                 >    t        | d       t        |d       dd}|S )Nznp.convolvec                     t        |       }t        |      }|dk(  rt        d      |dk(  rt        d      ||k  rt        || d d d   |d      S t        | |d d d   |d      S r  r  )r.   rg   r  r  r  s        r'   rJ  znp_convolve.<locals>.impl  ss    VV723372337%a4R4$::%a4R4$::r&   r   )r  )r.   rg   r  rJ  s       r'   np_convolver    s"    q- q- ; Kr&   c                 `   t        |       sy t        | t        j                        r0t	        |      s| j
                  |j
                  k(  rd	d}|S d	d}|S t        | t        j                  t        j                  f      rt	        |      rd	d}|S d	d}|S t        | t        j                  t        j                  f      r"t	        |      r| n|}t        |      d	fd	}|S t        | t        j                  j                        r`t        | j
                  t        j                  t        j                  f      st        d      t	        |      r| j
                  n|d	fd	}|S t        | t        j                        r't        j                   | j"                        d	fd	}|S d }|S )
Nc                     | S r-   r%   r.   r   s     r'   rJ  znp_asarray.<locals>.impl  s    r&   c                 $    | j                  |      S r-   )r  r  s     r'   rJ  znp_asarray.<locals>.impl  s    xx&r&   c                 ,    t        j                  |       S r-   r0  r  s     r'   rJ  znp_asarray.<locals>.impl  s    xx{"r&   c                 .    t        j                  | |      S r-   r0  r  s     r'   rJ  znp_asarray.<locals>.impl  s    xx5))r&   c                 0    t        j                  |       S r-   r0  )r.   r   r  s     r'   rJ  znp_asarray.<locals>.impl  s    88Ar?"r&   z?asarray support for List is limited to Boolean and Number typesc                 |    t        |       }t        j                  |      }t        |       D ]
  \  }}|||<    |S r  )rF   rb   r   r   )r.   r   r:  rd  r/   rg   target_dtypes         r'   rJ  znp_asarray.<locals>.impl  s<    AA((1L1C!!1A %Jr&   c                 $    j                         S r-   )r  )r.   r   re   s     r'   rJ  znp_asarray.<locals>.impl  s    88:r&   r-   )r
   rU   r   r   r   r   r  rX   r  r  r	   
containersListTyper   StringLiteralrb   rs  rW   )r.   r   rJ  dt_convre   r  r  s       @@@r'   
np_asarrayr    sk   
 A!U[[!uEKK!7V KQ'P KM 
A4	5 u#B K=*< K9 
Aemm4	5"5)!ug	#0 K- 
Au''00	1!''ELL%--#@A./ / #.e"4qww%	 K 
Au**	+jj)	
 K Kr&   c                     t        |t        j                        rt        |      }t	        j
                  |t        j                        st        j                  n|t        j                  ffd	}|S )Nc                 0    t        j                  |       S r-   rZ  )r.   r   rV  s     r'   rJ  znp_asfarray.<locals>.impl  s    ::a$$r&   )rU   r   Typer	   rb   r  r  r   )r.   r   rJ  rV  s      @r'   np_asfarrayr    sM     eUZZ(UOE}}UBJJ/BB** 	%r&   c                     d }|S )Nc                     t        j                  |       j                         }t        j                  |      }|j                  dk(  rt	        d      t        j
                  ||j                  d        r&|j                  |j                  kD  rd}t	        |      t        |j                  |j                        }t        |      D cg c]  }||   s	|j                  |    }}t        j                  |      S c c}w )Nr   z"Cannot extract from an empty arrayz+condition shape inconsistent with arr shape)
rb   rs  rv  r   r~   r  r   r3   r   r1  )r  re   r  r.   r   max_lenr   r   s           r'   np_extract_implz#np_extract.<locals>.np_extract_impl  s    zz)$,,.JJsO66Q;ABB 66$qvvw- TYY%7?CS/! affdii(&+GnBnsS	qvvc{nBxx} Cs   
C;C;r%   )r  re   r  s      r'   
np_extractr    s    ( r&   c                 `   dd}t        | t        j                  t        j                  f      st	        d      t        |t        j                  t        j                  f      st	        d      t        |t
        t        j                  t        j                  f      st	        d      t        | d   t        j                        st	        d      t        |d   t        j                        st	        d      t        | d   t        j                        r2t        | d   j                  t        j                        st	        d      t        | d   t        j                        rHt        | d   t        j                        r t        | d   d   t        j                        st	        d	      t        | d   t        j                        r*| d   j                  |d   j                  k7  rt	        d
      t        | d   t        j                        r| d   j                  dk  rt	        d      |S )Nr   c                 .   t        |       t        |      k7  rt        d      |t        j                  |d   j                  |d   j
                        z  }t        t        |       dz
  dd      D ]#  }| |   }||   }t        j                  |||      }% |S )Nz7list of cases must be same length as list of conditionsr   r*   rA  )rF   r~   rb   r  r   r   r3   r  )condlist
choicelistdefaultr   r/   r  choices          r'   np_select_arr_implz%np_select.<locals>.np_select_arr_impl(  s    x=C
O+ - . .
1 3 3Z]5H5HIIs8}q("b1AA;D]F((4-C 2 
r&   z"condlist must be a List or a Tuplez$choicelist must be a List or a Tuplez,default must be a scalar (number or boolean)z items of condlist must be arraysz"items of choicelist must be arraysz%condlist arrays must contain booleansz*condlist tuples must only contain booleanszHcondlist and choicelist elements must have the same number of dimensionsr*   z/condlist arrays must be of at least dimension 1r  )rU   r   ListrG   r   r  r  r  r   r   r}   )r  r  r  r  s       r'   	np_selectr  %  s   
 hU^^ <=ABBj5::u~~">?CDDgU\\5==ABKLL hqk5;;/?@@jmU[[1ABB (1+u{{+(1+++U]]; !HII(1+u~~.8A;7x{1~u}}= !MNN8A;,QK
1 2 22 9 : 	:(1+u{{+0@0@10DNOOr&   c                    t        |       rt        |      st        d      d| j                  j                  v sd|j                  j                  v r8| j                  j                  |j                  j                  k7  rt        d      d }|S )Nz.The arguments to np.union1d must be array-likeunichrz/For Unicode arrays, arrays must have same dtypec                     t        j                  t        j                  |             }t        j                  t        j                  |            }t        j                  t        j                  ||f            S r-   )rb   rC  rs  r  r  )r  r  r.   rn  s       r'   
union_implznp_union1d.<locals>.union_impl`  sJ    HHRZZ_%HHRZZ_%yyA/00r&   )r
   r   r   r  )r  r  r  s      r'   
np_union1dr  X  sn    C (8(=JKK	SYY^^	#x399>>'A
yy~~'KLL1
 r&   c                    d}t        | t        j                  t        j                  t        j                  f      st        |      t        |      r| j                  n	 t        |      dfd	}|S # t        $ r t        d      w xY w)Nz7The argument to np.asarray_chkfinite must be array-likez!dtype must be a valid Numpy dtypec                     t        j                  |       } t        j                  |       D ]"  }t        j                  |      rt	        d       | S )Nr  z#array must not contain infs or NaNs)rb   rs  rc   r|  r~   )r.   r   r/   r  s      r'   rJ  z"np_asarray_chkfinite.<locals>.implw  sC    JJq#1A;;q> !FGG  r&   r-   )
rU   r   r   r  rX   r   r   r   r	   r   )r.   r   r   rJ  r  s       @r'   np_asarray_chkfiniter  h  s~     DCa%++u~~u{{CD#5WW	C%B K ( 	CABB	Cs   !A4 4B	c                    t        |t        t        j                  f      sd}t	        |      t        |       sd}t	        |      t        |t        j                  t        j                  f      s"t        j                  |      sd}t	        |      t        |t        t        j                  f      sd}t	        |      t        dd d       ft        |t        j                        r3t        j                  t        | j                        t        |            n7t        j                  t        | j                        t        j                         t        j"                  t        j$                        dfd	}|S )Nz&The argument "axis" must be an integerz#The argument "p" must be array-likez'The argument "discont" must be a scalarz&The argument "period" must be a scalarr*   c                    |dk7  rd}t        |      t        j                  |       j                        }|j                  }|d   }|j                  |j                  |z  |f      }||dz  }rt        |d      \  }	}
|
dk(  }n|dz  }	d}|	 }t        |j                  |z        D ];  }||   }t        j                  |      }t        j                  ||z
  |      |z   }|r t        j                  ||k(  |dkD  z  |	|      }||z
  }t        j                  t        j                  |D cg c]  }t        |       c}      |k  d|      }t        j                  t        j                  |D cg c]  }t        |       c}      |k  d|      }t        j
                  ||j                        }t        j                  |      }|   |j                         z   |<   |||<   > |j                  |      S c c}w c c}w )NrA  z*Value for argument "axis" is not supportedr|   r   T)r~   rb   rs  r  r   rD  r   divmodr3   r>  modr  r1  r[  r  r   )pdiscontrZ   periodr   p_init
init_shape	last_axisp_newinterval_highremboundary_ambiguousinterval_lowr/   rowddddmod
ph_correctr  ph_ravelupr   integer_inputslice1s                        r'   rJ  znumpy_unwrap.<locals>.impl  s   2:>CS/!A%%e,\\
rN	y 8)DE?qjG!'!2M3!$"QJM!%%~ v{{i/0A(CBFF2,f5DE!%<"7BF!C!.7J"((B+?BqCFB+?"@7"JA",.Jxx")="Q#a&")= > H! *,HHj.>.>?JBVz'8'8'::BvJE!H! 1$ }}Z(( ,@)=s   ,G90G>NrA  g-DT!@)rU   r  r   r  r   r
   r  r   r   r  r  rO   rb   r  r	   r   r   r  integer)	r  r  rZ   r  r   rJ  r   r  r  s	         @@@r'   numpy_unwrapr    s   dS%--016#A3#w <=''07#fuell346#AtT"$F&%,,'x0(62BCx0"**=MM%4M')R Kr&   c                     t        j                  d| z
  | d      }t        j                  t        j                  |d      d|| dz
  z  z   d|| dz
  z  z
        S )NrX  r|   r   r*   )rb   r  r  
less_equalr  rq  s     r'   np_bartlett_implr    sN    
		"q&!QA88BMM!Q'Q!a%[!a1q5k/JJr&   c                     t        j                  d| z
  | d      }ddt        j                  t         j                  |z  | dz
  z        z  z   dt        j                  dt         j                  z  |z  | dz
  z        z  z   S )NrX  r|   gzG?r   r*   g{Gz?r`  rb   r  cosrV  r  s     r'   np_blackman_implr    so    
		"q&!QA3	QU 3444266#+/QU3445 6r&   c                     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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rvvbeeai1q512222r&   c                       fd}|S )Nc                 \    t        | t        j                        st        d      fd}|S )NM must be an integerc                     | dk  r%t        j                  dt         j                        S | dk(  r%t        j                  dt         j                        S  |       S )Nr*   r%   r  )rb   r1  r   r  )r  funcs    r'   window_implz>window_generator.<locals>.window_overload.<locals>.window_impl  sD    1uxx"**55Avwwq

337Nr&   )rU   r   r  r   )r  r  r  s     r'   window_overloadz)window_generator.<locals>.window_overload  s*    !U]]+455	 r&   r%   )r  r  s   ` r'   window_generatorr    s     r&   )g4!\Tg}b3<gr넱g^<g"P
g'&&KF5=gbLag$ӛ/=gjzg<t̾=gVg4T&>g0Kg5dMv;p>g"c쑾g$>g'doҾgY(X?>gZY&+g|t(?gRBguZ?gI ^qga?g!Ng-Ί>?g-4pKgw?gWӿg*5N?)gT`g0fFVg!<gA`<gҫ`g8箸g}<g攐*<gbe~g2hϙ]'gE_V=gsk[=g&GCi=gfCg{~5g%t9QgO $=guo >g["d,->gmրVX>gna>g+A>gRx?gI墌k?g	b?c                 x    |d   }d}t        dt        |            D ]  }|}|}| |z  |z
  ||   z   } d|z
  z  S )Nr   r  r*   r   r}  )r  valsb0b1r/   b2s         r'   _chbevlr  >  sU    	aB	B1c$i Vb[47" !
 "r'?r&   c                     | dk  r|  } | dk  r.d| z  dz
  }t        j                  |       t        |t              z  S t        j                  |       t        d| z  dz
  t              z  t        j
                  |       z  S )Nr   g       @r   r`  g      @@)rb   expr  _i0A_i0Br  r   s     r'   _i0r  K  sm    1uBCx1WOvvay71d+++66!9wtax#~t44rwwqzAAr&   c           	      *   t        j                  | t         j                        }t        t        j                  |            }t	        t        |            D ]8  }t        |t        j                  d| |   |z
  |z  dz  z
        z        |z  ||<   : |S )Nr  r*   r`  )rb   r  r   r  r3   rF   r  )rq  alphabetar  tr/   s         r'   _i0nr  V  sz    
arzz*ABJJtA3q6]4"''!!u'=&C"CDDEI!  Hr&   c                     t        | t        j                        st        d      t        |t        j                  t        j                  f      st        d      d }|S )Nr   z beta must be an integer or floatc                     | dk  r%t        j                  dt         j                        S | dk(  r%t        j                  dt         j                        S t        j                  d|       }| dz
  dz  }t        |||      S )Nr*   r%   r  r   r`  )rb   r1  r   r  r  r  )r  r  rq  r  s       r'   np_kaiser_implz!np_kaiser.<locals>.np_kaiser_implh  se    q588Bbjj116771BJJ//IIaOQ#Aud##r&   )rU   r   r  r   r  )r  r  r  s      r'   	np_kaiserr  `  sL    a'011dU]]EKK89<==	$ r&   c                 f   d } ||       \  }}} ||      \  }}}	t        j                  ||	      t        j                  ||      z
  }
t        j                  ||      t        j                  ||	      z
  }t        j                  ||      t        j                  ||      z
  }|
|d<   ||d<   ||d<   y )Nc                     | d   }| d   }| j                   d   dk(  r| d   }n/t        j                  | j                  j	                  d      |      }|||fS )N.r   .r*   rA  r{   .r|   r   )r   rb   r  r   r   )r  x0r  x2s       r'   _cross_preprocessingz._cross_operation.<locals>._cross_preprocessingy  sU    vYvY772;!6BQWW\\!_b1B2rzr&   r  r  r  )rb   r  )r.   rn  r   r!  a0r  r  r  r	  r
  cp0cp1cp2s                r'   _cross_operationr&  v  s     &a(JBB%a(JBB
++b"
B 3
3C
++b"
B 3
3C
++b"
B 3
3CCKCKCKr&   c                      y r-   r%   r  s     r'   _crossr(    r4  r&   c                     t        j                  t        | j                        t        |j                              | j                  dk(  r|j                  dk(  rfd}|S fd}|S )Nr*   c                 N    t        j                  d      }t        | ||       |S )Nr{   )rb   r   r&  )r.   rn  cpr   s      r'   rJ  z_cross_impl.<locals>.impl  s$    $&BQ2&Ir&   c                     t        j                  | d   |d         j                  }t        j                  |dz         }t	        | ||       |S )Nr  r+  )rb   r  r   r   r&  )r.   rn  r   r,  r   s       r'   rJ  z_cross_impl.<locals>.impl  sF    FF1V9ai066E%$,.BQ2&Ir&   )rb   rs  r	   r   r}   )r.   rn  rJ  r   s      @r'   _cross_implr.    sT    Xagg.0ABEvv{qvv{	 K	
 Kr&   c                 N    t        |       rt        |      st        d      d }|S )NInputs must be array-like.c                 &   t        j                  |       }t        j                  |      }|j                  d   dvs|j                  d   dvrt        d      |j                  d   dk(  s|j                  d   dk(  rt	        ||      S t        d      )NrA  )r|   r{   zDIncompatible dimensions for cross product
(dimension must be 2 or 3)r{   zDimensions for both inputs is 2.
Please replace your numpy.cross(a, b) call with a call to `cross2d(a, b)` from `numba.np.extensions`.)rb   rs  r   r~   r(  r.   rn  r  r  s       r'   rJ  znp_cross.<locals>.impl  s    ZZ]ZZ]88B<v%"V)C- 
 88B<1 1"b>!H r&   r  r.   rn  rJ  s      r'   np_crossr4    s*    A&6q&96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&   )rb   r  rs  )r.   rn  r!  r"  r  r  r	  r,  s           r'   _cross2d_operationr7    sU    
 "!$FB!!$FB	R	r{{2r2	2B ::b>r&   c                      y r-   r%   r  s     r'   cross2dr9    r4  r&   c                 N    t        |       rt        |      st        d      d }|S )Nr0  c                     t        j                  |       }t        j                  |      }|j                  d   dk7  s|j                  d   dk7  rt        d      t	        ||      S )NrA  r|   zRIncompatible dimensions for 2D cross product
(dimension must be 2 for both inputs))rb   rs  r   r~   r7  r2  s       r'   rJ  zcross2d_impl.<locals>.impl  s\    ZZ]ZZ]88B<1 18  ""b))r&   r  r3  s      r'   cross2d_implr<    s*    A&6q&9677* Kr&   c                     t        | t        j                        st        d      | j                  dkD  rt        d      t        |t
        t        j                  f      st        d      dd}|S )Nz#The first argument must be an arrayr*   zarray must be 1Dz$The second argument must be a stringc                     t        j                  |       }d}|j                         }d|v r|D ]  }|dk7  r n|dz   } t        |       }d|v r|d d d   D ]  }|dk7  r n|dz
  } ||| S )Nr   r  r*   rn  rA  )rb   rs  r  rF   )filttrimr  firstr/   lasts         r'   rJ  znp_trim_zeros.<locals>.impl  s    ZZzz|$;6!AIE	 
 4y$;"X6!8D	 
 %~r&   fb)rU   r   r   r   r}   strUnicodeType)r?  r@  rJ  s      r'   np_trim_zerosrG    s`    dEKK(BCCyy1}/00dS%"3"345CDD& Kr&   r-   r~  r  r0  r   r  r  rf  r   r  r  rQ  r  r>  r  r  r  rC  (  __doc__r  collectionsr   r8  r_  llvmlite.irr9  numpyrb   
numba.corer   r   numba.core.extendingr   r   r   numba.np.numpy_supportr	   r
   r   r   r   r   r   r   numba.core.imputilsr   r   r   r   numba.np.arrayobjr   r   r   r   numba.np.linalgr   r   numba.core.errorsr   r   r   r   r   r    numba.cpython.unsafe.tupler!   r(   r  rK   r^   r  r   ru   rx   r   r5   	DTypeSpecIntegerLiteralr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   aminr  r  amaxr  r!  r&  r+  r,  r4  r9  r<  r>  r3  rL  rP  rQ  rV  rc  rd  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*  r0  r3  r6  r:  r>  rA  rJ  rV  rU  rX  rf  re  _partition_w_nan_argpartition_w_nanrl  rk  r  r  rn  rs  medianrx  r  r  r  r  r  r  r  r  r  nanpercentiler  quantiler  nanquantiler  	nanmedianr  r  r  r  	partitionr  rc  r  r  r  r  r  r  trilr  r  r  tril_indices_fromr  r  triur!  r(  r%  triu_indices_fromr*  r-  r5  r;  ediff1drL  rN  rT  rW  r]  trapzrg  rj  rl  vanderru  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  r1  r(  r'  fill_diagonalr2  r5  rA  rG  aroundrP  rS  round_rY  rZ  rb  re  r  r  r  r  r  r  r  r  r  r   r  r   r  containsr  count_nonzeror  r  r  deleter  r>  r  array_equalr  intersect1dr  r  r  r  r  r  r  r  r  r   r  r  r   r  r  r  digitizer-  r3   r:  r0  r?  r^  rQ  rt  r  ry  r  rj  rq  ru  rz  r  r  r  r  	correlater  convolver  rs  r  asfarrayr   r  extractr  selectr  union1dr  asarray_chkfiniter  unwrapr  r  r  r  r  r  bartlettblackmanhamminghanningr1  r  r  r  r  r  kaiserr  r&  r(  r.  crossr4  r7  r9  r<  
trim_zerosrG  r%   r&   r'   <module>r     sY  
  "     % L LM M MG G/ / ' *H H 5 ]
 %! %!P E! E!V rvvu{{#{EKK(E ) $E  >B rvvu{{EJJ@rvvu{{E$8$8%//J{EKKU__E{EKK)=)=uO$D P F K A$DN rvvu{{U__5{EKK9E : 6E rvvu{{EJJ/rvvu{{E$8$89{EKK4{EKK)=)=>%D ? 5 : 0%DP 
"''f% &  
"))h'! ( !. 
"**i(" ) ". 
"''f% & * 
"&&e$ %   
"&&e$ %        
"&&	"''e$, %  ,^ 
"&&	"''e$, %  ,^  *  *  & 
"))h' ( $  *  *  ")X 
"))h' ( $ 
"&&e$ %   2 
"++j)?, * ?,D 
"&&e$ %  
"**! !H
 
",,  
"))  
"// & 
",,  
"++ 
 
"++& &
 
"++& &
     P P
D 	E: u= "	D9 "t<
 2 2 
"**5 5p 
"))  
"))  
"** & 
")) 0 
"))  
")) * 
"** * 
"-- 0 
",, 0  (		 
.H H 
.H H	 
- . 
"&& 6 6'OEKK'/  .b 0;<
#$67J$KL &'9(  " ?:6
7 1A!BC$_5H%IJ     0 3 3 
"))  1 1h       F F
 B B
  ""4 
"--  
"

  
"++  
"..  
",, 0  (  *  D 
",, 0 
"//   6 	 	 
"&&
 
    > >
 
"''" "4 
"//
  
  
"


%  
% > >
 
"''" "2 
"//
  
  
"


%  
%	 
.1 1 " 
"**4 4n	 
/ 	 
&  
"(( * < <6 @ @ 
"))$" $"N 
"'' 2   A AH j jZ U Up 
"))% %V 	 	  0	 

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

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