
    sg.                       d Z ddlmZ ddlZddlmZmZ ddlZddlm	Z	m
Z
 erddlmZmZmZmZmZmZ d Zd	 Zed!d
dd"d       Ze	 	 d#d
d	 	 	 	 	 	 	 d$d       Ze	 	 d#d
d	 	 	 	 	 	 	 d$d       Ze	 	 	 d%dd	 	 	 	 	 	 	 	 	 d&d       Ze	 	 	 d%dd	 	 	 	 	 	 	 	 	 d&d       Ze	 	 	 	 	 d'	 	 	 	 	 	 	 	 	 	 	 d(d       ZeZe	 	 	 	 	 d'	 	 	 	 	 	 	 	 	 	 	 d(d       ZeZe	 	 	 d%	 	 	 	 	 	 	 d$d       Ze	 	 	 	 	 	 d)	 	 	 	 	 	 	 	 	 	 	 	 	 d*d       Ze	 	 	 	 	 	 d)	 	 	 	 	 	 	 	 	 	 	 	 	 d*d       ZeZ e	 	 	 	 d+dd	 	 	 	 	 	 	 	 	 	 	 d,d       Z!e	 	 	 	 	 d-dd	 	 	 	 	 	 	 	 	 	 	 d,d       Z"e	 	 	 	 	 d-dd	 	 	 	 	 	 	 	 	 	 	 d,d       Z#	 	 	 d.	 	 	 	 	 	 	 d/dZ$	 	 	 d.	 	 	 	 	 	 	 d/dZ%e%Z&	 	 	 d%d
d	 	 	 d0dZ'	 	 	 	 	 d1dd	 	 	 	 	 	 	 	 	 	 	 d2dZ(	 	 	 	 	 d1dd	 	 	 	 	 	 	 	 	 	 	 d2dZ)	 	 	 	 d3	 	 	 	 	 d4d Z*y)5z Implementation of reduction operations, to be wrapped into arrays, dtypes etc
in the 'public' layer.

Anything here only deals with torch objects, e.g. "dtype" is a torch.dtype instance etc
    )annotationsN)OptionalTYPE_CHECKING   )_dtypes_impl_util)	ArrayLikeAxisLike	DTypeLikeKeepDimsNotImplementedTypeOutArrayc                D     t        j                         d fd	       }|S )z
    Generically handle axis arguments in reductions.
    axis is *always* the 2nd arg in the function so no need to have a look at its signature
    c                    | t        j                  || j                        }|dk(  r4t        j                  | j                  d      }| j                  |      } d} | |g|i |S )N r   axisr   )r   normalize_axis_tuplendimexpand_shapeshapereshape)ar   argskwdsnewshapefuncs        P/var/www/html/venv/lib/python3.12/site-packages/torch/_numpy/_reductions_impl.pywrappedz"_deco_axis_expand.<locals>.wrapped#   sh    --dAFF;D2: ))!'':H		(#ADAt+d+d++    N)	functoolswraps)r   r    s   ` r   _deco_axis_expandr%      s'     __T, , Nr!   c                z    | |} | j                   s*| j                  st        j                         j                  S | S )a$  Return a dtype that is real or complex floating-point.

    For inputs that are boolean or integer dtypes, this returns the default
    float dtype; inputs that are complex get converted to the default complex
    dtype; real floating-point dtypes (`float*`) get passed through unchanged
    )is_floating_point
is_complexr   default_dtypesfloat_dtype)dtypeother_dtypes     r   _atleast_floatr-   4   s9     }##u'7'7**,888Lr!   F)keepdimsc               $    | j                  |      S r"   )count_nonzero)r   r   r.   s      r   r0   r0   B   s    ??4  r!   c               "   | j                         rt        d| j                   d      t        j                  |      }| j                  t
        j                  k(  r| j                  t
        j                        } t        j                  | |      S )Nzargmax with dtype=.)
r(   NotImplementedErrorr+   r   allow_only_single_axistorchbooltouint8argmaxr   r   outr.   s       r   r9   r9   G   i     	||~!$6qwwiq"ABB''-Dww%**DD<<4  r!   c               "   | j                         rt        d| j                   d      t        j                  |      }| j                  t
        j                  k(  r| j                  t
        j                        } t        j                  | |      S )Nzargmin with dtype=r2   )
r(   r3   r+   r   r4   r5   r6   r7   r8   argminr:   s       r   r>   r>   [   r<   r!   )wherec               h    t        j                  |      }|i nd|i}t        j                  | fi |S Ndim)r   r4   r5   anyr   r   r;   r.   r?   axis_kws         r   rC   rC   o   7     ''-DLbudmG99Q"'""r!   c               h    t        j                  |      }|i nd|i}t        j                  | fi |S rA   )r   r4   r5   allrD   s         r   rH   rH   }   rF   r!   c                t    | j                         rt        d| j                         | j                  |      S )Nzamax with dtype=)r(   r3   r+   amaxr   r   r;   r.   initialr?   s         r   rJ   rJ      2     	||~!$4QWWI">??66$<r!   c                t    | j                         rt        d| j                         | j                  |      S )Nzamin with dtype=)r(   r3   r+   aminrK   s         r   rO   rO      rM   r!   c                H    | j                  |      | j                  |      z
  S r"   )rJ   rO   r:   s       r   ptprQ      s     66$<!&&,&&r!   c                    |t        |t        j                        sJ |t        j                  k(  rt	        j
                         j                  }|i nd|i} | j                  dd|i|S NrB   r+   r   )
isinstancer5   r+   r6   r   r)   	int_dtypesumr   r   r+   r;   r.   rL   r?   rE   s           r   rV   rV      sd     =Juekk:::

++-77LbudmG155(u(((r!   c                    t        j                  |      }|t        j                  k(  rt	        j
                         j                  }|i nd|i} | j                  dd|i|S rS   )r   r4   r5   r6   r   r)   rU   prodrW   s           r   rY   rY      s\     ''-D

++-77LbudmG166))))r!   c               j    t        || j                        }|i nd|i} | j                  dd|i|}|S rS   )r-   r+   mean)r   r   r+   r;   r.   r?   rE   results           r   r[   r[      s@     5!''*ELbudmGQVV+%+7+FMr!   c                   |}t        || j                        }t        j                  | |      }|j	                  ||      }	t        j                  |	|      S N)rB   
correction)r-   r+   r   cast_if_neededstd
r   r   r+   r;   ddofr.   r?   in_dtypetensorr\   s
             r   ra   ra      P     H5!''*E!!!U+FZZDTZ2F11r!   c                   |}t        || j                        }t        j                  | |      }|j	                  ||      }	t        j                  |	|      S r^   )r-   r+   r   r`   varrb   s
             r   rh   rh     rf   r!   c                   |t         j                  k(  rt        j                         j                  }|| j
                  }t        j                  | |      \  \  } }t        j                  || j                        }| j                  ||      S Nr   )r   r+   )r5   r6   r   r)   rU   r+   r   axis_none_flattennormalize_axis_indexr   cumsumr   r   r+   r;   s       r   rm   rm     ss     

++-77}((6JDQ$%%dAFF3D88U8++r!   c                   |t         j                  k(  rt        j                         j                  }|| j
                  }t        j                  | |      \  \  } }t        j                  || j                        }| j                  ||      S rj   )r5   r6   r   r)   rU   r+   r   rk   rl   r   cumprodrn   s       r   rp   rp   .  ss     

++-77}((6JDQ$%%dAFF3D99$e9,,r!   c                  |Ot        | |      }t        j                  | j                         |j                         z  |j                        }n| j                  j
                  s| j                         } | j                  |j                  k7  r|t        d      |j                  dk7  rt        d      |j                  d   | j                  |   k7  rt        d      t        j                  || j                  dz
  dz  |j                  z         }|j                  d	|      }t        j                  | |      }t        | |z  ||      }t        |||      }||z  }|r!t!        j"                  ||| j                        }|rK|j                  |j                  k7  r.t        j                  ||j                        j%                         }||fS |S )
Nr   )r+   z;Axis must be specified when shapes of a and weights differ.r   z81D weights expected when shapes of a and weights differ.r   z5Length of weights not compatible with specified axis.)r   )r[   r5   	as_tensornumelr+   r'   doubler   	TypeErrorr   
ValueErrorbroadcast_toswapaxesr   result_type_implrV   r   apply_keepdimsclone)	r   r   weightsreturnedr.   r\   wsumresult_dtype	numerators	            r   averager   B  s    ad#qwwy6<<>9Nww((
A 77gmm#|Q  ||q N  }}Q1774=0 K 
 ((166A:2E2UVG&&r40G $44Q@GT>	7D5T! %%fdAFF;::%%%dFLL9??ADt|r!   )interpolationc               0   |r	 | j                   j                  s/t        j                         j                  }| j                  |      } | j                   t        j                  k(  r| j                  t        j                        } |#| j                         } |j                         }d}n t        j                  || j                        }t        j                  |      }t        j                  || j                         }t        j                  | |||      S )Nr   )r   r   )r+   r'   r   r)   r*   r7   r5   float16float32flattenr   r   r   r4   r`   quantile)	r   qr   r;   overwrite_inputmethodr.   r   r+   s	            r   r   r   w  s     
 	77$$++-99DDK 	ww%--DD|IIKIIK))$7
 ''-DQ(A>>!QT@@r!   c          	         t        j                  |j                        t        k(  r-|j	                  t        j
                         j                        }|dz  }t        | ||||||      S )Ng      Y@)r   r   r   r.   r   )r   python_type_for_torchr+   intr7   r)   r*   r   )	r   r   r   r;   r   r   r.   r   qqs	            r   
percentiler     sc     ))!''2c9DD,,.::;	
UB	
'# r!   c                J    t        | t        j                  d      ||||      S )Ng      ?)r   r   r;   r.   )r   r5   rs   )r   r   r;   r   r.   s        r   medianr     s,     	' r!   r"   )r   r	   r   r
   r.   r   )NN)r   r	   r   r
   r;   Optional[OutArray]r.   r   )NNF)
r   r	   r   r
   r;   r   r.   r   r?   r   )NNFNN)r   r	   r   r
   r;   r   r.   r   rL   r   r?   r   )NNNFNN)r   r	   r   r
   r+   Optional[DTypeLike]r;   r   r.   r   rL   r   r?   r   )NNNF)r   r	   r   r
   r+   r   r;   r   r.   r   r?   r   )NNNr   F)NNN)r   r	   r   r
   r+   r   r;   r   )r   r	   r}   r	   )NNFlinearF)r   r	   r   r	   r   r
   r;   r   r.   r   r   r   )NNFF)r   r	   r;   r   r.   r   )+__doc__
__future__r   r#   typingr   r   r5    r   r   _normalizationsr	   r
   r   r   r   r   r%   r-   r0   r9   r>   rC   rH   rJ   maxrO   minrQ   rV   rY   productr[   ra   rh   rm   rp   
cumproductr   r   r   r   r   r!   r   <module>r      s-  
 #  *  !  . !u ! !  "!
 !!
! 
!
 ! !&  "!
 !!
! 
!
 ! !&  "	
# !%
#
#

# 

# 	
# 
# 
#  "	
# !%
#
#

# 

# 	
# 
# 
#  ""& $
 
 	
       ""& $
 
 	
       "	''
' 
' 	' '  !%""& $))
) ) 
	)
 )  ) ) )$  !%""& $**
* * 
	*
 *  * * *$   !%" !%
  
	
   "  !%"	
2 !%22
2 2 
	2 2 2 2"  !%"	
2 !%22
2 2 
	2 2 2 20 !%"	,,
, , 
	,& !%"	--
- - 
	-" 

 
	1 11 1p "(A )-(A(A(A (A 
	(A (A &(A\ " )-  
	  &: 
" 

 r!   