Ë
    7^(h|)  ã                   ó    — d dl mZmZ d dlmZ d dlmZ d dlmZ d dl	m
Z
 d dlmZ d dlmZ d dlmZ d d	lZ e
d
«      Z G d„ dee«      Zdd„Zy	)é    )ÚAbstractPythonCodePrinterÚArrayPrinter)Ú
MatrixExpr)ÚMul)Ú
PRECEDENCE)Úimport_module)ÚSqrt)ÚS)ÚIntegerNÚtorchc                   ó   ‡ — e Zd ZdZi ej
                  d“ej                  d“ej                  d“ej                  d“ej                  d“ej                  d“ed“ej                  d	“ej                  d
“ej                  d“ej                  d“ej                   d“ej"                  d“ej$                  d“ej&                  d“ej(                  d“ej*                  d“i ej,                  d“ej.                  d“ej0                  d“ej2                  d“ej4                  d“ej6                  d“ej8                  d“ej:                  d“ej<                  d“ej>                  d“ej@                  d“ejB                  d“ejD                  d“ejF                  d “ejH                  d!“ejJ                  d"“ejL                  d#“¥ejN                  d$ejP                  d%ejR                  d&ejT                  d'ejV                  d(ejX                  d)ejZ                  d*i¥Z. e/e0jb                  d+d,d-¬.«      Z1dJˆ fd/„	Z2ˆ fd0„Z3e3Z4e3Z5e3Z6e3Z7e3Z8e3Z9e3Z:e3Z;e3Z<e3Z=d1„ Z>d2„ Z?d3„ Z@d4„ ZAd5„ ZBd6„ ZCd7„ ZDd8„ ZEd9„ ZFd:„ ZGd;„ ZHd<„ ZId=„ ZJd>„ ZKd?„ ZLd@„ ZMdA„ ZNdB„ ZOdC„ ZPdDZQdEZRdFZSdGZTdHZUdIZVˆ xZWS )KÚTorchPrinterÚ
_torchcodez	torch.absz
torch.signz
torch.ceilztorch.floorz	torch.logz	torch.expú
torch.sqrtz	torch.cosz
torch.acosz	torch.sinz
torch.asinz	torch.tanz
torch.atanztorch.atan2z
torch.coshztorch.acoshz
torch.sinhztorch.asinhz
torch.tanhztorch.atanhú	torch.powz
torch.realz
torch.imagztorch.anglez	torch.erfztorch.lgammaztorch.eqztorch.neztorch.gtztorch.ltztorch.leztorch.geztorch.logical_andztorch.logical_orztorch.logical_notz	torch.maxz	torch.minz	torch.addz	torch.mulztorch.tracez	torch.detNFútorch.float64)Útorch_versionÚrequires_gradÚdtypec                 óÐ   •— t         ‰| �  |«       | j                  d   }| j                  d   | _        | j                  d   | _        |€t
        rt
        j                  }|| _        y )Nr   r   r   )ÚsuperÚ__init__Ú	_settingsr   r   r   Ú__version__r   )ÚselfÚsettingsÚversionÚ	__class__s      €úT/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/printing/pytorch.pyr   zTorchPrinter.__init__S   sY   ø€ Ü‰Ñ˜Ô"à—.‘. Ñ1ˆØ!Ÿ^™^¨OÑ<ˆÔØ—^‘^ GÑ,ˆŒ
Øˆ?�uÜ×'Ñ'ˆGØ$ˆÕó    c                 ó>  •— | j                   j                  t        |«      d «      }|€t        ‰| �  |«      S |j
                  D �cg c]  }| j                  |«      ‘Œ }}t        |«      dk(  r| j                  |«      ›d|d   ›d�S | j                  ||«      S c c}w )Né   ú(r   ú))
ÚmappingÚgetÚtyper   Ú_print_BasicÚargsÚ_printÚlenÚ_module_formatÚ_expand_fold_binary_op)r   ÚexprÚopÚargÚchildrenr   s        €r   Ú_print_FunctionzTorchPrinter._print_Function]   s—   ø€ à�\‰\×Ñœd 4›j¨$Ó/ˆØˆ:Ü‘7Ñ'¨Ó-Ð-Ø04·	±	Ö:¨�D—K‘K Õ$Ð:ˆÐ:Üˆx‹=˜AÒà×#Ñ# BÕ'Ø˜“ðð ð
 ×.Ñ.¨r°8Ó<Ð<ùò ;s   ÁBc                 ó|   — dj                  | j                  d«      | j                  |j                  d   «      «      S )Nú{}({})ztorch.linalg.invr   )Úformatr,   r*   r)   ©r   r.   s     r   Ú_print_InversezTorchPrinter._print_Inversew   s5   € Ø�‰˜t×2Ñ2Ð3EÓFØ#Ÿ{™{¨4¯9©9°Q©<Ó8ó:ð 	:r    c                 óî  — |j                   j                  r^|j                   j                  d   |j                   j                  d   k(  r+dj                  d| j	                  |j                   «      «      S dj                  | j	                  |j                   «      dj                  t        t        |j                   j                  «      «      D �cg c]  }t        |«      ‘Œ c}«      d d d…   «      S c c}w )Nr   r"   z
{}({}).t()ztorch.transposez{}.permute({})ú, éÿÿÿÿ)	r0   Ú	is_MatrixÚshaper5   r*   ÚjoinÚranger+   Ústr)r   r.   Úis      r   Ú_print_TransposezTorchPrinter._print_Transpose{   s¯   € Ø�8‰8×Ò $§(¡(§.¡.°Ñ"3°t·x±x·~±~ÀaÑ7HÒ"Hà×&Ñ&Ð'8¸$¿+¹+ÀdÇhÁhÓ:OÓPÐPð $×*Ñ*Ø—‘˜DŸH™HÓ%Ø—	‘	¬5´°T·X±X·^±^Ó1DÓ+EÖF aœ3˜q�6ÒFÓGÉÈ"ÈÑMóð ùâFs   ÃC2c                 ó˜   — | j                  |j                  «      ›ddj                  d„ |j                  j                  D «       «      ›d�S )Nz	.permute(r9   c              3   ó2   K  — | ]  }t        |«      –— Œ y ­w©N)r?   )Ú.0r@   s     r   ú	<genexpr>z2TorchPrinter._print_PermuteDims.<locals>.<genexpr>Š   s   è ø€ ÒB ”c˜!—fÑBùs   ‚r$   )r*   r.   r=   ÚpermutationÚ
array_formr6   s     r   Ú_print_PermuteDimszTorchPrinter._print_PermuteDims‡   s:   € à�K‰K˜Ÿ	™	Õ"Ø�I‰IÑB d×&6Ñ&6×&AÑ&AÔBÕBð
ð 	
r    c                 óÀ  — |j                   }|j                  }t        |«      dkD  s8t        |«      dk(  rÕt        |d   t        «      sÂ|j                  |d   «      dkD  r«| j                  |«      }i }|D ]H  }t        |t        «      r|\  }}|j                  |d«      |z   ||<   Œ1|j                  |d«      dz   ||<   ŒJ |j                  «       D ]6  \  }}t        |«      D ]#  }	dj                  || j                  |«      «      }Œ% Œ8 |S t        |«      dk(  r·|d   }
t        |
t        «      rrt        |
«      dk(  rd|
\  }}t        |t        «      st        d«      ‚| j                  |«      }t        |«      D ]#  }	dj                  || j                  |«      «      }Œ% |S dj                  | j                  |«      | j                  |
«      «      S | j                  |«      S )Nr"   r   z1torch.autograd.grad({}, {}, create_graph=True)[0]é   z!Only integer orders are supportedztorch.autograd.grad({}, {})[0])Ú	variablesr.   r+   Ú
isinstanceÚtupleÚcountr*   r&   Úitemsr>   r5   r   ÚNotImplementedError)r   r.   rL   Úexpr_argÚresultÚ
var_groupsÚvarÚbase_varÚorderÚ_Úvariables              r   Ú_print_DerivativezTorchPrinter._print_Derivative�   sæ  € à—N‘Nˆ	Ø—9‘9ˆô ˆy‹>˜AÒÜ�	‹N˜aÒ¬
°9¸Q±<ÄÔ(GÈIÏOÉOÐ\eÐfgÑ\hÓLiÐlmÒLmØ—[‘[ Ó*ˆFØˆJð !ò A�Ü˜c¤5Ô)Ø&)‘O�H˜eØ+5¯>©>¸(ÀAÓ+FÈÑ+N�J˜xÒ(à&0§n¡n°S¸!Ó&<¸qÑ&@�J˜s’OðAð )×.Ñ.Ó0ò r‘
��UÜ˜u›ò r�AØP×WÑWÐX^Ð`d×`kÑ`kÐloÓ`pÓq‘Fñrðrð ˆMô ˆy‹>˜QÒØ  ‘|ˆHÜ˜(¤EÔ*¬s°8«}ÀÒ/AØ"*‘�˜%Ü! %¬Ô1Ô9LÐMpÓ9qÐ3qØŸ™ XÓ.�Ü˜u›ò w�AØP×WÑWÐX^Ð`d×`kÑ`kÐltÓ`uÓv‘Fðwà�Ø3×:Ñ:¸4¿;¹;ÀxÓ;PÐRV×R]ÑR]Ð^fÓRgÓhÐhà�{‰{˜8Ó$Ð$r    c                 ó¸  — ddl m} |j                  d   j                  \  }}t        |j                  «      dk(  rAdj	                  | j                  d«      | j                  |«      | j                  |«      d«      S dj	                  | j                  d«      | j                  |«      | j                  |«      | j                   ||j                  dd  Ž «      «      S )Nr   )Ú	Piecewiser"   z{}({}, {}, {})ztorch.where)Úsympyr\   r)   r+   r5   r,   r*   )r   r.   r\   ÚeÚconds        r   Ú_print_PiecewisezTorchPrinter._print_Piecewise´   s¼   € Ý#Ø—)‘)˜A‘,×#Ñ#‰ˆˆ4Üˆt�y‰y‹>˜QÒØ#×*Ñ*Ø×#Ñ# MÓ2Ø—‘˜DÓ!Ø—‘˜A“Øó	ð ð  ×&Ñ&Ø×Ñ Ó.Ø�K‰K˜ÓØ�K‰K˜‹NØ�K‰K™	 4§9¡9¨Q¨R =Ð1Ó2ó	4ð 	4r    c                 ó:  — |j                   \  }}|j                  t        j                  k(  r0dj	                  | j                  d«      | j                  |«      «      S dj	                  | j                  d«      | j                  |«      | j                  |«      «      S )Nr4   r   ú
{}({}, {})r   )r)   Úexpr
   ÚHalfr5   r,   r*   )r   r.   Úbaserc   s       r   Ú
_print_PowzTorchPrinter._print_PowÄ   s…   € ð —I‘I‰	ˆˆcØ�8‰8”q—v‘vÒØ—?‘?Ø×#Ñ# LÓ1°4·;±;¸tÓ3DóFð Fà×"Ñ"Ø×Ñ Ó,Ø�K‰K˜Ó˜tŸ{™{¨3Ó/ó1ð 	1r    c                 óP  — |j                   D �cg c]  }t        |t        «      sŒ|‘Œ }}|j                   D �cg c]	  }||vsŒ|‘Œ }}|rA| j                  t	        j
                  |«      t        d   «      ›d| j                  d|«      ›�S | j                  d|«      S c c}w c c}w )Nr   Ú*ztorch.matmul)r)   rM   r   Úparenthesizer   Úfromiterr   r-   )r   r.   r0   Úmat_argsr)   s        r   Ú_print_MatMulzTorchPrinter._print_MatMulÏ   s™   € à#'§9¡9ÖL˜C´
¸3Ä
Õ0K’CÐLˆÐLØ#Ÿy™yÖ@˜¨C°xÒ,?’Ð@ˆÐ@áà×!Ñ!¤#§,¡,¨tÓ"4´jÀÑ6GÕHØ×+Ñ+¨N¸HÔEðð ð
 ×.Ñ.¨~¸xÓHÐHùò MùÚ@s   �B¥B¹	B#ÁB#c                 óV   — | j                  d|j                  g|j                  z  «      S )Nztorch.mm)r-   re   rc   r6   s     r   Ú_print_MatPowzTorchPrinter._print_MatPowÜ   s$   € Ø×*Ñ*¨:¸¿	¹	°{À4Ç8Á8Ñ7KÓLÐLr    c                 óÔ  — ddj                  |j                  «       D ��cg c]6  }ddj                  |D �cg c]  }| j                  |«      ‘Œ c}«      z   dz   ‘Œ8 c}}«      z   dz   }t        |«      g}|j	                  d| j
                  › �«       | j                  r|j	                  d«       dj                  | j                  d«      dj                  |«      «      S c c}w c c}}w )Nú[r9   ú]zdtype=zrequires_grad=Truer4   ztorch.tensor)	r=   Útolistr*   r?   Úappendr   r   r5   r,   )r   r.   r@   ÚjÚdataÚparamss         r   Ú_print_MatrixBasezTorchPrinter._print_MatrixBaseß   sÃ   € Ø�T—Y‘YÐ\`×\gÑ\gÓ\i×jÐWX  d§i¡iÈÖ0KÀA°·±¸QµÒ0KÓ&LÑ LÈsÓ RÓjÓkÑkÐnqÑqˆÜ�d“)�ˆØ�‰˜˜tŸz™z˜lÐ+Ô,Ø×ÒØ�M‰MÐ.Ô/à�‰Ø×Ñ Ó/Ø�I‰I�fÓó
ð 	
ùò 1LùÓjs    C$µCÁC$ÃC$c                 óF   — d| j                  |j                  d   «      › d�S )Nztorch.isnan(r   r$   ©r*   r)   r6   s     r   Ú_print_isnanzTorchPrinter._print_isnanë   ó#   € Ø˜dŸk™k¨$¯)©)°A©,Ó7Ð8¸Ð:Ð:r    c                 óF   — d| j                  |j                  d   «      › d�S )Nztorch.isinf(r   r$   ry   r6   s     r   Ú_print_isinfzTorchPrinter._print_isinfî   r{   r    c                 óh  — t        d„ |j                  D «       «      r=dj                  | j                  d«      | j	                  |j                  d   «      «      S dj                  | j                  d«      | j	                  |j                  d   «      | j	                  |j                  d   «      «      S )Nc              3   ó4   K  — | ]  }|j                   –— Œ y ­wrD   )Ú
is_Integer)rE   Údims     r   rF   z/TorchPrinter._print_Identity.<locals>.<genexpr>ò   s   è ø€ Ò4 #ˆs�~�~Ñ4ùs   ‚r4   z	torch.eyer   rb   r"   )Úallr<   r5   r,   r*   r6   s     r   Ú_print_IdentityzTorchPrinter._print_Identityñ   s’   € ÜÑ4¨¯©Ô4Ô4Ø—?‘?Ø×#Ñ# KÓ0Ø—‘˜DŸJ™J q™MÓ*óð ð  ×&Ñ&Ø×#Ñ# KÓ0Ø—‘˜DŸJ™J q™MÓ*Ø—‘˜DŸJ™J q™MÓ*óð r    c                 óv   — dj                  | j                  d«      | j                  |j                  «      «      S )Nr4   ztorch.zeros©r5   r,   r*   r<   r6   s     r   Ú_print_ZeroMatrixzTorchPrinter._print_ZeroMatrixÿ   s1   € Ø�‰Ø×Ñ Ó.Ø�K‰K˜Ÿ
™
Ó#ó
ð 	
r    c                 óv   — dj                  | j                  d«      | j                  |j                  «      «      S )Nr4   z
torch.onesr…   r6   s     r   Ú_print_OneMatrixzTorchPrinter._print_OneMatrix  s1   € Ø�‰Ø×Ñ Ó-Ø�K‰K˜Ÿ
™
Ó#ó
ð 	
r    c                 óh   — | j                  d«      › d| j                  |j                  d   «      › d�S )Nz
torch.conjr#   r   r$   ©r,   r*   r)   r6   s     r   Ú_print_conjugatezTorchPrinter._print_conjugate  s4   € Ø×%Ñ% lÓ3Ð4°A°d·k±kÀ$Ç)Á)ÈAÁ,Ó6OÐ5PÐPQÐRÐRr    c                  ó   — y)NÚ1j© r6   s     r   Ú_print_ImaginaryUnitz!TorchPrinter._print_ImaginaryUnit  s   € Ør    c                 óô   — | j                  |j                  d   «      dg}t        |j                  «      dkD  r!| j                  |j                  d   «      |d<   | j                  d«      › d|d   › d|d   › d�S )Nr   z0.5r"   ztorch.heavisider#   r9   r$   )r*   r)   r+   r,   )r   r.   r)   s      r   Ú_print_HeavisidezTorchPrinter._print_Heaviside  su   € Ø—‘˜DŸI™I a™LÓ)¨5Ð1ˆÜˆt�y‰y‹>˜AÒØ—k‘k $§)¡)¨A¡,Ó/ˆD�‰GØ×%Ñ%Ð&7Ó8Ð9¸¸4À¹7¸)À2ÀdÈ1ÁgÀYÈaÐPÐPr    c                 óh   — | j                  d«      › d| j                  |j                  d   «      › d�S )Nztorch.special.gammar#   r   r$   rŠ   r6   s     r   Ú_print_gammazTorchPrinter._print_gamma  s6   € Ø×%Ñ%Ð&;Ó<Ð=¸Q¸t¿{¹{È4Ï9É9ÐUVÉ<Ó?XÐ>YÐYZÐ[Ð[r    c                 ó¾   — |j                   d   t        j                  k(  r3| j                  d«      › d| j	                  |j                   d   «      › d�S t        d«      ‚)Nr   ztorch.special.digammar#   r"   r$   z3PyTorch only supports digamma (0th order polygamma))r)   r
   ÚZeror,   r*   rQ   r6   s     r   Ú_print_polygammazTorchPrinter._print_polygamma  sZ   € Ø�9‰9�Q‰<œ1Ÿ6™6Ò!Ø×)Ñ)Ð*AÓBÐCÀ1ÀTÇ[Á[ÐQU×QZÑQZÐ[\ÑQ]ÓE^ÐD_Ð_`ÐaÐaä%Ð&[Ó\Ð\r    r   ÚeinsumÚaddÚtÚonesÚzerosrD   )XÚ__name__Ú
__module__Ú__qualname__Úprintmethodr]   ÚAbsÚsignÚceilingÚfloorÚlogrc   r	   ÚcosÚacosÚsinÚasinÚtanÚatanÚatan2ÚcoshÚacoshÚsinhÚasinhÚtanhÚatanhÚPowÚreÚimr0   ÚerfÚloggammaÚEqÚNeÚStrictGreaterThanÚStrictLessThanÚLessThanÚGreaterThanÚAndÚOrÚNotÚMaxÚMinÚMatAddÚHadamardProductÚTraceÚDeterminantr%   Údictr   Ú_default_settingsr   r2   Ú_print_ExprÚ_print_ApplicationÚ_print_MatrixExprÚ_print_RelationalÚ
_print_NotÚ
_print_AndÚ	_print_OrÚ_print_HadamardProductÚ_print_TraceÚ_print_Determinantr7   rA   rI   rZ   r`   rf   rl   rn   rw   rz   r}   rƒ   r†   rˆ   r‹   r�   r‘   r“   r–   Ú_moduleÚ_einsumÚ_addÚ
_transposeÚ_onesÚ_zerosÚ__classcell__)r   s   @r   r   r      s{  ø„ à€Kð6Ø�	‰	�;ð6à�
‰
�Lð6ð
 	�‰�|ð6ð 	�‰�]ð6ð 	�	‰	�;ð6ð 	�	‰	�;ð6ð 	ˆlð6ð 	�	‰	�;ð6ð 	�
‰
�Lð6ð 	�	‰	�;ð6ð 	�
‰
�Lð6ð 	�	‰	�;ð6ð 	�
‰
�Lð6ð  	�‰�]ð!6ð$ 	�
‰
�Lð%6ð& 	�‰�]ð'6ð( 	�
‰
�Lñ)6ð* 	�‰�]ð+6ð, 	�
‰
�Lð-6ð. 	�‰�]ð/6ð0 	�	‰	�;ð16ð4 	�‰�,ð56ð6 	�‰�,ð76ð8 	�	‰	�=ð96ð> 	�	‰	�;ð?6ð@ 	�‰˜ðA6ðD 	�‰�*ðE6ðF 	�‰�*ðG6ðH 	×Ñ ðI6ðJ 	×Ñ˜jðK6ðL 	�‰˜
ðM6ðN 	×Ñ˜:ðO6ðR 	�	‰	Ð&ðS6ðT 	�‰Ð$ñU6ðV 	�	‰	Ð&Ø�	‰	�;Ø�	‰	�;ð 	�‰�kØ×Ñ˜{Ø�‰�]ð 	×Ñ˜;ñk6€Gñp Ø!×3Ñ3ØØØô	Ðõ%ô=ð "€KØ(ÐØ'ÐØ'ÐØ €JØ €JØ€IØ,ÐØ"€LØ(Ðò:ò
ò
ò%%òN4ò 	1òIòMò

ò;ò;òò
ò
òSòòQò\ò]ð €GØ€GØ€DØ€JØ€EØ„Fr    r   c                 óF   — t        ||dœ¬«      } |j                  | fi |¤ŽS )N)r   r   )r   )r   Údoprint)r.   r   r   r   Úprinters        r   Ú
torch_coderÜ   '  s'   € Ü°mÈeÑ$TÔU€GØˆ7�?‰?˜4Ñ, 8Ñ,Ð,r    )Fr   )Úsympy.printing.pycoder   r   Úsympy.matrices.expressionsr   Úsympy.core.mulr   Úsympy.printing.precedencer   Úsympy.externalr   Úsympy.codegen.cfunctionsr	   r]   r
   r   r   r   rÜ   rŽ   r    r   ú<module>rã      sA   ðç IÝ 1Ý Ý 0Ý (Ý )Ý Ý ã á�gÓ€ôU�<Ð!:ô Uôn-r    