Ë
    S²j<q  ã                   ó~   — d dl Z d dlZd dlmZmZ d dlmZ dZdZdZ	 G d„ de«      Z
 G d	„ d
e
«      Z G d„ de
«      Zy)é    N)Ú
PRECEDENCEÚ
precedence)Ú
StrPrinterÚint64_tl   ÿÿÿÿ ìûÿÿÿ         c                   óÄ  — e Zd ZdZdej
                  defd„Zdej
                  defd„Zd dej
                  dedz  defd„Z	dej
                  defd	„Z
dej
                  defd
„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Zdej
                  defd„Z y)!ÚExprPrinterÚ_torch_sympystrÚexprÚreturnc                 óN   — | j                  |j                  dt        |«      «      S )NÚ*©Ú	stringifyÚargsr   ©Úselfr   s     úZ/var/www/html/ia-enhanced/venv/lib/python3.12/site-packages/torch/utils/_sympy/printers.pyÚ
_print_MulzExprPrinter._print_Mul   s   € Ø�~‰~˜dŸi™i¨¬j¸Ó.>Ó?Ð?ó    c                 óF   — d| j                  |j                  d   «      › d�S )Nznot (r   ú)©Ú_printr   r   s     r   Ú
_print_NotzExprPrinter._print_Not   s#   € à�t—{‘{ 4§9¡9¨Q¡<Ó0Ð1°Ð3Ð3r   NÚorderc                 óN   — | j                  |j                  dt        |«      «      S )Nz + r   )r   r   r   s      r   Ú
_print_AddzExprPrinter._print_Add   s   € Ø�~‰~˜dŸi™i¨´
¸4Ó0@ÓAÐAr   c                 ój   — | j                  |j                  d|j                  › d�t        |«      «      S )Nú )r   r   Úrel_opr   r   s     r   Ú_print_RelationalzExprPrinter._print_Relational   s+   € Ø�~‰~˜dŸi™i¨1¨T¯[©[¨M¸Ð);¼ZÈÓ=MÓNÐNr   c                 óJ   — | j                  |j                  dt        d   «      S )Nz & Ú
BitwiseAnd©r   r   r   r   s     r   Ú_print_BitwiseFn_bitwise_andz(ExprPrinter._print_BitwiseFn_bitwise_and    ó   € Ø�~‰~˜dŸi™i¨´
¸<Ñ0HÓIÐIr   c                 óJ   — | j                  |j                  dt        d   «      S )Nz | Ú	BitwiseOrr%   r   s     r   Ú_print_BitwiseFn_bitwise_orz'ExprPrinter._print_BitwiseFn_bitwise_or#   s   € Ø�~‰~˜dŸi™i¨´
¸;Ñ0GÓHÐHr   c                 óJ   — | j                  |j                  dt        d   «      S )Nz ^ Ú
BitwiseXorr%   r   s     r   Ú_print_BitwiseFn_bitwise_xorz(ExprPrinter._print_BitwiseFn_bitwise_xor&   r'   r   c                 óP   — | j                  |j                  dt        d   dz
  «      S ©Nú % ÚAtomç      à?r%   r   s     r   Ú
_print_ModzExprPrinter._print_Mod+   ó#   € Ø�~‰~˜dŸi™i¨´
¸6Ñ0BÀSÑ0HÓIÐIr   c                 ó\   — | j                  |j                  dt        d   dz
  «      }d|› d�S )Nú / r1   r2   ú(r   r%   )r   r   Úss      r   Ú_print_FloatTrueDivzExprPrinter._print_FloatTrueDiv.   s/   € Ø�N‰N˜4Ÿ9™9 e¬Z¸Ñ-?À#Ñ-EÓFˆØ�1�#�Qˆxˆr   c                 ó$   — | j                  |«      S ©N)Ú_print_FloorDivr   s     r   Ú_print_CleanDivzExprPrinter._print_CleanDiv2   s   € Ø×#Ñ# DÓ)Ð)r   c                 ó>   — | j                  |j                  d   «      S ©Nr   r   r   s     r   Ú_print_IdentityzExprPrinter._print_Identity5   s   € à�{‰{˜4Ÿ9™9 Q™<Ó(Ð(r   c                 óv   — |j                   dk(  r t        t        j                  |d¬«      «      S t        |«      S )Né5   é   )Údps)Ú_precÚstrÚsympyÚFloatr   s     r   Ú_print_FloatzExprPrinter._print_Float9   s2   € Ø�:‰:˜Òô ”u—{‘{ 4¨RÔ0Ó1Ð1ô �t“9Ðr   c                 óÖ   — |j                   \  }}|t        |«      k7  rt        |«      ‚t        |«      }|dk  rt        d|› �«      ‚|dkD  r| j                  |g|z  dt        d   «      S y)Nr   z#exponent must be non-negative, got r   ÚMulÚ1)r   ÚintÚAssertionErrorr   r   ©r   r   ÚbaseÚexps       r   Ú
_print_PowzExprPrinter._print_PowI   sp   € Ø—I‘I‰	ˆˆcØ”#�c“(Š?Ü  Ó%Ð%Ü�#‹hˆØ�Š7Ü Ð#FÀsÀeÐ!LÓMÐMØ�Š7Ø—>‘> 4 &¨3¡,°´ZÀÑ5FÓGÐGØr   c                 ó0   — t        dt        | «      › �«      ‚)Nz#_print_ToFloat not implemented for ©ÚNotImplementedErrorÚtyper   s     r   Ú_print_ToFloatzExprPrinter._print_ToFloatY   s   € Ü!Ð$GÌÈTË
À|Ð"TÓUÐUr   c                 ó0   — t        dt        | «      › �«      ‚)Nz$_print_Infinity not implemented for rT   r   s     r   Ú_print_InfinityzExprPrinter._print_Infinity\   ó   € Ü!Ð$HÌÈdËÈÐ"UÓVÐVr   c                 ó0   — t        dt        | «      › �«      ‚)Nz,_print_NegativeInfinity not implemented for rT   r   s     r   Ú_print_NegativeInfinityz#ExprPrinter._print_NegativeInfinity_   s   € Ü!Ø:¼4À»:¸,ÐGó
ð 	
r   c                 ó0   — t        dt        | «      › �«      ‚)Nz_print_NaN not implemented for rT   r   s     r   Ú
_print_NaNzExprPrinter._print_NaNd   s   € Ü!Ð$CÄDÈÃJÀ<Ð"PÓQÐQr   c                 ó0   — t        dt        | «      › �«      ‚)Nz$_print_FloorDiv not implemented for rT   r   s     r   r<   zExprPrinter._print_FloorDivg   rZ   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz%_print_PythonMod not implemented for rT   r   s     r   Ú_print_PythonModzExprPrinter._print_PythonModj   s   € Ü!Ð$IÌ$ÈtË*ÈÐ"VÓWÐWr   c                 ó0   — t        dt        | «      › �«      ‚)Nz&_print_IntTrueDiv not implemented for rT   r   s     r   Ú_print_IntTrueDivzExprPrinter._print_IntTrueDivm   ó   € Ü!Ð$JÌ4ÐPTË:È,Ð"WÓXÐXr   c                 ó0   — t        dt        | «      › �«      ‚)Nú(_print_PowByNatural not implemented for rT   r   s     r   Ú_print_PowByNaturalzExprPrinter._print_PowByNaturalp   ó   € Ü!Ø6´t¸D³z°lÐCó
ð 	
r   c                 ó0   — t        dt        | «      › �«      ‚)Nz$_print_FloatPow not implemented for rT   r   s     r   Ú_print_FloatPowzExprPrinter._print_FloatPowu   rZ   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz&_print_TruncToInt not implemented for rT   r   s     r   Ú_print_TruncToIntzExprPrinter._print_TruncToIntx   rd   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz&_print_RoundToInt not implemented for rT   r   s     r   Ú_print_RoundToIntzExprPrinter._print_RoundToInt{   rd   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz(_print_RoundDecimal not implemented for rT   r   s     r   Ú_print_RoundDecimalzExprPrinter._print_RoundDecimal~   rh   r   c                 ó0   — t        dt        | «      › �«      ‚)Nz(_print_TruncToFloat not implemented for rT   r   s     r   Ú_print_TruncToFloatzExprPrinter._print_TruncToFloatˆ   rh   r   r;   )!Ú__name__Ú
__module__Ú__qualname__ÚprintmethodrG   ÚExprrF   r   r   r   r"   r&   r*   r-   r3   r9   r=   r@   rI   rR   rW   rY   r\   r^   r<   ra   rc   rg   rj   rl   rn   rp   rr   © r   r   r	   r	      s™  „ à#€Kð@˜uŸz™zð @¨có @ð4˜uŸz™zð 4¨có 4ñB˜uŸz™zð B°#¸±*ð BÈó BðO e§j¡jð O°Só OðJ°·±ð JÀó JðI°·
±
ð I¸só IðJ°·±ð JÀó Jð
J˜uŸz™zð J¨có Jð¨¯
©
ð °só ð* E§J¡Jð *°3ó *ð) E§J¡Jð )°3ó )ð §¡ð °ó ð 	˜uŸz™zð 	¨có 	ð V 5§:¡:ð V°#ó VðW E§J¡Jð W°3ó Wð
¨E¯J©Jð 
¸3ó 
ð
R˜uŸz™zð R¨có RðW E§J¡Jð W°3ó WðX U§Z¡Zð X°Có XðY e§j¡jð Y°Só Yð
¨¯
©
ð 
°só 
ð
W E§J¡Jð W°3ó WðY e§j¡jð Y°Só YðY e§j¡jð Y°Só Yð
¨¯
©
ð 
°só 
ð
¨¯
©
ð 
°sô 
r   r	   c                   óø  — e Zd Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z	dej                  defd„Z
dej                  defd„Zdej                  defd	„Zdej                  defd
„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z dej                  defd„Z!dej                  defd„Z"dej                  defd „Z#dej                  defd!„Z$dej                  defd"„Z%dej                  defd#„Z&dej                  defd$„Z'dej                  defd%„Z(y&)'ÚPythonPrinterr   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Né   ú$ToFloat expects exactly one argumentztorch.sym_float(r   r   ©Úlenr   rN   r   r   s     r   rW   zPythonPrinter._print_ToFloat�   sA   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHð " $§+¡+¨d¯i©i¸©lÓ";Ð!<¸AÐ>Ð>r   c                 óN   — | j                  |j                  dt        |«      «      S )Nz and r   r   s     r   Ú
_print_AndzPythonPrinter._print_And¢   s   € Ø�~‰~˜dŸi™i¨´*¸TÓ2BÓCÐCr   c                 óN   — | j                  |j                  dt        |«      «      S )Nz or r   r   s     r   Ú	_print_OrzPythonPrinter._print_Or¥   ó   € Ø�~‰~˜dŸi™i¨´¸DÓ1AÓBÐBr   c                 ód   ‡ — ˆ fd„|j                   D «       \  }}}|dk7  r	d|› d|› d�}d|› d|› d�S )Nc              3   óV   •K  — | ]   }‰j                  |t        d    dz
  «      –— Œ" y­w©r1   r2   N©Úparenthesizer   ©Ú.0Úargr   s     €r   ú	<genexpr>z7PythonPrinter._print_ModularIndexing.<locals>.<genexpr>©   s-   øè ø€ ò 
ØADˆD×Ñ˜c¤:¨fÑ#5¸Ñ#;×<ñ
ùó   ƒ&)rL   r7   ú // r   r0   ©r   ©r   r   ÚxÚdivÚmods   `    r   Ú_print_ModularIndexingz$PythonPrinter._print_ModularIndexing¨   sN   ø€ ó
ØHLÏ	É	ô
‰ˆˆ3�ð �#Š:Ø�A�3�d˜3˜%˜qÐ!ˆAØ�1�#�S˜˜˜QÐÐr   c                  ó   — y)Nzmath.infrx   r   s     r   rY   zPythonPrinter._print_Infinity°   ó   € Ør   c                  ó   — y)Nz	-math.infrx   r   s     r   r\   z%PythonPrinter._print_NegativeInfinity³   s   € Ør   c                  ó   — y)Nzmath.nanrx   r   s     r   r^   zPythonPrinter._print_NaN¶   r—   r   c                 óP   — | j                  |j                  dt        d   dz
  «      S r/   r%   r   s     r   ra   zPythonPrinter._print_PythonModº   r4   r   c                 óB   ‡ — ˆ fd„|j                   D «       \  }}|› d|› �S )Nc              3   óV   •K  — | ]   }‰j                  |t        d    dz
  «      –— Œ" y­wr‡   rˆ   rŠ   s     €r   r�   z0PythonPrinter._print_FloorDiv.<locals>.<genexpr>¿   s(   øè ø€ ÒXÀs�$×#Ñ# C¬°FÑ);¸cÑ)A×BÑXùrŽ   r�   r�   ©r   r   r’   r“   s   `   r   r<   zPythonPrinter._print_FloorDiv¾   s%   ø€ ÛXÈdÏiÉiÔX‰ˆˆ3Ø��D˜˜ˆÐr   c                 óP   — | j                  |j                  dt        d   dz
  «      S )Nr6   r1   r2   r%   r   s     r   rc   zPythonPrinter._print_IntTrueDivÄ   r4   r   c                 ó,   — d| j                  |«      › d�S )Nztorch._sym_sqrt(r   )r   r   s     r   Ú_helper_sqrtzPythonPrinter._helper_sqrtÇ   s   € ð " $§+¡+¨dÓ"3Ð!4°AÐ6Ð6r   c                 ó>   — | j                  |j                  d   «      S r?   )r    r   r   s     r   Ú_print_OpaqueUnaryFn_sqrtz'PythonPrinter._print_OpaqueUnaryFn_sqrtÔ   s   € Ø× Ñ  §¡¨1¡Ó.Ð.r   c                 óJ   — | j                  |j                  dt        d   «      S ©Nz ** ÚPowr%   r   s     r   rj   zPythonPrinter._print_FloatPow×   ó   € Ø�~‰~˜dŸi™i¨´¸EÑ1BÓCÐCr   c                 óJ   — | j                  |j                  dt        d   «      S r¤   r%   r   s     r   rg   z!PythonPrinter._print_PowByNaturalÛ   r¦   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú"floor expects exactly one argumentúmath.floor(r   r   r~   r   s     r   Ú_print_floorzPythonPrinter._print_floorÞ   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!EÓFÐFà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú'FloorToInt expects exactly one argumentrª   r   r   r~   r   s     r   Ú_print_FloorToIntzPythonPrinter._print_FloorToIntä   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú'TruncToInt expects exactly one argumentzmath.trunc(r   r   r~   r   s     r   rl   zPythonPrinter._print_TruncToIntê   óA   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKð ˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú$ceiling expects exactly one argumentú
math.ceil(r   r   r~   r   s     r   Ú_print_ceilingzPythonPrinter._print_ceilingñ   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú&CeilToInt expects exactly one argumentr´   r   r   r~   r   s     r   Ú_print_CeilToIntzPythonPrinter._print_CeilToInt÷   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!IÓJÐJà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú Abs expects exactly one argumentzabs(r   r   r~   r   s     r   Ú
_print_AbszPythonPrinter._print_Absý   s?   € Üˆt�y‰y‹>˜QÒÜ Ð!CÓDÐDà�d—k‘k $§)¡)¨A¡,Ó/Ð0°Ð2Ð2r   c                 ó®   — t        |j                  «      dk  rt        d«      ‚ddj                  t	        | j
                  |j                  «      «      › d�S )Né   z"Max expects at least two argumentszmax(ú, r   ©r   r   rN   ÚjoinÚmapr   r   s     r   Ú
_print_MaxzPythonPrinter._print_Max  óF   € Üˆt�y‰y‹>˜AÒÜ Ð!EÓFÐFà�d—i‘i¤ D§K¡K°·±Ó ;Ó<Ð=¸QÐ?Ð?r   c                 ó®   — t        |j                  «      dk  rt        d«      ‚ddj                  t	        | j
                  |j                  «      «      › d�S )Nr½   z"Min expects at least two argumentszmin(r¾   r   r¿   r   s     r   Ú
_print_MinzPythonPrinter._print_Min  rÃ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú cos expects exactly one argumentz	math.cos(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_cosz&PythonPrinter._print_OpaqueUnaryFn_cos  ó?   € Üˆt�y‰y‹>˜QÒÜ Ð!CÓDÐDà˜4Ÿ;™; t§y¡y°¡|Ó4Ð5°QÐ7Ð7r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú!cosh expects exactly one argumentz
math.cosh(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_coshz'PythonPrinter._print_OpaqueUnaryFn_cosh  ó?   € Üˆt�y‰y‹>˜QÒÜ Ð!DÓEÐEà˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú!acos expects exactly one argumentz
math.acos(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_acosz'PythonPrinter._print_OpaqueUnaryFn_acos  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S ©Nr|   z sin expects exactly one argumentz	math.sin(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_sinz&PythonPrinter._print_OpaqueUnaryFn_sin$  rÉ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú!sinh expects exactly one argumentz
math.sinh(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_sinhz'PythonPrinter._print_OpaqueUnaryFn_sinh*  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú!asin expects exactly one argumentz
math.asin(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_asinz'PythonPrinter._print_OpaqueUnaryFn_asin0  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú tan expects exactly one argumentz	math.tan(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_tanz&PythonPrinter._print_OpaqueUnaryFn_tan6  rÉ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú!tanh expects exactly one argumentz
math.tanh(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_tanhz'PythonPrinter._print_OpaqueUnaryFn_tanh<  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú!atan expects exactly one argumentz
math.atan(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_atanz'PythonPrinter._print_OpaqueUnaryFn_atanB  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   z!log2 expects exactly one argumentz
math.log2(r   r   r~   r   s     r   Ú_print_OpaqueUnaryFn_log2z'PythonPrinter._print_OpaqueUnaryFn_log2H  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ú'RoundToInt expects exactly one argumentúround(r   r   r~   r   s     r   rn   zPythonPrinter._print_RoundToIntN  s?   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜Ÿ™ D§I¡I¨a¡LÓ1Ð2°!Ð4Ð4r   c                 óà   — t        |j                  «      dk7  rt        d«      ‚|j                  \  }}t        |t        j
                  «      st        d«      ‚d| j                  |«      › d|› d�S )Nr½   ú*RoundDecimal expects exactly two argumentsz,ndigits must be an instance of sympy.Integerrç   r¾   r   )r   r   rN   Ú
isinstancerG   ÚIntegerÚ	TypeErrorr   )r   r   ÚnumberÚndigitss       r   rp   z!PythonPrinter._print_RoundDecimalT  sd   € Üˆt�y‰y‹>˜QÒÜ Ð!MÓNÐNØŸ)™)‰ˆ�Ü˜'¤5§=¡=Ô1ÜÐJÓKÐKà˜Ÿ™ FÓ+Ð,¨B¨w¨i°qÐ9Ð9r   c                 óÂ   — d }t        |j                  «      D ]@  \  }}| j                  |«      }|dk(  r|}Œ| j                  |«      }|€|}Œ5d|› d|› d|› d�}ŒB |r|S dS )NTr7   z if z else r   Ú0)Úreversedr   r   ©r   r   ÚresultÚexpr_iÚcond_iÚexpr_strÚcond_strs          r   Ú_print_PiecewisezPythonPrinter._print_Piecewise]  s„   € ð "ˆÜ& t§y¡yÓ1ò 	I‰NˆF�Fà—{‘{ 6Ó*ˆHØ˜Š~à!‘ð  Ÿ;™; vÓ.�Ø�>Ø%‘Fà   
¨$¨x¨j¸¸v¸hÀaÐH‘Fð	Iñ  ˆvÐ( SÐ(r   N))rs   rt   ru   rG   rw   rF   rW   r�   rƒ   r•   rY   r\   r^   ra   r<   rc   r    r¢   rj   rg   r«   r®   rl   rµ   r¸   r»   rÂ   rÅ   rÈ   rÌ   rÐ   rÓ   rÖ   rÙ   rÜ   rß   râ   rä   rn   rp   rø   rx   r   r   rz   rz   Ž   s?  „ ð? 5§:¡:ð ?°#ó ?ð&D˜uŸz™zð D¨có DðC˜eŸj™jð C¨Só Cð ¨5¯:©:ð  ¸#ó  ð E§J¡Jð °3ó ð¨E¯J©Jð ¸3ó ð˜uŸz™zð ¨có ðJ U§Z¡Zð J°Có Jð E§J¡Jð °3ó ðJ e§j¡jð J°Só Jð7 §¡ð 7°ó 7ð/¨e¯j©jð /¸Só /ðD E§J¡Jð D°3ó DðD¨¯
©
ð D°só Dð: §¡ð :°ó :ð: e§j¡jð :°Só :ð: e§j¡jð :°Só :ð9 5§:¡:ð 9°#ó 9ð9 U§Z¡Zð 9°Có 9ð3˜uŸz™zð 3¨có 3ð@˜uŸz™zð @¨có @ð@˜uŸz™zð @¨có @ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð5 e§j¡jð 5°Só 5ð:¨¯
©
ð :°só :ð) U§Z¡Zð )°Cô )r   rz   c                   ó¬  — e Zd Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z	dej                  defd„Z
dej                  defd„Zdej                  defd	„Zdej                  defd
„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Zdej                  defd„Z dej                  defd„Z!dej                  defd„Z"dej                  defd „Z#dej                  defd!„Z$dej                  defd"„Z%dej                  defd#„Z&dej                  defd$„Z'dej                  defd%„Z(dej                  defd&„Z)dej                  defd'„Z*dej                  defd(„Z+dej                  defd)„Z,dej                  defd*„Z-y+),Ú
CppPrinterr   r   c                 óÚ   — t         j                  dv rdnd}t        |«      }|t        kD  s	|t        k  rt        |› dt        › �«      ‚|t        k(  r|dk7  rt        d«      ‚d|› d�S |› |› �S )	N)ÚdarwinÚwin32ÚLLÚLz too big to convert to r   z#unexpected minimum index type valuez(-1z << 63))ÚsysÚplatformrM   ÚINDEX_TYPE_MAXÚINDEX_TYPE_MINÚOverflowErrorÚ
INDEX_TYPErN   )r   r   ÚsuffixÚis       r   Ú_print_IntegerzCppPrinter._print_Integers  s~   € ÜŸ™Ð)<Ñ<‘À#ˆÜ�‹IˆØŒ~Ò ¤^Ò!3Ü 1 #Ð%<¼Z¸LÐ IÓJÐJØ”.Ò Ø�JŠÜ$Ð%JÓKÐKð ˜˜ Ð(Ð(Ø��V�Hˆ~Ðr   c                 óJ   ‡ — ˆ fd„|j                   D «       \  }}}|› d|› d|› �S )Nc              3   óV   •K  — | ]   }‰j                  |t        d    dz
  «      –— Œ" y­wr‡   rˆ   rŠ   s     €r   r�   z*CppPrinter._print_Where.<locals>.<genexpr>�  s-   øè ø€ ò 
ØADˆD×Ñ˜c¤:¨fÑ#5¸Ñ#;×<ñ
ùrŽ   ú ? ú : r�   )r   r   ÚcÚpÚqs   `    r   Ú_print_WherezCppPrinter._print_Where€  s5   ø€ ó
ØHLÏ	É	ô
‰ˆˆ1ˆað ��C˜�s˜#˜a˜SÐ!Ð!r   c                 óN   — | j                  |j                  dt        |«      «      S )Nz || r   r   s     r   rƒ   zCppPrinter._print_Or†  r„   r   c                 óò   — d }t        |j                  «      D ]T  \  }}| j                  |t        d   dz
  «      }|dk(  r|}Œ*| j                  |t        d   dz
  «      }|€|}ŒK|› d|› d|› �}ŒV |rd|› d�S dS )	Nr1   r2   Tr  r  r7   r   rð   )rñ   r   r‰   r   rò   s          r   rø   zCppPrinter._print_Piecewise‰  s¢   € ð "ˆÜ& t§y¡yÓ1ò 
	C‰NˆF�FØ×(Ñ(¨´¸FÑ1CÀcÑ1IÓJˆHØ˜Š~à!‘à×,Ñ,¨V´ZÀÑ5GÈ#Ñ5MÓN�Ø�>Ø%‘Fà (˜z¨¨X¨J°c¸&¸ÐB‘Fð
	Cñ !'��6�(˜!ˆ}Ð/¨CÐ/r   c           	      óþ   — |j                   \  }}}| j                  |«      }|dk7  r0| j                  |«      }|j                  r
d|› d|› d�}n	d|› d|› d�}| j                  |«      }dt        › d|› d	t        › d|› d�	S )
Nr|   ú,c10::div_floor_integer(static_cast<int64_t>(ú), static_cast<int64_t>(ú))ú,c10::div_floor_floating(static_cast<double>(ú), static_cast<double>(z(static_cast<ú>(z) % static_cast<)r   ÚdoprintÚ
is_integerr  r‘   s        r   r•   z!CppPrinter._print_ModularIndexing›  s›   € Ø—i‘i‰ˆˆ3�Ø�L‰L˜‹OˆØ�!Š8Ø—,‘,˜sÓ#ˆCØ�ŠØBÀ1À#ÐE]Ð^aÐ]bÐbdÐe‘àBÀ1À#ÐE\Ð]`Ð\aÐacÐd�Ø�l‰l˜3ÓˆØœz˜l¨"¨Q¨CÐ/?Ä
¸|È2ÈcÈUÐRTÐUÐUr   c                 ó    — |j                   \  }}| j                  |«      }| j                  |«      }|j                  r	d|› d|› d�S d|› d|› d�S )Nr  r  r  r  r  )r   r  r  r�   s       r   r<   zCppPrinter._print_FloorDiv§  sc   € Ø—‘‰ˆˆ3Ø�L‰L˜‹OˆØ�l‰l˜3ÓˆØ�?Š?ØAÀ!ÀÐD\Ð]`Ð\aÐacÐdÐdØ=¸a¸SÐ@WÐX[ÐW\Ð\^Ð_Ð_r   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr|   r©   ústd::floor(r   r   ústatic_cast<r  ©r   r   rN   r   r  r  ©r   r   Úrs      r   r«   zCppPrinter._print_floor¯  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!EÓFÐFà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr|   r­   r  r   r   r  r  r   r!  s      r   r®   zCppPrinter._print_FloorToInt¶  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 ó¦   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}dt        › d|› d�S )Nr|   r°   ústd::trunc(r   r   r  r  )r   r   rN   r   r  r!  s      r   rl   zCppPrinter._print_TruncToInt½  sS   € Üˆt�y‰y‹>˜QÒÜ Ð!JÓKÐKà˜$Ÿ+™+ d§i¡i°¡lÓ3Ð4°AÐ6ˆØœj˜\¨¨A¨3¨aÐ0Ð0r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   z)TruncToFloat expects exactly one argumentr%  r   r   r~   r   s     r   rr   zCppPrinter._print_TruncToFloatÄ  s?   € Üˆt�y‰y‹>˜QÒÜ Ð!LÓMÐMà˜TŸ[™[¨¯©°1©Ó6Ð7°qÐ9Ð9r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   r}   ústatic_cast<double>(r   r   r~   r   s     r   rW   zCppPrinter._print_ToFloatÊ  s?   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHà% d§k¡k°$·)±)¸A±,Ó&?Ð%@ÀÐBÐBr   c                 óv   — |j                   \  }}| j                  |«      }| j                  |«      }d|› d|› d�S )Nzc10::div_mod(r¾   r   )r   r  r�   s       r   ra   zCppPrinter._print_PythonModÐ  s?   € Ø—‘‰ˆˆ3Ø�L‰L˜‹OˆØ�l‰l˜3ÓˆØ˜q˜c  C 5¨Ð*Ð*r   c                 ón   — |j                   \  }}d| j                  |«      › d| j                  |«      › d�S )Nr(  z) / static_cast<double>(r   ©r   r   )r   r   ÚlhsÚrhss       r   rc   zCppPrinter._print_IntTrueDivÖ  s@   € Ø—9‘9‰ˆˆSð & d§k¡k°#Ó&6Ð%7Ð7OÐPT×P[ÑP[Ð\_ÓP`ÐOaÐabÐcÐcr   c                 ó‚   — |j                   \  }}|dk(  rd| j                  |«      › d�S t        dt        | «      › �«      ‚)Nr½   z(1 << (r  rf   )r   r   rU   rV   rO   s       r   rg   zCppPrinter._print_PowByNaturalÞ  sJ   € à—I‘I‰	ˆˆcØ�1Š9à˜TŸ[™[¨Ó-Ð.¨bÐ1Ð1Ü!Ø6´t¸D³z°lÐCó
ð 	
r   c                 ón   — |j                   \  }}d| j                  |«      › d| j                  |«      › d�S )Nú	std::pow(r¾   r   r+  rO   s       r   rj   zCppPrinter._print_FloatPowè  s8   € Ø—I‘I‰	ˆˆcà˜4Ÿ;™; tÓ,Ð-¨R°·±¸CÓ0@Ð/AÀÐCÐCr   c                 óæ  — |j                   \  }}|dk(  s|dk(  r"| j                  |«      }|dk(  rd|› d�S d|› d�S |j                  r™t        |«      }|dkD  r| j	                  |g|z  dt
        d   «      }nO|d	k  r.d
| j	                  |gt        |«      z  dt
        d   «      z   dz   }n|d	k(  rd| j                  |«      z   }nd}|j                  rdt        › d|› d�S |S d|› dt        |«      › d�S )Nr2   g      à¿ú
std::sqrt(r   z1.0/std::sqrt(r   r   rK   éÿÿÿÿz1.0/(z1.0/z1.0r  r  r0  r¾   )	r   r   r  rM   r   r   Úabsr  Úfloat)r   r   rP   rQ   r"  s        r   rR   zCppPrinter._print_Powí  s  € à—I‘I‰	ˆˆcà�#Š:˜ šà—;‘;˜tÓ$ˆDØ+.°#ª:�Z ˜v QÐ'ÐS¸^ÈDÈ6ÐQRÐ;SÐSØ�>Š>Ü�c“(ˆCØ�QŠwØ—N‘N D 6¨C¡<°´jÀÑ6GÓH‘Ø�r’àØ—n‘n d V¬c°#«hÑ%6¸¼ZÈÑ=NÓOñPàññ ð
 ˜’à˜TŸ[™[¨Ó.Ñ.‘à�à8<¿º�\¤* ¨R°¨s°!Ð4ÐNÈQÐNð ˜t˜f B¤u¨S£z l°!Ð4Ð4r   c                 óª   — |j                   dk(  r|j                  › }n|j                  › d|j                   › d�}|j                  rdt        › d|› d�S |S )Nr|   z.0/z.0r  r  r   )r  r  r  r  r!  s      r   Ú_print_RationalzCppPrinter._print_Rational
  sR   € à�6‰6�QŠ;Ø—6‘6�(‰Aà—6‘6�(˜#˜dŸf™f˜X RÐ(ˆAØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr|   r³   ú
std::ceil(r   r   r  r  r   r!  s      r   rµ   zCppPrinter._print_ceiling  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!GÓHÐHà˜Ÿ™ T§Y¡Y¨q¡\Ó2Ð3°1Ð5ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c                 óÂ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�}|j                  rdt
        › d|› d�S |S )Nr|   r·   r9  r   r   r  r  r   r!  s      r   r¸   zCppPrinter._print_CeilToInt  s^   € Üˆt�y‰y‹>˜QÒÜ Ð!IÓJÐJà˜Ÿ™ T§Y¡Y¨q¡\Ó2Ð3°1Ð5ˆØ48·O²O�œj˜\¨¨A¨3¨aÐ0ÐJÈÐJr   c           	      óú   — |j                   D �cg c]  }| j                  |«      ‘Œ }}t        |«      dk(  rdt        › d|d   › dt        › d|d   › d�	S dd	j	                  |«      z   d
z   }dt        › d|› d�S c c}w )Nr½   zstd::min(static_cast<r  r   ú), static_cast<r|   r  ú{r¾   ú}z	std::min<r   ©r   r   r   r  rÀ   ©r   r   Úar   Úils        r   rÅ   zCppPrinter._print_Min   ó�   € à(,¯	©	Ö2 1�—‘˜A•Ð2ˆÐ2Üˆt‹9˜Š>Ø*¬:¨,°b¸¸a¹¸	ÀÔQ[ÐP\Ð\^Ð_cÐdeÑ_fÐ^gÐgiÐjÐjð �t—y‘y “Ñ&¨Ñ,ˆBØœz˜l¨"¨R¨D°Ð2Ð2ùò 3ó   �A8c           	      óú   — |j                   D �cg c]  }| j                  |«      ‘Œ }}t        |«      dk(  rdt        › d|d   › dt        › d|d   › d�	S dd	j	                  |«      z   d
z   }dt        › d|› d�S c c}w )Nr½   zstd::max(static_cast<r  r   r<  r|   r  r=  r¾   r>  z	std::max<r   r?  r@  s        r   rÂ   zCppPrinter._print_Max*  rC  rD  c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rº   z	std::abs(r   r   r~   r   s     r   r»   zCppPrinter._print_Abs4  rÉ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rÇ   z	std::cos(r   r   r~   r   s     r   rÈ   z#CppPrinter._print_OpaqueUnaryFn_cos:  rÉ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rË   z
std::cosh(r   r   r~   r   s     r   rÌ   z$CppPrinter._print_OpaqueUnaryFn_cosh@  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rÏ   z
std::acos(r   r   r~   r   s     r   rÐ   z$CppPrinter._print_OpaqueUnaryFn_acosF  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S rÒ   r~   r   s     r   rÓ   z#CppPrinter._print_OpaqueUnaryFn_sinL  rÉ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rÕ   z
std::sinh(r   r   r~   r   s     r   rÖ   z$CppPrinter._print_OpaqueUnaryFn_sinhR  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rØ   z
std::asin(r   r   r~   r   s     r   rÙ   z$CppPrinter._print_OpaqueUnaryFn_asinX  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rÛ   z	std::tan(r   r   r~   r   s     r   rÜ   z#CppPrinter._print_OpaqueUnaryFn_tan^  rÉ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rÞ   z
std::tanh(r   r   r~   r   s     r   rß   z$CppPrinter._print_OpaqueUnaryFn_tanhd  rÍ   r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   rá   z
std::atan(r   r   r~   r   s     r   râ   z$CppPrinter._print_OpaqueUnaryFn_atanj  rÍ   r   c                 óF   — d| j                  |j                  d   «      › d�S )Nr2  r   r   r   r   s     r   r¢   z$CppPrinter._print_OpaqueUnaryFn_sqrtp  ó#   € à˜DŸK™K¨¯	©	°!©Ó5Ð6°aÐ8Ð8r   c                 óF   — d| j                  |j                  d   «      › d�S )Nz
std::log2(r   r   r   r   s     r   rä   z$CppPrinter._print_OpaqueUnaryFn_log2t  rQ  r   c                 óŒ   — t        |j                  «      dk7  rt        d«      ‚d| j                  |j                  d   «      › d�S )Nr|   ræ   zstd::lrint(r   r   r~   r   s     r   rn   zCppPrinter._print_RoundToIntx  r±   r   c                 ó  — t        |j                  «      dk7  rt        d«      ‚|j                  \  }}|j                  r|dk\  rt        d«      ‚t	        d|› d�«      ‚| j                  |t        d   «      }d|› d	|› d
| › d�S )Nr½   ré   r   z+ndigits must be negative for integer inputszOFor integer inputs, only non-negative ndigits are currently supported, but got ú.rK   z%static_cast<double>(std::nearbyint(1ez * z) * 1er   )r   r   rN   r  Ú
ValueErrorr‰   r   )r   r   rí   rî   Ú
number_strs        r   rp   zCppPrinter._print_RoundDecimal  s�   € Üˆt�y‰y‹>˜QÒÜ Ð!MÓNÐNØŸ)™)‰ˆ�Ø×Òà˜!Š|Ü$Ð%RÓSÐSÜØaÐbiÐajÐjkÐlóð ð ×&Ñ& v¬z¸%Ñ/@ÓAˆ
Ø6°w°i¸sÀ:À,ÈfÐV]ÐU]ÐT^Ð^_Ð`Ð`r   c                  ó   — y)NÚtruerx   r   s     r   Ú_print_BooleanTruezCppPrinter._print_BooleanTrue�  s   € Ør   c                  ó   — y)NÚfalserx   r   s     r   Ú_print_BooleanFalsezCppPrinter._print_BooleanFalse�  s   € Ør   c                  ó   — y)Nz'std::numeric_limits<double>::infinity()rx   r   s     r   rY   zCppPrinter._print_Infinity“  s   € Ø8r   c                 ó*   — d| j                  |«      › �S )Nú-)rY   r   s     r   r\   z"CppPrinter._print_NegativeInfinity–  s   € Ø�4×'Ñ'¨Ó-Ð.Ð/Ð/r   c                  ó   — y)Nz(std::numeric_limits<double>::quiet_NaN()rx   r   s     r   r^   zCppPrinter._print_NaN™  s   € Ø9r   N).rs   rt   ru   rG   rw   rF   r  r  rƒ   rø   r•   r<   r«   r®   rl   rr   rW   ra   rc   rg   rj   rR   r7  rµ   r¸   rÅ   rÂ   r»   rÈ   rÌ   rÐ   rÓ   rÖ   rÙ   rÜ   rß   râ   r¢   rä   rn   rp   rZ  r]  rY   r\   r^   rx   r   r   rú   rú   r  s¾  „ ð 5§:¡:ð °#ó ð" §¡ð "°ó "ðC˜eŸj™jð C¨Só Cð0 U§Z¡Zð 0°Có 0ð$
V¨5¯:©:ð 
V¸#ó 
Vð` E§J¡Jð `°3ó `ðK §¡ð K°ó KðK e§j¡jð K°Só Kð1 e§j¡jð 1°Só 1ð:¨¯
©
ð :°só :ðC 5§:¡:ð C°#ó Cð+ U§Z¡Zð +°Có +ðd e§j¡jð d°Só dð
¨¯
©
ð 
°só 
ðD E§J¡Jð D°3ó Dð
5˜uŸz™zð 5¨có 5ð:K E§J¡Jð K°3ó KðK 5§:¡:ð K°#ó KðK U§Z¡Zð K°Có Kð3˜uŸz™zð 3¨có 3ð3˜uŸz™zð 3¨có 3ð8˜uŸz™zð 8¨có 8ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð8¨U¯Z©Zð 8¸Có 8ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð9¨e¯j©jð 9¸Só 9ð: e§j¡jð :°Só :ða¨¯
©
ð a°só að u§z¡zð °có ð¨¯
©
ð °só ð9 E§J¡Jð 9°3ó 9ð0¨E¯J©Jð 0¸3ó 0ð:˜uŸz™zð :¨cô :r   rú   )r   rG   Úsympy.printing.precedencer   r   Úsympy.printing.strr   r  r  r  r	   rz   rú   rx   r   r   ú<module>rd     sN   ðÛ 
ã ß <Ý )ð €
Ø€Ø€ô
|
�*ô |
ô~a)�Kô a)ôHh:�õ h:r   