+
    :i                     F    R t ^ RIt^ RIHt ^t]! RR.4      tRR ltR tR# )z
The same algorithm as translated from numpy.
See numpy/core/src/npysort/mergesort.c.src.
The high-level numba code is adding a little overhead comparing to
the pure-C implementation in numpy.
N)
namedtupleMergesortImplementationrun_mergesortc                 \  aaa \        R RR7      pSf   V ! R/ VB R 4       oMV ! R/ VB ! S4      oV'       d   V ! R/ VB V3R l4       oMV ! R/ VB V3R l4       oV ! R/ VB VV3R l4       oV ! R R7      V3R l4       pV ! R R7      V3R	 l4       p\        V'       d   VR
7      # TR
7      # )TF)no_cpython_wrapper_nrtc                 
    W8  # N )abs   &&R/var/www/html/photoedit/myenv/lib/python3.14/site-packages/numba/misc/mergesort.pyltmake_mergesort_impl.<locals>.lt   s	    5L    c                 .   < S! W ,          W!,          4      # r	   r
   r   r   valsr   s   &&&r   lessthan%make_mergesort_impl.<locals>.lessthan   s    dgtw''r   c                    < S! W4      # r	   r
   r   s   &&&r   r   r   #   s    a8Or   c                f  < V P                   \        8  Ed#   V P                   ^,          pS
! V RV W4       S
! WR W4       \        V4       F  pW,          W$&   K  	  VRV pWR pT p^ ;p;rWEP                   8  d_   WP                   8  dO   S! Wh,          WT,          V4      '       g   WT,          Wy&   V^,          pMWh,          Wy&   V^,          pV	^,          p	Kn  WEP                   8  d   WT,          Wy&   V^,          pV	^,          p	K.  WP                   8  d   Wh,          Wy&   V^,          pV	^,          p	K.  R# ^pW@P                   8  df   TpV^ 8  dR   S! W,          W^,
          ,          V4      '       d/   W,          W^,
          ,          uW^,
          &   W&   V^,          pKX  V^,          pKu  R# )aG  The actual mergesort function

Parameters
----------
arr : array [read+write]
    The values being sorted inplace.  For argsort, this is the
    indices.
vals : array [readonly]
    ``None`` for normal sort.  In argsort, this is the actual array values.
ws : array [write]
    The workspace.  Must be of size ``arr.size // 2``
N)sizeSMALL_MERGESORTrange)arrr   wsmidileftrightoutjkargmergesort_innerr   s   &&&       r   r$   /make_mergesort_impl.<locals>.argmergesort_inner'   s    88o%((a-Cs4Cy$3s4y$3 3Z   ds8DIECMAMii-A

N$'488!WCFFA"XCFFAQ ii-QQjj.QQ ! Ahh,!eUT B B),U&CAJFAQ r   )r   c                   < \         P                  ! V P                  ^,          V P                  R7      pS! V RV4       V # )InplacedtypeN)npemptyr   r)   )r   r   r$   s   & r   	mergesort&make_mergesort_impl.<locals>.mergesorte   s2     XXchh!m39953b)
r   c                   < \         P                  ! V P                  4      p\         P                  ! V P                  ^,          VP                  R7      pS! WV4       V# )zOut-of-placer(   )r*   aranger   r+   r)   )r   idxsr   r$   s   &  r   argmergesort)make_mergesort_impl.<locals>.argmergesortm   sB     yy"XXchh!m4::64b)r   )r   r
   )dictr   )wrapr   
is_argsortkwargs_liter,   r1   r$   r   s   &f&   @@r   make_mergesort_implr7      s    $U;K 
z				 
	  K $				( 
	( 
			 
	 
K9 9z 
T" # 
T" # #'1|
 
7@
 
r   c                  ,    ^ RI Hp \        V.V O5/ VB # )    )njit)numbar:   r7   )argskwargsr:   s   *, r   make_jit_mergesortr>   z   s     t5d5f55r   )NF)	__doc__numpyr*   collectionsr   r   r   r7   r>   r
   r   r   <module>rB      s>     "  %%>A  
d
N6r   