
    Ph/                       d Z ddlmZ ddlZddlmZ ddlZddlmZm	Z	 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   )_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        hC:\Users\daisl\Desktop\realtime-object-detection\venv\Lib\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,   /   s9     }##u'7'7**,888Lr    F)keepdimsc               $    | j                  |      S r!   )count_nonzero)r   r   r-   s      r   r/   r/   =   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   r8   r8   B   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=r1   )
r'   r2   r*   r   r3   r4   r5   r6   r7   argminr9   s       r   r=   r=   V   r;   r    )wherec               h    t        j                  |      }|i nd|i}t        j                  | fi |S Ndim)r   r3   r4   anyr   r   r:   r-   r>   axis_kws         r   rB   rB   j   7     ''-DLbudmG99Q"'""r    c               h    t        j                  |      }|i nd|i}t        j                  | fi |S r@   )r   r3   r4   allrC   s         r   rG   rG   x   rE   r    c                t    | j                         rt        d| j                         | j                  |      S )Nzamax with dtype=)r'   r2   r*   amaxr   r   r:   r-   initialr>   s         r   rI   rI      2     	||~!$4QWWI">??66$<r    c                t    | j                         rt        d| j                         | j                  |      S )Nzamin with dtype=)r'   r2   r*   aminrJ   s         r   rN   rN      rL   r    c                H    | j                  |      | j                  |      z
  S r!   )rI   rN   r9   s       r   ptprP      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 NrA   r*   r   )
isinstancer4   r*   r5   r   r(   	int_dtypesumr   r   r*   r:   r-   rK   r>   rD   s           r   rU   rU      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 rR   )r   r3   r4   r5   r   r(   rT   prodrV   s           r   rX   rX      s\     ''-D

++-77LbudmG166))))r    c               j    t        || j                        }|i nd|i} | j                  dd|i|}|S rR   )r,   r*   mean)r   r   r*   r:   r-   r>   rD   results           r   rZ   rZ      s@     5!''*ELbudmGQVV+%+7+FMr    c                   |}t        || j                        }t        j                  | |      }|j	                  ||      }	t        j                  |	|      S N)rA   
correction)r,   r*   r   cast_if_neededstd
r   r   r*   r:   ddofr-   r>   in_dtypetensorr[   s
             r   r`   r`      P     H5!''*E!!!U+FZZDTZ2F11r    c                   |}t        || j                        }t        j                  | |      }|j	                  ||      }	t        j                  |	|      S r]   )r,   r*   r   r_   varra   s
             r   rg   rg     re   r    c                   |t         j                  k(  rt        j                         j                  }|| j
                  }t        j                  | |      \  \  } }t        j                  || j                        }| j                  ||      S Nr   )r   r*   )r4   r5   r   r(   rT   r*   r   axis_none_flattennormalize_axis_indexr   cumsumr   r   r*   r:   s       r   rl   rl     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 ri   )r4   r5   r   r(   rT   r*   r   rj   rk   r   cumprodrm   s       r   ro   ro   )  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   )rZ   r4   	as_tensornumelr*   r&   doubler   	TypeErrorr   
ValueErrorbroadcast_toswapaxesr   result_type_implrU   r   apply_keepdimsclone)	r   r   weightsreturnedr-   r[   wsumresult_dtype	numerators	            r   averager   =  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)   r6   r4   float16float32flattenr   r   r   r3   r_   quantile)	r   qr   r:   overwrite_inputmethodr-   r   r*   s	            r   r   r   r  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*   intr6   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   r4   rr   )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   rK   r   r>   r   )NNNFNN)r   r   r   r	   r*   Optional[DTypeLike]r:   r   r-   r   rK   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   r4    r   r   _normalizationsr   r	   r
   r   r   r   r$   r,   r/   r8   r=   rB   rG   rI   maxrN   minrP   rU   rX   productrZ   r`   rg   rl   ro   
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    