Ë
    ÄÓ^jC.  ã                  óÚ  — 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	 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)Ú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        €úh/var/www/ramen.bs-engineer-server.com/venv/lib/python3.12/site-packages/torch/_numpy/_reductions_impl.pyÚwrappedz"_deco_axis_expand.<locals>.wrapped$   sh   ø€ àÐÜ×-Ñ-¨d°A·F±FÓ;ˆDà�2Š:ô ×)Ñ)¨!¯'©'¸Ô:ˆHØ—	‘	˜(Ó#ˆAØˆDá�A�tÐ+˜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,   5   s9   € ð €}ØˆØ×#Ò# u×'7Ò'7Ü×*Ñ*Ó,×8Ñ8Ð8Ø€Lr    F)Úkeepdimsc               ó$   — | j                  |«      S r!   )Úcount_nonzero)r   r   r-   s      r   r/   r/   C   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   H   ói   € ð 	‡|�|„~Ü!Ð$6°q·w±w°i¸qÐ"AÓBÐBä×'Ñ'¨Ó-€Dà‡w�w”%—*‘*Òà�D‰D”—‘Óˆä�<‰<˜˜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=   \   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   p   ó7   € ô ×'Ñ'¨Ó-€DØ�L‰b u¨d m€GÜ�9‰9�QÑ"˜'Ñ"Ð"r    c               óh   — t        j                  |«      }|€i nd|i}t        j                  | fi |¤ŽS r@   )r   r3   r4   ÚallrC   s         r   rG   rG   ~   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   € ð 	‡|�|„~Ü!Ð$4°Q·W±W°IÐ">Ó?Ð?à�6‰6�$‹<Ð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   € ð �6‰6�$‹<˜!Ÿ&™& ›,Ñ&Ð&r    c                ó  — |�;t        |t        j                  «      s!t        dt	        |«      j
                  › �«      ‚|t        j                  k(  rt        j                  «       j                  }|€i nd|i} | j                  dd|i|¤ŽS )Nz)dtype must be None or a torch.dtype, got rA   r*   r   )Ú
isinstancer4   r*   ÚAssertionErrorÚtypeÚ__name__r5   r   r(   Ú	int_dtypeÚsum©r   r   r*   r:   r-   rK   r>   rD   s           r   rW   rW   º   sƒ   € ð Ð¤¨E´5·;±;Ô!?ÜØ7¼¸U»×8LÑ8LÐ7MÐNó
ð 	
ð ”—
‘
ÒÜ×+Ñ+Ó-×7Ñ7ˆà�L‰b u¨d m€GØˆ1�5‰5Ñ(�uÐ( Ñ(Ð(r    c                óÆ   — t        j                  |«      }|t        j                  k(  rt	        j
                  «       j                  }|€i nd|i} | j                  dd|i|¤ŽS ©NrA   r*   r   )r   r3   r4   r5   r   r(   rV   ÚprodrX   s           r   r[   r[   Ð   s\   € ô ×'Ñ'¨Ó-€Dà”—
‘
ÒÜ×+Ñ+Ó-×7Ñ7ˆà�L‰b u¨d m€GØˆ1�6‰6Ñ)˜Ð) Ñ)Ð)r    c               ój   — t        || j                  «      }|€i nd|i} | j                  dd|i|¤Ž}|S rZ   )r,   r*   Úmean)r   r   r*   r:   r-   r>   rD   Úresults           r   r]   r]   æ   s@   € ô ˜5 !§'¡'Ó*€Eà�L‰b u¨d m€GØˆQ�V‰VÑ+˜%Ð+ 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   rc   rc   ø   óP   € ð €HÜ˜5 !§'¡'Ó*€EÜ×!Ñ! ! UÓ+€FØ�Z‰Z˜D¨TˆZÓ2€FÜ×Ñ ¨Ó1Ð1r    c               ó°   — |}t        || j                  «      }t        j                  | |«      }|j	                  ||¬«      }	t        j                  |	|«      S r`   )r,   r*   r   rb   Úvarrd   s
             r   rj   rj   
  rh   r    c                ó  — |t         j                  k(  rt        j                  «       j                  }|€| j
                  }t        j                  | |¬«      \  \  } }t        j                  || j                  «      }| j                  ||¬«      S ©Nr   )r   r*   )r4   r5   r   r(   rV   r*   r   Úaxis_none_flattenÚnormalize_axis_indexr   Úcumsum©r   r   r*   r:   s       r   ro   ro   !  ss   € ð ”—
‘
ÒÜ×+Ñ+Ó-×7Ñ7ˆØ€}Ø—‘ˆä×(Ñ(¨°Ô6�J�D€Qˆ$Ü×%Ñ% d¨A¯F©FÓ3€Dà�8‰8˜ Uˆ8Ó+Ð+r    c                ó  — |t         j                  k(  rt        j                  «       j                  }|€| j
                  }t        j                  | |¬«      \  \  } }t        j                  || j                  «      }| j                  ||¬«      S rl   )r4   r5   r   r(   rV   r*   r   rm   rn   r   Úcumprodrp   s       r   rr   rr   2  ss   € ð ”—
‘
ÒÜ×+Ñ+Ó-×7Ñ7ˆØ€}Ø—‘ˆä×(Ñ(¨°Ô6�J�D€Qˆ$Ü×%Ñ% d¨A¯F©FÓ3€Dà�9‰9˜$ eˆ9Ó,Ð,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]   r4   Ú	as_tensorÚnumelr*   r&   Údoubler   Ú	TypeErrorr   Ú
ValueErrorÚbroadcast_toÚswapaxesr   Úresult_type_implrW   r   Úapply_keepdimsÚclone)	r   r   ÚweightsÚreturnedr-   r^   ÚwsumÚresult_dtypeÚ	numerators	            r   Úaverager„   F  sš  € ð €Ü�a˜dÔ#ˆÜ�‰˜qŸw™w›y¨6¯<©<«>Ñ9ÀÇÁÔNŠà�w‰w×(Ò(Ø—‘“
ˆAð �7‰7�g—m‘mÒ#Øˆ|ÜØQóð ð �|‰|˜qÒ ÜØNóð ð �}‰}˜QÑ 1§7¡7¨4¡=Ò0Ü ØKóð ô
 ×(Ñ(¨°1·6±6¸A±:ÀÑ2EÈÏÉÑ2UÓVˆGØ×&Ñ& r¨4Ó0ˆGô $×4Ñ4°Q¸Ó@ˆÜ˜˜G™ T°Ô>ˆ	Ü�7˜D¨Ô5ˆØ˜TÑ!ˆñ Ü×%Ñ% f¨d°A·F±FÓ;ˆáØ�:‰:˜Ÿ™Ò%Ü×%Ñ% d¨F¯L©LÓ9×?Ñ?ÓAˆDØ�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   rb   Úquantile)	r   Úqr   r:   Úoverwrite_inputÚmethodr-   r…   r*   s	            r   rŠ   rŠ   {  sÑ   € ñ ð
 	à�7‰7×$Ò$Ü×+Ñ+Ó-×9Ñ9ˆØ�D‰D�‹Kˆð 	‡w�w”%—-‘-ÒØ�D‰D”—‘Óˆà€|Ø�I‰I‹KˆØ�I‰I‹KˆØ‰ä×)Ñ)¨$°·±Ó7ˆô
 ×'Ñ'¨Ó-€Dä×Ñ˜Q §¡Ó(€Aä�>‰>˜!˜Q T¸Ô@Ð@r    c          	     óÔ   — t        j                  |j                  «      t        u 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   € ô ×)Ñ)¨!¯'©'Ó2´cÑ9Ø�D‰D”×,Ñ,Ó.×:Ñ:Ó;ˆØ	
ˆU‰€BäØ	Ø
ØØ'ØØØ#ôð r    c                óJ   — t        | t        j                  d«      ||||¬«      S )Ng      à?)r   rŒ   r:   r-   )rŠ   r4   ru   )r   r   r:   rŒ   r-   s        r   Úmedianr”   Á  s,   € ô Ø	Ü�‰˜ÓØØ'ØØôð r    r!   )r   r   r   r	   r-   r   )NN)r   r   r   r	   r:   úOutArray | Noner-   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*   úDTypeLike | Noner:   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   rW   r[   Úproductr]   rc   rj   ro   rr   Ú
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ó ð2ð0 Ø"Øð	,Øð,à
ð,ð ð,ð 
ó	,ð& Ø"Øð	-Øð-à
ð-ð ð-ð 
ó	-ð" €
ð
 
ØØð	1ð ñ1Øð1ð ó1ðp ØØØØð(Að )-ñ(AØð(Aàð(Að ð(Að 
ð	(Að ð(Að &ó(Að\ ØØØØðð )-ñØðàðð ðð 
ð	ð ðð &óð: 
ØØØðØðð 
ðð
 ôr    