§
    OŠtjá  ã                   ó¼   — d dl Zd dl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mZmZ d dlZ ed
¦  «        Z G d„ dee¦  «        Zd„ ZdS )é    N)Úversion_tuple)ÚIterable)ÚMul)ÚS)ÚSqrt)Úimport_module)Ú
PRECEDENCE)ÚAbstractPythonCodePrinterÚArrayPrinterÚ
tensorflowc                   óN  ‡ — e Zd 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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“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)ej-        d*i¥Z. e/e0j1        d+¬,¦  «        Z1d@ˆ fd-„	Z2ˆ fd.„Z3e3Z4e3Z5e3Z6e3Z7e3Z8e3Z9e3Z:e3Z;e3Z<e3Z=d/„ Z>d0„ Z?d1„ Z@d2„ ZAd3„ ZBd4„ ZCd5„ ZDd6„ ZEd7„ ZFd8„ ZGd9„ ZHd:ZId;ZJd<ZKd=ZLd>ZMd?ZNˆ xZOS )AÚTensorflowPrinterz„
    Tensorflow printer which handles vectorized piecewise functions,
    logical operators, max/min, and relational operators.
    Ú_tensorflowcodeztensorflow.math.absztensorflow.math.signztensorflow.math.ceilztensorflow.math.floorztensorflow.math.logztensorflow.math.expútensorflow.math.sqrtztensorflow.math.cosztensorflow.math.acosztensorflow.math.sinztensorflow.math.asinztensorflow.math.tanztensorflow.math.atanztensorflow.math.atan2ztensorflow.math.coshztensorflow.math.acoshztensorflow.math.sinhztensorflow.math.asinhztensorflow.math.tanhztensorflow.math.atanhztensorflow.math.realztensorflow.math.imagztensorflow.math.angleztensorflow.math.erfztensorflow.math.lgammaztensorflow.math.equalztensorflow.math.not_equalztensorflow.math.greaterztensorflow.math.lessztensorflow.math.less_equalztensorflow.math.greater_equalztensorflow.math.logical_andztensorflow.math.logical_orztensorflow.math.logical_notztensorflow.math.maximumztensorflow.math.minimumztensorflow.math.addztensorflow.math.multiplyztensorflow.linalg.traceztensorflow.linalg.detN)Útensorflow_versionc                 óœ   •— t          ¦   «                              |¦  «         | j        d         }|€t          rt          j        }|| _        d S )Nr   )ÚsuperÚ__init__Ú	_settingsr   Ú__version__r   )ÚselfÚsettingsÚversionÚ	__class__s      €úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/sympy/printing/tensorflow.pyr   zTensorflowPrinter.__init__S   sG   ø€ Ý‰Œ×Ò˜Ñ"Ô"Ð"à”.Ð!5Ô6ˆØˆ?�zˆ?Ý Ô,ˆGØ")ˆÔÐÐó    c                 óV  •‡ — ‰ j                              t          |¦  «        d ¦  «        }|€!t          ¦   «                              |¦  «        S ˆ fd„|j        D ¦   «         }t          |¦  «        dk    r!‰                      |¦  «        ›d|d         ›d�S ‰                      ||¦  «        S )Nc                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS © ©Ú_print)Ú.0Úargr   s     €r   ú
<listcomp>z5TensorflowPrinter._print_Function.<locals>.<listcomp>_   s%   ø€ Ð:Ð:Ð:¨�D—K’K Ñ$Ô$Ð:Ð:Ð:r   é   ú(r   ú))	ÚmappingÚgetÚtyper   Ú_print_BasicÚargsÚlenÚ_module_formatÚ_expand_fold_binary_op)r   ÚexprÚopÚchildrenr   s   `   €r   Ú_print_Functionz!TensorflowPrinter._print_Function[   s®   øø€ ØŒ\×Ò�d 4™jœj¨$Ñ/Ô/ˆØˆ:Ý‘7”7×'Ò'¨Ñ-Ô-Ð-Ø:Ð:Ð:Ð:°´	Ð:Ñ:Ô:ˆÝˆx‰=Œ=˜AÒÐà×#Ò# BÑ'Ô'Ð'Ð'Ø˜”��ðð ð
 ×.Ò.¨r°8Ñ<Ô<Ð<r   c                 óˆ   — |                       d¦  «        }d                     ||                      |j        ¦  «        ¦  «        S )Nztensorflow.linalg.invú{}({}))r.   Úformatr!   r#   )r   r0   r1   s      r   Ú_print_Inversez TensorflowPrinter._print_Inverset   s8   € Ø× Ò Ð!8Ñ9Ô9ˆØ�Š˜r 4§;¢;¨t¬xÑ#8Ô#8Ñ9Ô9Ð9r   c                 ó  — | j         }|r6t          |¦  «        t          d¦  «        k     r|                      d¦  «        }n|                      d¦  «        }d                     ||                      |j        ¦  «        ¦  «        S )Nz1.14ztensorflow.matrix_transposez"tensorflow.linalg.matrix_transposer5   )r   r   r.   r6   r!   r#   )r   r0   r   r1   s       r   Ú_print_Transposez"TensorflowPrinter._print_Transposex   sy   € ØÔ)ˆØð 	K•} WÑ-Ô-µ¸fÑ0EÔ0EÒEÐEØ×$Ò$Ð%BÑCÔCˆBˆBà×$Ò$Ð%IÑJÔJˆBØ�Š˜r 4§;¢;¨t¬xÑ#8Ô#8Ñ9Ô9Ð9r   c                 ó’   ‡ ‡— |j         }t          d„ |D ¦   «         ¦  «        rt          d¦  «        ‚ˆ ˆfd„Š ‰|j        |¦  «        S )Nc              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S ©N)Ú
isinstancer   )r"   Úis     r   ú	<genexpr>z6TensorflowPrinter._print_Derivative.<locals>.<genexpr>‚   s,   è è € Ð:Ð:¨1�z˜!�XÑ&Ô&Ð:Ð:Ð:Ð:Ð:Ð:r   z1derivation by multiple variables is not supportedc                 óÄ   •— |s‰                      | ¦  «        S ‰                     d¦  «        ›d ‰| |d d…         ¦  «        ›d‰                      |d         ¦  «        ›d�S )Nztensorflow.gradientsr&   éÿÿÿÿú, z)[0])r!   r.   )r0   r,   r   Úunfolds     €€r   rC   z3TensorflowPrinter._print_Derivative.<locals>.unfold„   su   ø€ Øð )Ø—{’{ 4Ñ(Ô(Ð(à×'Ò'Ð(>Ñ?Ô?Ð?Ð?Ø�F˜4  c r c¤Ñ+Ô+Ð+Ð+Ø—K’K  R¤Ñ)Ô)Ð)Ð)ðð r   )Ú	variablesÚanyÚNotImplementedErrorr0   )r   r0   rD   rC   s   `  @r   Ú_print_Derivativez#TensorflowPrinter._print_Derivative€   sn   øø€ Ø”Nˆ	ÝÐ:Ð:°	Ð:Ñ:Ô:Ñ:Ô:ð 	[Ý%Ð&YÑZÔZÐZð	ð 	ð 	ð 	ð 	ð 	ð ˆv�d”i Ñ+Ô+Ð+r   c                 óN  — | j         }|r#t          |¦  «        t          d¦  «        k     rd}nd}ddlm} |j        d         j        \  }}t          |j        ¦  «        dk    rQd                     |                      |¦  «        |                      |¦  «        |                      |¦  «        d¦  «        S d                     |                      |¦  «        |                      |¦  «        |                      |¦  «        |                       ||j        dd …         Ž ¦  «        ¦  «        S )Nz1.0ztensorflow.selectztensorflow.wherer   )Ú	Piecewiser%   z{}({}, {}, {}))	r   r   Ú$sympy.functions.elementary.piecewiserI   r,   r-   r6   r.   r!   )r   r0   r   Útensorflow_piecewiserI   ÚeÚconds          r   Ú_print_Piecewisez"TensorflowPrinter._print_PiecewiseŽ   s#  € ØÔ)ˆØð 	6•} WÑ-Ô-µ¸eÑ0DÔ0DÒDÐDØ#6Ð Ð à#5Ð àBÐBÐBÐBÐBÐBØ”)˜A”,Ô#‰ˆˆ4ÝˆtŒy‰>Œ>˜QÒÐØ#×*Ò*Ø×#Ò#Ð$8Ñ9Ô9Ø—’˜DÑ!Ô!Ø—’˜A‘”Øñ	ô ð ð  ×&Ò&Ø×ÒÐ 4Ñ5Ô5Ø�KŠK˜ÑÔØ�KŠK˜‰NŒNØ�KŠK˜	˜	 4¤9¨Q¨R¨R¤=Ð1Ñ2Ô2ñ	4ô 4ð 	4r   c                 óX  — |j         \  }}|j        t          j        k    r<d                     |                      d¦  «        |                      |¦  «        ¦  «        S d                     |                      d¦  «        |                      |¦  «        |                      |¦  «        ¦  «        S )Nr5   r   z
{}({}, {})ztensorflow.math.pow)r,   Úexpr   ÚHalfr6   r.   r!   )r   r0   ÚbaserP   s       r   Ú
_print_PowzTensorflowPrinter._print_Pow¤   sž   € ð ”I‰	ˆˆcØŒ8•q”vÒÐØ—?’?Ø×#Ò#Ð$:Ñ;Ô;¸T¿[º[ÈÑ=NÔ=NñPô Pð Pà×"Ò"Ø×ÒÐ 5Ñ6Ô6Ø�KŠK˜ÑÔ˜tŸ{š{¨3Ñ/Ô/ñ1ô 1ð 	1r   c                 óÂ   ‡ — |j         rdnd}dd                     ˆ fd„|                     ¦   «         D ¦   «         ¦  «        z   dz   }‰                      |¦  «        ›d|›d�S )	Nztensorflow.Variableztensorflow.constantú[rB   c                 ó^   •— g | ])}d d                      ˆfd„|D ¦   «         ¦  «        z   dz   ‘Œ*S )rU   rB   c                 ó:   •— g | ]}‰                      |¦  «        ‘ŒS r   r    )r"   Újr   s     €r   r$   zBTensorflowPrinter._print_MatrixBase.<locals>.<listcomp>.<listcomp>±   s#   ø€ Ð,GÐ,GÐ,GÀ¨T¯[ª[¸©^¬^Ð,GÐ,GÐ,Gr   ú])Újoin)r"   r>   r   s     €r   r$   z7TensorflowPrinter._print_MatrixBase.<locals>.<listcomp>±   sE   ø€ ÐdÐdÐdÐQR˜c $§)¢)Ð,GÐ,GÐ,GÐ,GÀQÐ,GÑ,GÔ,GÑ"HÔ"HÑHÈÑLÐdÐdÐdr   rY   r&   r'   )Úfree_symbolsrZ   Útolistr.   )r   r0   Útensorflow_fÚdatas   `   r   Ú_print_MatrixBasez#TensorflowPrinter._print_MatrixBase¯   s}   ø€ Ø04Ô0AÐ\Ð,Ð,ÐG\ˆØ�4—9’9ÐdÐdÐdÐdÐVZ×VaÒVaÑVcÔVcÐdÑdÔdÑeÔeÑeÐfiÑiˆà×Ò Ñ-Ô-Ð-Ð-ØˆDˆDð
ð 	
r   c                 ó&  ‡‡— ddl mŠ ˆfd„|j        D ¦   «         Šˆfd„|j        D ¦   «         }|rL|                      t	          j        |¦  «        t          d         ¦  «        ›d|                      d‰¦  «        ›�S |                      d‰¦  «        S )Nr   )Ú
MatrixExprc                 ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS r   )r=   )r"   r#   ra   s     €r   r$   z3TensorflowPrinter._print_MatMul.<locals>.<listcomp>¹   s(   ø€ ÐLÐLÐL˜Cµ
¸3À
Ñ0KÔ0KÐL�CÐLÐLÐLr   c                 ó   •— g | ]}|‰v¯|‘Œ	S r   r   )r"   r#   Úmat_argss     €r   r$   z3TensorflowPrinter._print_MatMul.<locals>.<listcomp>º   s#   ø€ Ð@Ð@Ð@˜¨C°xÐ,?Ð,?�Ð,?Ð,?Ð,?r   r   Ú*útensorflow.linalg.matmul)Úsympy.matrices.expressionsra   r,   Úparenthesizer   Úfromiterr	   r/   )r   r0   r,   ra   rd   s      @@r   Ú_print_MatMulzTensorflowPrinter._print_MatMul·   sÂ   øø€ Ø9Ð9Ð9Ð9Ð9Ð9ØLÐLÐLÐL 4¤9ÐLÑLÔLˆØ@Ð@Ð@Ð@˜tœyÐ@Ñ@Ô@ˆØð 	6à×!Ò!¥#¤,¨tÑ"4Ô"4µjÀÔ6GÑHÔHÐHÐHØ×+Ò+Ø.°ñ:ô :ð :ðð ð ×.Ò.Ø*¨Hñ6ô 6ð 6r   c                 óJ   — |                       d|j        g|j        z  ¦  «        S )Nrf   )r/   rR   rP   )r   r0   s     r   Ú_print_MatPowzTensorflowPrinter._print_MatPowÅ   s*   € Ø×*Ò*Ø&¨¬¨°D´HÑ(<ñ>ô >ð 	>r   c                 ó”   — g }|j         D ]*}|                     |                      |¦  «        ¦  «         Œ+d                     |¦  «        S )Nú
)r,   Úappendr!   rZ   )r   r0   ÚretÚsubexprs       r   Ú_print_CodeBlockz"TensorflowPrinter._print_CodeBlockÉ   sI   € àˆØ”yð 	-ð 	-ˆGØ�JŠJ�t—{’{ 7Ñ+Ô+Ñ,Ô,Ð,Ð,Ø�yŠy˜‰~Œ~Ðr   c                 ó(   — d | j         |j        Ž › d�S )Nztensorflow.math.is_nan(r'   ©r!   r,   ©r   rP   s     r   Ú_print_isnanzTensorflowPrinter._print_isnanÐ   ó   € ØB¨¨¬°c´hÐ)?ÐBÐBÐBÐBr   c                 ó(   — d | j         |j        Ž › d�S )Nztensorflow.math.is_inf(r'   rt   ru   s     r   Ú_print_isinfzTensorflowPrinter._print_isinfÓ   rw   r   r   zlinalg.einsumzmath.addÚ	transposeÚonesÚzerosr<   )PÚ__name__Ú
__module__Ú__qualname__Ú__doc__ÚprintmethodÚsympyÚAbsÚsignÚceilingÚfloorÚlogrP   r   ÚcosÚacosÚsinÚasinÚtanÚatanÚatan2ÚcoshÚacoshÚsinhÚasinhÚtanhÚatanhÚreÚimr#   ÚerfÚloggammaÚEqÚNeÚStrictGreaterThanÚStrictLessThanÚLessThanÚGreaterThanÚAndÚOrÚNotÚMaxÚMinÚMatAddÚHadamardProductÚTraceÚDeterminantr(   Údictr
   Ú_default_settingsr   r3   Ú_print_ExprÚ_print_ApplicationÚ_print_MatrixExprÚ_print_RelationalÚ
_print_NotÚ
_print_AndÚ	_print_OrÚ_print_HadamardProductÚ_print_TraceÚ_print_Determinantr7   r9   rG   rN   rS   r_   rj   rl   rr   rv   ry   Ú_moduleÚ_einsumÚ_addÚ
_transposeÚ_onesÚ_zerosÚ__classcell__)r   s   @r   r   r      sä  ø€ € € € € ðð ð $€Kð5ØŒ	Ð(ð5àŒ
Ð*ð5ð
 	ŒÐ-ð5ð 	ŒÐ,ð5ð 	Œ	Ð(ð5ð 	Œ	Ð(ð5ð 	Ð$ð5ð 	Œ	Ð(ð5ð 	Œ
Ð*ð5ð 	Œ	Ð(ð5ð 	Œ
Ð*ð5ð 	Œ	Ð(ð5ð 	Œ
Ð*ð5ð  	ŒÐ,ð!5ð$ 	Œ
Ð*ð%5ð& 	ŒÐ,ð'5ð( 	Œ
Ð*ð)5ð 5ð* 	ŒÐ,ð+5ð, 	Œ
Ð*ð-5ð. 	ŒÐ,ð/5ð2 	ŒÐ(ð35ð4 	ŒÐ(ð55ð6 	Œ	Ð*ð75ð< 	Œ	Ð(ð=5ð> 	ŒÐ0ð?5ðB 	ŒÐ)ðC5ðD 	ŒÐ-ðE5ðF 	ÔÐ!:ðG5ðH 	ÔÐ4ðI5ðJ 	ŒÐ4ðK5ðL 	ÔÐ:ðM5ðP 	Œ	Ð0ðQ5ðR 	ŒÐ.ðS5ðT 	Œ	Ð0ðU5ð 5ðV 	Œ	Ð,ØŒ	Ð,ð 	ŒÐ+ØÔÐ9ØŒÐ.ð 	ÔÐ3ði5ð 5€Gðn ˜Ø!Ô3Øðñ ô Ðð
*ð *ð *ð *ð *ð *ð=ð =ð =ð =ð =ð "€KØ(ÐØ'Ðà'ÐØ €JØ €JØ€IØ,ÐØ"€LØ(Ðð:ð :ð :ð:ð :ð :ð,ð ,ð ,ð4ð 4ð 4ð,	1ð 	1ð 	1ð
ð 
ð 
ð6ð 6ð 6ð>ð >ð >ðð ð ðCð Cð CðCð Cð Cð €GØ€GØ€DØ€JØ€EØ€F€F€F€F€Fr   r   c                 óJ   — t          |¦  «        }|                     | ¦  «        S r<   )r   Údoprint)r0   r   Úprinters      r   Útensorflow_coder¾   Þ   s!   € Ý Ñ)Ô)€GØ�?Š?˜4Ñ Ô Ð r   )Úsympy.codegenr‚   Úsympy.codegen.cfunctionsÚsympy.external.importtoolsr   Úcollections.abcr   Úsympy.core.mulr   Úsympy.core.singletonr   r   Úsympy.externalr   Úsympy.printing.precedencer	   Úsympy.printing.pycoder
   r   r   r   r¾   r   r   r   ú<module>rÈ      s  ðØ Ð Ð Ð Ø Ð Ð Ð Ø 4Ð 4Ð 4Ð 4Ð 4Ð 4Ø $Ð $Ð $Ð $Ð $Ð $à Ð Ð Ð Ð Ð Ø "Ð "Ð "Ð "Ð "Ð "Ø )Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø IÐ IÐ IÐ IÐ IÐ IÐ IÐ IØ €€€àˆ]˜<Ñ(Ô(€
ðKð Kð Kð Kð K˜Ð&?ñ Kô Kð Kð\!ð !ð !ð !ð !r   