ó
    Eñi•.  ã                  óJ  • S r SSKJr  SSKrSSKJrJr  SSKrSSKJ	r	J
r
  \(       a  SSKJrJrJrJrJrJr  S rS	 r\S!S
S.S"S jjj5       r\  S#S
S.       S$S jjj5       r\  S#S
S.       S$S jjj5       r\   S%SS.         S&S jjj5       r\   S%SS.         S&S jjj5       r\     S'           S(S jj5       r\r\     S'           S(S jj5       r\r\   S%       S$S jj5       r\      S)             S*S jj5       r\      S)             S*S jj5       r\r \    S+SS.           S,S jjj5       r!\     S-SS.           S,S jjj5       r"\     S-SS.           S,S jjj5       r#   S.       S/S jjr$   S.       S/S jjr%\%r&   S%S
S.   S0S jjjr'     S1SS.           S2S jjjr(     S1SS.           S2S jjjr)    S3     S4S  jjr*g)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                óJ   ^ • [         R                  " T 5      SU 4S jj5       nU$ )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                óÒ   >• Ub   [         R                  " XR                  5      nUS:X  a2  [         R                  " U R                  SS9nU R                  U5      n SnT" X/UQ70 UD6$ )N© r   ©Úaxis©r   )r   Únormalize_axis_tupleÚndimÚexpand_shapeÚshapeÚreshape)Úar   ÚargsÚkwdsÚnewshapeÚfuncs        €ÚZ/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_numpy/_reductions_impl.pyÚwrappedÚ"_deco_axis_expand.<locals>.wrapped$   sd   ø€ àÑÜ×-Ò-¨d·F±FÓ;ˆDà�2‹:ô ×)Ò)¨!¯'©'¸Ñ:ˆHØ—	‘	˜(Ó#ˆAØˆDá�AÐ+˜dÒ+ dÑ+Ð+ó    ©N)Ú	functoolsÚwraps)r   r    s   ` r   Ú_deco_axis_expandr&      s'   ø€ ô ‡_‚_�TÓö,ó ð,ð €Nr"   c                ó’   • U c  Un U R                   (       d0  U R                  (       d  [        R                  " 5       R                  $ U $ )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               ó$   • U R                  U5      $ r#   )Úcount_nonzero)r   r   r/   s      r   r1   r1   C   s   € à�?‰?˜4Ó Ð r"   c               ó0  • U R                  5       (       a  [        SU R                   S35      e[        R                  " U5      nU R                  [
        R                  :X  a  U R                  [
        R                  5      n [
        R                  " X5      $ )Nzargmax with dtype=Ú.)
r)   ÚNotImplementedErrorr,   r   Úallow_only_single_axisÚtorchÚboolÚtoÚuint8Úargmax©r   r   Úoutr/   s       r   r:   r:   H   ói   € ð 	‡|�|‡~�~Ü!Ð$6°q·w±w°i¸qÐ"AÓBÐBä×'Ò'¨Ó-€Dà‡w�w”%—*‘*Óà�D‰D”—‘Óˆä�<Š<˜Ó Ð r"   c               ó0  • U R                  5       (       a  [        SU R                   S35      e[        R                  " U5      nU R                  [
        R                  :X  a  U R                  [
        R                  5      n [
        R                  " X5      $ )Nzargmin with dtype=r3   )
r)   r4   r,   r   r5   r6   r7   r8   r9   Úargminr;   s       r   r?   r?   \   r=   r"   )Úwherec               ón   • [         R                  " U5      nUc  0 OSU0n[        R                  " U 40 UD6$ ©NÚdim)r   r5   r6   Úany©r   r   r<   r/   r@   Úaxis_kws         r   rD   rD   p   ó7   € ô ×'Ò'¨Ó-€DØ‘L‰b u¨d m€GÜ�9Š9�QÑ"˜'Ñ"Ð"r"   c               ón   • [         R                  " U5      nUc  0 OSU0n[        R                  " U 40 UD6$ rB   )r   r5   r6   ÚallrE   s         r   rI   rI   ~   rG   r"   c                ó~   • U R                  5       (       a  [        SU R                   35      eU R                  U5      $ )Nzamax with dtype=)r)   r4   r,   Úamax©r   r   r<   r/   Úinitialr@   s         r   rK   rK   Œ   ó4   € ð 	‡|�|‡~�~Ü!Ð$4°Q·W±W°IÐ">Ó?Ð?à�6‰6�$‹<Ðr"   c                ó~   • U R                  5       (       a  [        SU R                   35      eU R                  U5      $ )Nzamin with dtype=)r)   r4   r,   ÚaminrL   s         r   rP   rP   ž   rN   r"   c                óH   • U R                  U5      U R                  U5      -
  $ r#   )rK   rP   r;   s       r   ÚptprR   °   s   € ð �6‰6�$‹<˜!Ÿ&™& ›,Ñ&Ð&r"   c                ó(  • Ub@  [        U[        R                  5      (       d!  [        S[	        U5      R
                   35      eU[        R                  :X  a  [        R                  " 5       R                  nUc  0 OSU0nU R                  " SSU0UD6$ )Nz)dtype must be None or a torch.dtype, got rC   r,   r   )Ú
isinstancer6   r,   ÚAssertionErrorÚtypeÚ__name__r7   r   r*   Ú	int_dtypeÚsum©r   r   r,   r<   r/   rM   r@   rF   s           r   rY   rY   º   s„   € ð Ñ¤¨E´5·;±;×!?Ñ!?ÜØ7¼¸U»×8LÑ8LÐ7MÐNó
ð 	
ð ”—
‘
ÓÜ×+Ò+Ó-×7Ñ7ˆà‘L‰b u¨d m€GØ�5Š5Ñ(�uÐ( Ñ(Ð(r"   c                óÎ   • [         R                  " U5      nU[        R                  :X  a  [        R
                  " 5       R                  nUc  0 OSU0nU R                  " SSU0UD6$ ©NrC   r,   r   )r   r5   r6   r7   r   r*   rX   ÚprodrZ   s           r   r]   r]   Ð   sZ   € ô ×'Ò'¨Ó-€Dà”—
‘
ÓÜ×+Ò+Ó-×7Ñ7ˆà‘L‰b u¨d m€GØ�6Š6Ñ)˜Ð) Ñ)Ð)r"   c               ój   • [        X R                  5      nUc  0 OSU0nU R                  " SSU0UD6nU$ r\   )r.   r,   Úmean)r   r   r,   r<   r/   r@   rF   Úresults           r   r_   r_   æ   s<   € ô ˜5§'¡'Ó*€Eà‘L‰b u¨d m€GØ�VŠVÑ+˜%Ð+ 7Ñ+€Fà€Mr"   c               ó¦   • Un[        X R                  5      n[        R                  " X5      nUR	                  XS9n	[        R                  " X—5      $ ©N)rC   Ú
correction)r.   r,   r   Úcast_if_neededÚstd©
r   r   r,   r<   Úddofr/   r@   Úin_dtypeÚtensorr`   s
             r   re   re   ø   óH   € ð €HÜ˜5§'¡'Ó*€EÜ×!Ò! !Ó+€FØ�Z‰Z˜DˆZÐ2€FÜ×Ò Ó1Ð1r"   c               ó¦   • Un[        X R                  5      n[        R                  " X5      nUR	                  XS9n	[        R                  " X—5      $ rb   )r.   r,   r   rd   Úvarrf   s
             r   rl   rl   
  rj   r"   c                ó  • U[         R                  :X  a  [        R                  " 5       R                  nUc  U R
                  n[        R                  " XS9u  u  p[        R                  " XR                  5      nU R                  XS9$ ©Nr   )r   r,   )r6   r7   r   r*   rX   r,   r   Úaxis_none_flattenÚnormalize_axis_indexr   Úcumsum©r   r   r,   r<   s       r   rq   rq   !  sk   € ð ”—
‘
ÓÜ×+Ò+Ó-×7Ñ7ˆØ�}Ø—‘ˆä×(Ò(¨Ñ6�J�D€QÜ×%Ò% d¯F©FÓ3€Dà�8‰8˜ˆ8Ð+Ð+r"   c                ó  • U[         R                  :X  a  [        R                  " 5       R                  nUc  U R
                  n[        R                  " XS9u  u  p[        R                  " XR                  5      nU R                  XS9$ rn   )r6   r7   r   r*   rX   r,   r   ro   rp   r   Úcumprodrr   s       r   rt   rt   2  sk   € ð ”—
‘
ÓÜ×+Ò+Ó-×7Ñ7ˆØ�}Ø—‘ˆä×(Ò(¨Ñ6�J�D€QÜ×%Ò% d¯F©FÓ3€Dà�9‰9˜$ˆ9Ð,Ð,r"   c               ó®  • UcI  [        XS9n[        R                  " U R                  5       UR                  5       -  UR                  S9nGOU R                  R
                  (       d  U R                  5       n U R                  UR                  :w  a™  Uc  [        S5      eUR                  S:w  a  [        S5      eUR                  S   U R                  U   :w  a  [        S5      e[        R                  " X R                  S-
  S-  UR                  -   5      nUR                  S	U5      n[        R                  " X5      n[        X-  XS9n[        X!US9nX†-  nU(       a!  [         R"                  " XQU R                  5      nU(       aK  UR                  UR                  :w  a.  [        R                  " XeR                  5      R%                  5       nXV4$ U$ )
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_   r6   Ú	as_tensorÚnumelr,   r(   Údoubler   Ú	TypeErrorr   Ú
ValueErrorÚbroadcast_toÚswapaxesr   Úresult_type_implrY   r   Úapply_keepdimsÚclone)	r   r   ÚweightsÚreturnedr/   r`   ÚwsumÚresult_dtypeÚ	numerators	            r   Úaverager†   F  s†  € ð �Ü�aÑ#ˆÜ�Š˜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óð ô
 ×(Ò(¨·6±6¸A±:ÀÑ2EÈÏÉÑ2UÓVˆGØ×&Ñ& r¨4Ó0ˆGô $×4Ò4°QÓ@ˆÜ˜™ TÑ>ˆ	Ü�7¨Ñ5ˆØÑ!ˆö Ü×%Ò% f°A·F±FÓ;ˆæØ�:‰:˜Ÿ™Ó%Ü×%Ò% d¯L©LÓ9×?Ñ?ÓAˆDØˆ|Ðàˆr"   )Úinterpolationc               óD  • U(       a   U R                   R                  (       d0  [        R                  " 5       R                  nU R                  U5      n U R                   [        R                  :X  a  U R                  [        R                  5      n Uc#  U R                  5       n UR                  5       nSnO [        R                  " X R                  5      n[        R                  " U5      n[        R                  " XR                   5      n[        R                  " XX%S9$ )Nr   )r   r‡   )r,   r(   r   r*   r+   r8   r6   Úfloat16Úfloat32Úflattenr   r   r   r5   rd   Ú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ä�>Š>˜! TÑ@Ð@r"   c          
     óÔ   • [         R                  " UR                  5      [        L a.  UR	                  [         R
                  " 5       R                  5      nUS-  n[        U UUUUUUS9$ )Ng      Y@)r   rŽ   r�   r/   r‡   )r   Úpython_type_for_torchr,   Úintr8   r*   r+   rŒ   )	r   r�   r   r<   rŽ   r�   r/   r‡   Úqqs	            r   Ú
percentiler”   ¦  sc   € ô ×)Ò)¨!¯'©'Ó2´cÒ9Ø�D‰D”×,Ò,Ó.×:Ñ:Ó;ˆØ	
ˆU‰€BäØ	Ø
ØØ'ØØØ#ñð r"   c           	     óF   • [        U [        R                  " S5      UUUUS9$ )Ng      à?)r   rŽ   r<   r/   )rŒ   r6   rw   )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   rM   r   r@   r   )NNNFNN)r   r	   r   r
   r,   úOptional[DTypeLike]r<   r—   r/   r   rM   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   r6   Ú r   r   Ú_normalizationsr	   r
   r   r   r   r   r&   r.   r1   r:   r?   rD   rI   rK   ÚmaxrP   ÚminrR   rY   r]   Úproductr_   re   rl   rq   rt   Ú
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"   