§
    ¬³ÙgO1  ã                  ó¶  — d Z ddlmZ ddlmZ ddlmZmZmZ ddl	m
Z
 ddlmZ ddlmZ i dd	„ d
fg“dd„ dfg“dd„ dfg“dd„ dfg“dd„ dfg“dd„ dfg“dd„ dfg“dd„ dfg“d d!„ d"fg“d#d$„ d%fg“d&d'„ d(fg“d)d*„ d+fg“d,d-„ d.fg“d/d0„ d1fg“d2d3„ d(fg“d4d5„ d6fg“d7d8„ d9fg“i d:d;„ d<fg“d=d>„ d?fg“d@dA„ dBfg“dCdD„ dEfg“dFdG„ dHfg“dIdJ„ dKfg“dLdM„ dNfg“dOdP„ dQfg“dRdS„ dTfg“dUdV„ dWfg“dXdY„ dZfg“d[d\„ d]fg“d^d_„ d^fg“d`da„ d`fg“dbdc„ ddfg“dedf„ ddfg“dgdh„ difg“¥i djdk„ dlfg“dmdn„ dofg“dpdq„ drfg“dsdt„ dofg“dudv„ dwfg“dxdy„ dzfg“d{d|„ d}fg“d~d„ d€fg“d�d‚„ dƒfg“d„d…„ dƒfg“d†d‡„ dˆfg“d‰dŠ„ d‹fg“dŒd�„ dŽfg“d�d�„ d‘fg“d’d“„ d”fg“d•d–„ d—fg“d˜d™„ dšfg“¥i d›dœ„ d�fg“dždŸ„ d fg“d¡d¢„ d£fg“d¤d¥„ d¦fg“d§d¨„ d©fg“dªd«„ d¬fg“d­d®„ d¯fg“d°d±„ d²fg“d³d´„ dµfg“d¶d·„ d¸fg“d¹dº„ d¸fg“d»d¼„ d½fg“d¾d¿„ dÀfg“dÁdÂ„ dÃfg“dÄdÅ„ dÆfg“dÇdÈ„ dÉfg“dÊdË„ dÌfg“¥i dÍdÎ„ dÌfg“dÏdÐ„ dÑfg“dÒdÓ„ dÔfg“dÕdÖ„ d×fg“dØdÙ„ dÚfg“dÛdÜ„ dÝfg“dÞdß„ dàfg“dádâ„ dàfg“dãdä„ dåfg“dædç„ dèfg“dédê„ dëfg“dìdí„ dîfg“dïdð„ dñfg“dòdó„ dôfg“dõdö„ d÷fg“dødù„ dúfg“dûdü„ dýfg“¥i dþdÿ„ �d fg“�d�d„ �dfg“�d�d„ �dfg“�d�d„ �d	fg“�d
�d„ �dfg“�d�d„ �dfg“�d�d„ �dfg“�d�d„ �dfg“�d�d„ �dfg“�d�d„ �dfg“�d�d„ �dfg“�d�d „ �d!fg“�d"�d#„ �d$fg“�d%�d&„ �d'fg“�d(�d)„ �d*fg“�d+�d,„ �d+fg“�d-�d.„ �d/fg“¥�d0„ �d1fg�d2„ �d3fg�d4œ¥Z G �d5„ �d6e¦  «        Z�d7„ Z�d8S (9  z
Mathematica code printer
é    )Úannotations)ÚAny)ÚBasicÚExprÚFloat)Údefault_sort_key)ÚCodePrinter)Ú
precedenceÚexpc                ó   — dS ©NT© ©Úxs    úP/granary/edev/quantum/lib/python3.11/site-packages/sympy/printing/mathematica.pyú<lambda>r      ó   € �t€ ó    ÚExpÚlogc                ó   — dS r   r   r   s    r   r   r      r   r   ÚLogÚsinc                ó   — dS r   r   r   s    r   r   r      r   r   ÚSinÚcosc                ó   — dS r   r   r   s    r   r   r      r   r   ÚCosÚtanc                ó   — dS r   r   r   s    r   r   r      r   r   ÚTanÚcotc                ó   — dS r   r   r   s    r   r   r      r   r   ÚCotÚsecc                ó   — dS r   r   r   s    r   r   r      r   r   ÚSecÚcscc                ó   — dS r   r   r   s    r   r   r      r   r   ÚCscÚasinc                ó   — dS r   r   r   s    r   r   r      ó   € ˜€ r   ÚArcSinÚacosc                ó   — dS r   r   r   s    r   r   r      r-   r   ÚArcCosÚatanc                ó   — dS r   r   r   s    r   r   r      r-   r   ÚArcTanÚacotc                ó   — dS r   r   r   s    r   r   r      r-   r   ÚArcCotÚasecc                ó   — dS r   r   r   s    r   r   r      r-   r   ÚArcSecÚacscc                ó   — dS r   r   r   s    r   r   r      r-   r   ÚArcCscÚatan2c                 ó   — dS r   r   r   s    r   r   r      ó   € ˜$€ r   Úsinhc                ó   — dS r   r   r   s    r   r   r      r-   r   ÚSinhÚcoshc                ó   — dS r   r   r   s    r   r   r       r-   r   ÚCoshÚtanhc                ó   — dS r   r   r   s    r   r   r   !   r-   r   ÚTanhÚcothc                ó   — dS r   r   r   s    r   r   r   "   r-   r   ÚCothÚsechc                ó   — dS r   r   r   s    r   r   r   #   r-   r   ÚSechÚcschc                ó   — dS r   r   r   s    r   r   r   $   r-   r   ÚCschÚasinhc                ó   — dS r   r   r   s    r   r   r   %   ó   € ˜€ r   ÚArcSinhÚacoshc                ó   — dS r   r   r   s    r   r   r   &   rU   r   ÚArcCoshÚatanhc                ó   — dS r   r   r   s    r   r   r   '   rU   r   ÚArcTanhÚacothc                ó   — dS r   r   r   s    r   r   r   (   rU   r   ÚArcCothÚasechc                ó   — dS r   r   r   s    r   r   r   )   rU   r   ÚArcSechÚacschc                ó   — dS r   r   r   s    r   r   r   *   rU   r   ÚArcCschÚsincc                ó   — dS r   r   r   s    r   r   r   +   r-   r   ÚSincÚ	conjugatec                ó   — dS r   r   r   s    r   r   r   ,   ó   € ˜T€ r   Ú	ConjugateÚMaxc                 ó   — dS r   r   r   s    r   r   r   -   r-   r   ÚMinc                 ó   — dS r   r   r   s    r   r   r   .   r-   r   Úerfc                ó   — dS r   r   r   s    r   r   r   /   r   r   ÚErfÚerf2c                 ó   — dS r   r   r   s    r   r   r   0   rU   r   Úerfcc                ó   — dS r   r   r   s    r   r   r   1   r-   r   ÚErfcÚerfic                ó   — dS r   r   r   s    r   r   r   2   r-   r   ÚErfiÚerfinvc                ó   — dS r   r   r   s    r   r   r   3   r@   r   Ú
InverseErfÚerfcinvc                ó   — dS r   r   r   s    r   r   r   4   ó   € ˜4€ r   ÚInverseErfcÚerf2invc                 ó   — dS r   r   r   s    r   r   r   5   ó   € ˜D€ r   Úexpintc                 ó   — dS r   r   r   s    r   r   r   6   r�   r   ÚExpIntegralEÚEic                ó   — dS r   r   r   s    r   r   r   7   ó   € �d€ r   ÚExpIntegralEiÚfresnelcc                ó   — dS r   r   r   s    r   r   r   8   r…   r   ÚFresnelCÚfresnelsc                ó   — dS r   r   r   s    r   r   r   9   r…   r   ÚFresnelSÚgammac                ó   — dS r   r   r   s    r   r   r   :   rU   r   ÚGammaÚ
uppergammac                 ó   — dS r   r   r   s    r   r   r   ;   ó   € ˜t€ r   Ú	polygammac                 ó   — dS r   r   r   s    r   r   r   <   ó   € ˜d€ r   Ú	PolyGammaÚloggammac                ó   — dS r   r   r   s    r   r   r   =   r…   r   ÚLogGammaÚbetac                 ó   — dS r   r   r   s    r   r   r   >   rU   r   ÚBetaÚCic                ó   — dS r   r   r   s    r   r   r   ?   r‹   r   ÚCosIntegralÚSic                ó   — dS r   r   r   s    r   r   r   @   r‹   r   ÚSinIntegralÚChic                ó   — dS r   r   r   s    r   r   r   A   r   r   ÚCoshIntegralÚShic                ó   — dS r   r   r   s    r   r   r   B   r   r   ÚSinhIntegralÚlic                ó   — dS r   r   r   s    r   r   r   C   r‹   r   ÚLogIntegralÚ	factorialc                ó   — dS r   r   r   s    r   r   r   D   rk   r   Ú	FactorialÚ
factorial2c                ó   — dS r   r   r   s    r   r   r   E   r›   r   Ú
Factorial2Úsubfactorialc                ó   — dS r   r   r   s    r   r   r   F   ó   €  € r   ÚSubfactorialÚcatalanc                ó   — dS r   r   r   s    r   r   r   G   r�   r   ÚCatalanNumberÚharmonicc                 ó   — dS r   r   r   s    r   r   r   H   rk   r   ÚHarmonicNumberÚlucasc                ó   — dS r   r   r   s    r   r   r   I   rU   r   ÚLucasLÚRisingFactorialc                 ó   — dS r   r   r   s    r   r   r   J   s   €  D€ r   Ú
PochhammerÚFallingFactorialc                 ó   — dS r   r   r   s    r   r   r   K   s   €  T€ r   ÚFactorialPowerÚlaguerrec                 ó   — dS r   r   r   s    r   r   r   L   rk   r   Ú	LaguerreLÚassoc_laguerrec                 ó   — dS r   r   r   s    r   r   r   M   ó   €  4€ r   Úhermitec                 ó   — dS r   r   r   s    r   r   r   N   r…   r   ÚHermiteHÚjacobic                 ó   — dS r   r   r   s    r   r   r   O   r�   r   ÚJacobiPÚ
gegenbauerc                 ó   — dS r   r   r   s    r   r   r   P   r˜   r   ÚGegenbauerCÚ
chebyshevtc                 ó   — dS r   r   r   s    r   r   r   Q   r˜   r   Ú
ChebyshevTÚ
chebyshevuc                 ó   — dS r   r   r   s    r   r   r   R   r˜   r   Ú
ChebyshevUÚlegendrec                 ó   — dS r   r   r   s    r   r   r   S   rk   r   Ú	LegendrePÚassoc_legendrec                 ó   — dS r   r   r   s    r   r   r   T   rÐ   r   Úmathieucc                 ó   — dS r   r   r   s    r   r   r   U   rk   r   ÚMathieuCÚmathieusc                 ó   — dS r   r   r   s    r   r   r   V   rk   r   ÚMathieuSÚmathieucprimec                 ó   — dS r   r   r   s    r   r   r   W   ó   €  $€ r   ÚMathieuCPrimeÚmathieusprimec                 ó   — dS r   r   r   s    r   r   r   X   rí   r   ÚMathieuSPrimeÚ	stieltjesc                ó   — dS r   r   r   s    r   r   r   Y   rk   r   ÚStieltjesGammaÚ
elliptic_ec                 ó   — dS r   r   r   s    r   r   r   Z   r˜   r   Ú	EllipticEÚ
elliptic_fc                 ó   — dS r   r   r   s    r   r   r   [   r˜   r   Ú
elliptic_kc                ó   — dS r   r   r   s    r   r   r   \   r›   r   Ú	EllipticKÚelliptic_pic                 ó   — dS r   r   r   s    r   r   r   ]   rº   r   Ú
EllipticPiÚzetac                 ó   — dS r   r   r   s    r   r   r   ^   rU   r   ÚZetaÚdirichlet_etac                ó   — dS r   r   r   s    r   r   r   _   s   €  € r   ÚDirichletEtaÚ
riemann_xic                ó   — dS r   r   r   s    r   r   r   `   r›   r   Ú	RiemannXiÚbesselic                 ó   — dS r   r   r   s    r   r   r   a   r…   r   ÚBesselIÚbesseljc                 ó   — dS r   r   r   s    r   r   r   b   r…   r   ÚBesselJÚbesselkc                 ó   — dS r   r   r   s    r   r   r   c   r…   r   ÚBesselKÚbesselyc                 ó   — dS r   r   r   s    r   r   r   d   r…   r   ÚBesselYÚhankel1c                 ó   — dS r   r   r   s    r   r   r   e   r…   r   ÚHankelH1Úhankel2c                 ó   — dS r   r   r   s    r   r   r   f   r…   r   ÚHankelH2Úairyaic                ó   — dS r   r   r   s    r   r   r   g   r@   r   ÚAiryAiÚairybic                ó   — dS r   r   r   s    r   r   r   h   r@   r   ÚAiryBiÚairyaiprimec                ó   — dS r   r   r   s    r   r   r   i   r˜   r   ÚAiryAiPrimeÚairybiprimec                ó   — dS r   r   r   s    r   r   r   j   r˜   r   ÚAiryBiPrimeÚpolylogc                 ó   — dS r   r   r   s    r   r   r   k   r…   r   ÚPolyLogÚlerchphic                 ó   — dS r   r   r   s    r   r   r   l   rk   r   ÚLerchPhiÚgcdc                 ó   — dS r   r   r   s    r   r   r   m   r-   r   ÚGCDÚlcmc                 ó   — dS r   r   r   s    r   r   r   n   r-   r   ÚLCMÚjnc                 ó   — dS r   r   r   s    r   r   r   o   r   r   ÚSphericalBesselJÚync                 ó   — dS r   r   r   s    r   r   r   p   r   r   ÚSphericalBesselYÚhyperc                 ó   — dS r   r   r   s    r   r   r   q   r@   r   ÚHypergeometricPFQÚmeijergc                 ó   — dS r   r   r   s    r   r   r   r   r…   r   ÚMeijerGÚappellf1c                 ó   — dS r   r   r   s    r   r   r   s   rk   r   ÚAppellF1Ú
DiracDeltac                ó   — dS r   r   r   s    r   r   r   t   r›   r   Ú	Heavisidec                ó   — dS r   r   r   s    r   r   r   u   rk   r   ÚHeavisideThetac                 ó   — dS r   r   r   s    r   r   r   v   rÐ   r   ÚKroneckerDeltac                ó   — dS r   r   r   s    r   r   r   w   r-   r   ÚSqrt)rH  Úsqrtc                  óX  ‡ — e Zd ZU dZdZdZ eej        fi di dœ¤ŽZde	d<    e
¦   «         Zde	d	<    e
¦   «         Zd
e	d<   i fd„Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Z d „ Z!e!Z"e!Z#d!„ Z$d"„ Z%d#„ Z&d$„ Z'd%„ Z(e(Z)d&„ Z*d'„ Z+d(„ Z,d)„ Z-d*„ Z.ˆ xZ/S )+ÚMCodePrinterz]A printer to convert Python expressions to
    strings of the Wolfram's Mathematica code
    Ú_mcodezWolfram Languageé   )Ú	precisionÚuser_functionszdict[str, Any]Ú_default_settingszset[tuple[Expr, Float]]Ú_number_symbolsz
set[Basic]Ú_not_supportedc                óV  — t          j        | |¦  «         t          t          ¦  «        | _        |                     di ¦  «                             ¦   «         }|                     ¦   «         D ]#\  }}t          |t          ¦  «        s	d„ |fg||<   Œ$| j         	                    |¦  «         dS )z+Register function mappings supplied by userrQ  c                 ó   — dS r   r   r   s    r   r   z'MCodePrinter.__init__.<locals>.<lambda>‘   s   € ¨D€ r   N)
r	   Ú__init__ÚdictÚknown_functionsÚgetÚcopyÚitemsÚ
isinstanceÚlistÚupdate)ÚselfÚsettingsÚ	userfuncsÚkÚvs        r   rW  zMCodePrinter.__init__Š   s¥   € åÔ˜T 8Ñ,Ô,Ð,Ý#¥OÑ4Ô4ˆÔØ—L’LÐ!1°2Ñ6Ô6×;Ò;Ñ=Ô=ˆ	Ø—O’OÑ%Ô%ð 	6ð 	6‰DˆAˆqÝ˜a¥Ñ&Ô&ð 6Ø!0 °!Ð 4Ð5�	˜!‘øØÔ×#Ò# IÑ.Ô.Ð.Ð.Ð.r   c                ó   — |S ©Nr   )r`  Úliness     r   Ú_format_codezMCodePrinter._format_code”   s   € Øˆr   c                ó’   — t          |¦  «        }|                      |j        |¦  «        ›d|                      |j        |¦  «        ›�S )Nú^)r
   ÚparenthesizeÚbaser   )r`  ÚexprÚPRECs      r   Ú
_print_PowzMCodePrinter._print_Pow—   sL   € Ý˜$ÑÔˆØ×+Ò+¨D¬I°tÑ<Ô<Ð<Ð<Ø×+Ò+¨D¬H°dÑ;Ô;Ð;ð=ð 	=r   c                ó  •‡ ‡— t          |¦  «        Š|                     ¦   «         \  }}t          ¦   «                               |j        |Ž ¦  «        }|r*|dz  }|d                     ˆˆ fd„|D ¦   «         ¦  «        z  }|S )NÚ*z**c              3  óD   •K  — | ]}‰                      |‰¦  «        V — Œd S rf  )rk  )Ú.0Úarn  r`  s     €€r   ú	<genexpr>z*MCodePrinter._print_Mul.<locals>.<genexpr>¢   s3   øè è € ÐDÐD¸A˜T×.Ò.¨q°$Ñ7Ô7ÐDÐDÐDÐDÐDÐDr   )r
   Úargs_cncÚsuperÚ
_print_MulÚfuncÚjoin)r`  rm  ÚcÚncÚresrn  Ú	__class__s   `    @€r   rx  zMCodePrinter._print_Mulœ   s‡   øøø€ Ý˜$ÑÔˆØ—’‘”‰ˆˆ2Ý‰gŒg× Ò   ¤¨A Ñ/Ô/ˆØð 	EØ�3‰JˆCØ�4—9’9ÐDÐDÐDÐDÐDÀÐDÑDÔDÑDÔDÑDˆCØˆ
r   c                ó¦   — |                       |j        ¦  «        }|                       |j        ¦  «        }|j        }d                     |||¦  «        S )Nz{} {} {})Ú_printÚlhsÚrhsÚrel_opÚformat)r`  rm  Úlhs_codeÚrhs_codeÚops        r   Ú_print_RelationalzMCodePrinter._print_Relational¥   sG   € Ø—;’;˜tœxÑ(Ô(ˆØ—;’;˜tœxÑ(Ô(ˆØŒ[ˆØ× Ò  ¨2¨xÑ8Ô8Ð8r   c                ó   — dS )NÚ0r   ©r`  rm  s     r   Ú_print_ZerozMCodePrinter._print_Zero¬   ó   € Øˆsr   c                ó   — dS )NÚ1r   r‹  s     r   Ú
_print_OnezMCodePrinter._print_One¯   r�  r   c                ó   — dS )Nz-1r   r‹  s     r   Ú_print_NegativeOnezMCodePrinter._print_NegativeOne²   ó   € Øˆtr   c                ó   — dS )Nz1/2r   r‹  s     r   Ú_print_HalfzMCodePrinter._print_Halfµ   s   € Øˆur   c                ó   — dS )NÚIr   r‹  s     r   Ú_print_ImaginaryUnitz!MCodePrinter._print_ImaginaryUnit¸   r�  r   c                ó   — dS )NÚInfinityr   r‹  s     r   Ú_print_InfinityzMCodePrinter._print_Infinity½   s   € Øˆzr   c                ó   — dS )Nz	-Infinityr   r‹  s     r   Ú_print_NegativeInfinityz$MCodePrinter._print_NegativeInfinityÀ   s   € Øˆ{r   c                ó   — dS )NÚComplexInfinityr   r‹  s     r   Ú_print_ComplexInfinityz#MCodePrinter._print_ComplexInfinityÃ   s   € Ø Ð r   c                ó   — dS )NÚIndeterminater   r‹  s     r   Ú
_print_NaNzMCodePrinter._print_NaNÆ   s   € Øˆr   c                ó   — dS )NÚEr   r‹  s     r   Ú_print_Exp1zMCodePrinter._print_Exp1Ë   r�  r   c                ó   — dS )NÚPir   r‹  s     r   Ú	_print_PizMCodePrinter._print_PiÎ   r“  r   c                ó   — dS )NÚGoldenRatior   r‹  s     r   Ú_print_GoldenRatiozMCodePrinter._print_GoldenRatioÑ   s   € Øˆ}r   c                óx   — |                      d¬¦  «        }t          |¦  «        }|                      ||¦  «        S )NT)ry  )Úexpandr
   rk  )r`  rm  Úexpandedrn  s       r   Ú_print_TribonacciConstantz&MCodePrinter._print_TribonacciConstantÔ   s8   € Ø—;’; D�;Ñ)Ô)ˆÝ˜$ÑÔˆØ× Ò  ¨4Ñ0Ô0Ð0r   c                ó   — dS )NÚ
EulerGammar   r‹  s     r   Ú_print_EulerGammazMCodePrinter._print_EulerGammaÙ   s   € Øˆ|r   c                ó   — dS )NÚCatalanr   r‹  s     r   Ú_print_CatalanzMCodePrinter._print_CatalanÜ   s   € Øˆyr   c                óR   ‡ — dd                      ˆ fd„|D ¦   «         ¦  «        z   dz   S )NÚ{ú, c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rf  ©Údoprint©rs  rt  r`  s     €r   ru  z+MCodePrinter._print_list.<locals>.<genexpr>á   s-   øè è € Ð=Ð=°1˜tŸ|š|¨A™œÐ=Ð=Ð=Ð=Ð=Ð=r   Ú}©rz  r‹  s   ` r   Ú_print_listzMCodePrinter._print_listà   s4   ø€ Ø�T—Y’YÐ=Ð=Ð=Ð=¸Ð=Ñ=Ô=Ñ=Ô=Ñ=ÀÑCÐCr   c                óP   — |                       |                     ¦   «         ¦  «        S rf  ©r¼  Útolistr‹  s     r   Ú_print_ImmutableDenseMatrixz(MCodePrinter._print_ImmutableDenseMatrixå   ó   € Ø�|Š|˜DŸKšK™MœMÑ*Ô*Ð*r   c                óv   ‡ ‡‡— ˆ fd„Šˆˆfd„}ˆˆ fd„}d                       |¦   «          |¦   «         ¦  «        S )Nc                ó¤   •— d                      ‰                     | d         dz   | d         dz   f¦  «        ‰                     |¦  «        ¦  «        S )Nú{} -> {}r   é   ©r„  r¼  ©ÚposÚvalr`  s     €r   Ú
print_rulez=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_ruleê   sP   ø€ Ø×$Ò$Ø�LŠL˜#˜aœ& ™( C¨¤F¨1¡HÐ-Ñ.Ô.°·²¸SÑ0AÔ0AñCô Cð Cr   c                 óÆ   •— t          ‰                     ¦   «                              ¦   «         t          ¬¦  «        } dd                     ˆfd„| D ¦   «         ¦  «        z   dz   S )N)Úkeyr¸  r¹  c              3  ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S rf  r   )rs  rc  rd  rÎ  s      €r   ru  zPMCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data.<locals>.<genexpr>ñ   s3   øè è € Ð=Ð=©t¨q°!˜*˜* Q¨Ñ*Ô*Ð=Ð=Ð=Ð=Ð=Ð=r   r¾  )ÚsortedÚtodokr\  r   rz  )r\  rm  rÎ  s    €€r   Ú
print_dataz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dataî   sc   ø€ Ý˜4Ÿ:š:™<œ<×-Ò-Ñ/Ô/Õ5EÐFÑFÔFˆEØØ—	’	Ð=Ð=Ð=Ð=°uÐ=Ñ=Ô=Ñ=Ô=ñ>àñð r   c                 ó8   •— ‰                      ‰ j        ¦  «        S rf  ©r¼  Úshape©rm  r`  s   €€r   Ú
print_dimsz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dimsô   s   ø€ Ø—<’< ¤
Ñ+Ô+Ð+r   úSparseArray[{}, {}]©r„  )r`  rm  rÔ  rÙ  rÎ  s   ``  @r   Ú_print_ImmutableSparseMatrixz)MCodePrinter._print_ImmutableSparseMatrixè   sƒ   øøø€ ð	Cð 	Cð 	Cð 	Cð 	Cð	ð 	ð 	ð 	ð 	ð 	ð	,ð 	,ð 	,ð 	,ð 	,ð 	,ð %×+Ò+¨J¨J©L¬L¸*¸*¹,¼,ÑGÔGÐGr   c                óP   — |                       |                     ¦   «         ¦  «        S rf  rÂ  r‹  s     r   Ú_print_ImmutableDenseNDimArrayz+MCodePrinter._print_ImmutableDenseNDimArrayù   rÅ  r   c                óŠ   ‡ ‡‡‡‡— d„ Šd„ Šˆ fd„Šˆˆˆˆfd„}ˆˆ fd„}d                       |¦   «          |¦   «         ¦  «        S )Nc                óL   — dd                      d„ | D ¦   «         ¦  «        z   dz   S )Nr¸  r¹  c              3  ó   K  — | ]}|V — Œd S rf  r   )rs  rt  s     r   ru  zZMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list.<locals>.<genexpr>þ   s"   è è € Ð":Ð":¨ 1Ð":Ð":Ð":Ð":Ð":Ð":r   r¾  r¿  )Ústring_lists    r   Úprint_string_listzGMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_listý   s-   € Ø˜ŸšÐ":Ð":¨kÐ":Ñ":Ô":Ñ:Ô:Ñ:¸SÑ@Ð@r   c                 ó4   — t          d„ | D ¦   «         ¦  «        S )z¾Helper function to change Python style indexing to
            Pathematica indexing.

            Python indexing (0, 1 ... n-1)
            -> Mathematica indexing (1, 2 ... n)
            c              3  ó    K  — | ]	}|d z   V — Œ
dS )rÉ  Nr   ©rs  Úis     r   ru  z]MCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index.<locals>.<genexpr>  s&   è è € Ð-Ð- 1˜˜Q™Ð-Ð-Ð-Ð-Ð-Ð-r   )Útuple)Úargss    r   Úto_mathematica_indexzJMCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index   s!   € õ Ð-Ð-¨Ð-Ñ-Ô-Ñ-Ô-Ð-r   c                ó|   •— d                      ‰                     | ¦  «        ‰                     |¦  «        ¦  «        S )z.Helper function to print a rule of MathematicarÈ  rÊ  rË  s     €r   rÎ  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_rule	  s1   ø€ à×$Ò$ T§\¢\°#Ñ%6Ô%6¸¿ºÀSÑ8IÔ8IÑJÔJÐJr   c                 ó~   •—  ‰ˆ ˆˆfd„t          ‰ j                             ¦   «         ¦  «        D ¦   «         ¦  «        S )a/  Helper function to print data part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html

            ``data`` must be formatted with rule.
            c           	     óZ   •— g | ]'\  }} ‰ ‰‰                      |¦  «        Ž |¦  «        ‘Œ(S r   )Ú_get_tuple_index)rs  rÐ  Úvaluerm  rÎ  rê  s      €€€r   ú
<listcomp>zTMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data.<locals>.<listcomp>  s]   ø€ ð Fð Fð Fñ �C˜ð �Ø(Ð(¨4×+@Ò+@ÀÑ+EÔ+EÐGØñô ð Fð Fð Fr   )rÒ  Ú_sparse_arrayr\  )rm  rÎ  rã  rê  s   €€€€r   rÔ  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data  sl   ø€ ð %Ð$ðFð Fð Fð Fð Fð Fõ #)¨Ô);×)AÒ)AÑ)CÔ)CÑ"DÔ"DðFñ Fô Fñô ð r   c                 ó8   •— ‰                      ‰ j        ¦  «        S )a  Helper function to print dimensions part of Mathematica
            sparse array.

            It uses the fourth notation ``SparseArray[data,{d1,d2,...}]``
            from
            https://reference.wolfram.com/language/ref/SparseArray.html
            rÖ  rØ  s   €€r   rÙ  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_dims  s   ø€ ð —<’< ¤
Ñ+Ô+Ð+r   rÚ  rÛ  )r`  rm  rÔ  rÙ  rÎ  rã  rê  s   ``  @@@r   Ú_print_ImmutableSparseNDimArrayz,MCodePrinter._print_ImmutableSparseNDimArrayü   s°   øøøøø€ ð	Að 	Að 	Að	.ð 	.ð 	.ð	Kð 	Kð 	Kð 	Kð 	Kð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð"	,ð 	,ð 	,ð 	,ð 	,ð 	,ð %×+Ò+¨J¨J©L¬L¸*¸*¹,¼,ÑGÔGÐGr   c                ó$  ‡ — |j         j        ‰ j        v rM‰ j        |j         j                 }|D ]2\  }} ||j        Ž r#|›d‰                      |j        d¦  «        ›d�c S Œ3n…|j         j        ‰ j        v rr‰ j        |j         j                 \  }}‰                      |¦  «        rCt          ˆ fd„|D ¦   «         ¦  «        r(‰                      | 	                    |¦  «        ¦  «        S |j         j        d‰                      |j        d¦  «        z  z   S )Nú[r¹  ú]c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rf  )Ú
_can_print)rs  Úfr`  s     €r   ru  z/MCodePrinter._print_Function.<locals>.<genexpr>3  s/   øè è € Ð0YÐ0YÈ°·²ÀÑ1CÔ1CÐ0YÐ0YÐ0YÐ0YÐ0YÐ0Yr   z[%s])
ry  Ú__name__rY  ré  Ú	stringifyÚ_rewriteable_functionsrø  Úallr€  Úrewrite)r`  rm  Ú
cond_mfuncÚcondÚmfuncÚtarget_fÚrequired_fss   `      r   Ú_print_FunctionzMCodePrinter._print_Function*  s-  ø€ ØŒ9Ô Ô!5Ð5Ð5ØÔ-¨d¬iÔ.@ÔAˆJØ)ð Oð O‘��eØ�4˜œÐ#ð OØ', u u¨d¯nªn¸T¼YÈÑ.MÔ.MÐ.MÐ.MÐNÐNÐNÐNðOðOð ŒYÔ 4Ô#>Ð>Ð>à$(Ô$?ÀÄ	Ô@RÔ$SÑ!ˆH�kØ�Š˜xÑ(Ô(ð ;­SÐ0YÐ0YÐ0YÐ0YÈ[Ð0YÑ0YÔ0YÑ-YÔ-Yð ;Ø—{’{ 4§<¢<°Ñ#9Ô#9Ñ:Ô:Ð:ØŒyÔ! F¨T¯^ª^¸D¼IÀtÑ-LÔ-LÑ$LÑLÐLr   c                ó<  — t          |j        ¦  «        dk    r3d                     |                      |j        d         ¦  «        ¦  «        S d                     |                      |j        d         ¦  «        |                      |j        d         ¦  «        ¦  «        S )NrÉ  zProductLog[{}]r   zProductLog[{}, {}])Úlenré  r„  r€  r‹  s     r   Ú_print_LambertWzMCodePrinter._print_LambertW9  s   € ÝˆtŒy‰>Œ>˜QÒÐØ#×*Ò*¨4¯;ª;°t´yÀ´|Ñ+DÔ+DÑEÔEÐEØ#×*Ò*Ø�KŠK˜œ	 !œÑ%Ô% t§{¢{°4´9¸Q´<Ñ'@Ô'@ñBô Bð 	Br   c                óð   ‡ — t          |j        ¦  «        dk    r0|j        d         dd …         s|j        d         |j        d         g}n|j        }dd                     ˆ fd„|D ¦   «         ¦  «        z   dz   S )NrÉ  r   zHold[Integrate[r¹  c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rf  r»  r½  s     €r   ru  z/MCodePrinter._print_Integral.<locals>.<genexpr>D  s-   øè è € Ð,KÐ,KÀ¨T¯\ª\¸!©_¬_Ð,KÐ,KÐ,KÐ,KÐ,KÐ,Kr   ú]])r  Ú	variablesÚlimitsré  rz  )r`  rm  ré  s   `  r   Ú_print_IntegralzMCodePrinter._print_Integral?  s}   ø€ ÝˆtŒ~ÑÔ !Ò#Ð#¨D¬K¸¬N¸1¸2¸2Ô,>Ð#Ø”I˜a”L $¤.°Ô"3Ð4ˆDˆDà”9ˆDØ  4§9¢9Ð,KÐ,KÐ,KÐ,KÀdÐ,KÑ,KÔ,KÑ#KÔ#KÑKÈdÑRÐRr   c                ó\   ‡ — dd                      ˆ fd„|j        D ¦   «         ¦  «        z   dz   S )Nz	Hold[Sum[r¹  c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rf  r»  r½  s     €r   ru  z*MCodePrinter._print_Sum.<locals>.<genexpr>G  s-   øè è € Ð&JÐ&J¸1 t§|¢|°A¡¤Ð&JÐ&JÐ&JÐ&JÐ&JÐ&Jr   r
  )rz  ré  r‹  s   ` r   Ú
_print_SumzMCodePrinter._print_SumF  s6   ø€ Ø˜TŸYšYÐ&JÐ&JÐ&JÐ&JÀÄ	Ð&JÑ&JÔ&JÑJÔJÑJÈTÑQÐQr   c                óŠ   ‡ — |j         }d„ |j        D ¦   «         }dd                     ˆ fd„|g|z   D ¦   «         ¦  «        z   dz   S )Nc                ó:   — g | ]}|d          d k    r|d         n|‘ŒS )rÉ  r   r   ræ  s     r   rð  z2MCodePrinter._print_Derivative.<locals>.<listcomp>K  s,   € ÐGÐGÐG¨a˜˜1œ š˜��1”�¨ÐGÐGÐGr   zHold[D[r¹  c              3  óB   •K  — | ]}‰                      |¦  «        V — Œd S rf  r»  r½  s     €r   ru  z1MCodePrinter._print_Derivative.<locals>.<genexpr>L  s-   øè è € Ð$NÐ$N¸ T§\¢\°!¡_¤_Ð$NÐ$NÐ$NÐ$NÐ$NÐ$Nr   r
  )rm  Úvariable_countrz  )r`  rm  ÚdexprÚdvarss   `   r   Ú_print_DerivativezMCodePrinter._print_DerivativeI  sX   ø€ Ø”	ˆØGÐG°4Ô3FÐGÑGÔGˆØ˜4Ÿ9š9Ð$NÐ$NÐ$NÐ$N¸u¸gÈ¹oÐ$NÑ$NÔ$NÑNÔNÑNÐQUÑUÐUr   c                ó,   — d                      |¦  «        S )Nz(* {} *)rÛ  )r`  Útexts     r   Ú_get_commentzMCodePrinter._get_commentO  s   € Ø× Ò  Ñ&Ô&Ð&r   )0rú  Ú
__module__Ú__qualname__Ú__doc__ÚprintmethodÚlanguagerX  r	   rR  Ú__annotations__ÚsetrS  rT  rW  rh  ro  rx  rˆ  rŒ  r�  r’  r•  r˜  r›  r�  r   r£  r¦  r©  r¬  r°  r³  r¶  rÀ  Ú_print_tupleÚ_print_TuplerÄ  rÜ  rÞ  ró  r  Ú_print_MinMaxBaser  r  r  r  r  Ú__classcell__)r~  s   @r   rM  rM  {   s¼  ø€ € € € € € ðð ð €KØ!€Hà(,¨¨[Ô-Jð )ð )ØØðOð Oð )ð )Ðð ð ð ñ ð
 03¨s©u¬u€OÐ4Ð4Ð4Ñ4Ø!$ ¡¤€NÐ&Ð&Ð&Ñ&à "ð /ð /ð /ð /ðð ð ð=ð =ð =ð
ð ð ð ð ð9ð 9ð 9ðð ð ðð ð ðð ð ðð ð ðð ð ð
ð ð ðð ð ð!ð !ð !ðð ð ð
ð ð ðð ð ðð ð ð1ð 1ð 1ð
ð ð ðð ð ðDð Dð Dà€LØ€Lð+ð +ð +ðHð Hð Hð"+ð +ð +ð,Hð ,Hð ,Hð\Mð Mð Mð (ÐðBð Bð BðSð Sð SðRð Rð RðVð Vð Vð'ð 'ð 'ð 'ð 'ð 'ð 'r   rM  c                óF   — t          |¦  «                             | ¦  «        S )a  Converts an expr to a string of the Wolfram Mathematica code

    Examples
    ========

    >>> from sympy import mathematica_code as mcode, symbols, sin
    >>> x = symbols('x')
    >>> mcode(sin(x).series(x).removeO())
    '(1/120)*x^5 - 1/6*x^3 + x'
    )rM  r¼  )rm  ra  s     r   Úmathematica_coder'  S  s    € õ ˜Ñ!Ô!×)Ò)¨$Ñ/Ô/Ð/r   N)r  Ú
__future__r   Útypingr   Ú
sympy.corer   r   r   Úsympy.core.sortingr   Úsympy.printing.codeprinterr	   Úsympy.printing.precedencer
   rY  rM  r'  r   r   r   ú<module>r.     s  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ð )Ø /Ð /Ð /Ð /Ð /Ð /à 2Ð 2Ð 2Ð 2Ð 2Ð 2Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0ðiØ	ˆ^ˆ^˜UÐ#Ð$ðià	ˆ^ˆ^˜UÐ#Ð$ðið 
ˆ^ˆ^˜UÐ#Ð$ðið 
ˆ^ˆ^˜UÐ#Ð$ð	ið
 
ˆ^ˆ^˜UÐ#Ð$ðið 
ˆ^ˆ^˜UÐ#Ð$ðið 
ˆ^ˆ^˜UÐ#Ð$ðið 
ˆ^ˆ^˜UÐ#Ð$ðið ˆnˆn˜hÐ'Ð(ðið ˆnˆn˜hÐ'Ð(ðið ˆnˆn˜hÐ'Ð(ðið ˆnˆn˜hÐ'Ð(ðið ˆnˆn˜hÐ'Ð(ðið ˆnˆn˜hÐ'Ð(ðið ˆˆ Ð)Ð*ðið  ˆnˆn˜fÐ%Ð&ð!ið" ˆnˆn˜fÐ%Ð&ð#ið ið$ ˆnˆn˜fÐ%Ð&ð%ið& ˆnˆn˜fÐ%Ð&ð'ið( ˆnˆn˜fÐ%Ð&ð)ið* ˆnˆn˜fÐ%Ð&ð+ið, ˆ~ˆ~˜yÐ)Ð*ð-ið. ˆ~ˆ~˜yÐ)Ð*ð/ið0 ˆ~ˆ~˜yÐ)Ð*ð1ið2 ˆ~ˆ~˜yÐ)Ð*ð3ið4 ˆ~ˆ~˜yÐ)Ð*ð5ið6 ˆ~ˆ~˜yÐ)Ð*ð7ið8 ˆnˆn˜fÐ%Ð&ð9ið: �>�> ;Ð/Ð0ð;ið< 
ˆ_ˆ_˜eÐ$Ð%ð=ið> 
ˆ_ˆ_˜eÐ$Ð%ð?ið@ 
ˆ^ˆ^˜UÐ#Ð$ðAiðB ˆoˆo˜uÐ%Ð&ðCiðD ˆnˆn˜fÐ%Ð&ðEið ið iðF ˆnˆn˜fÐ%Ð&ðGiðH �� Ð-Ð.ðIiðJ �� Ð/Ð0ðKiðL �� ,Ð/Ð0ðMiðN �� Ð0Ð1ðOiðP 	ˆNˆN˜OÐ,Ð
-ðQiðR �.�. *Ð-Ð.ðSiðT �.�. *Ð-Ð.ðUiðV ˆ~ˆ~˜wÐ'Ð(ðWiðX �O�O WÐ-Ð.ðYiðZ �?�? KÐ0Ð1ð[ið\ �.�. *Ð-Ð.ð]ið^ ˆoˆo˜vÐ&Ð'ð_ið` 	ˆNˆN˜MÐ*Ð
+ðaiðb 	ˆNˆN˜MÐ*Ð
+ðciðd 
ˆ^ˆ^˜^Ð,Ð-ðeiðf 
ˆ^ˆ^˜^Ð,Ð-ðgið ið iðh 	ˆNˆN˜MÐ*Ð
+ðiiðj �>�> ;Ð/Ð0ðkiðl �N�N LÐ1Ð2ðmiðn �n�n nÐ5Ð6ðoiðp �� Ð1Ð2ðqiðr �/�/Ð#3Ð4Ð5ðsiðt ˆ~ˆ~˜xÐ(Ð)ðuiðv ˜˜¨,Ð7Ð8ðwiðx ˜/˜/Ð+;Ð<Ð=ðyiðz �/�/ ;Ð/Ð0ð{ið| ˜˜¨Ð5Ð6ð}ið~ �� *Ð-Ð.ðið@ �� Ð+Ð,ðAiðB �O�O ]Ð3Ð4ðCiðD �O�O \Ð2Ð3ðEiðF �O�O \Ð2Ð3ðGiðH �/�/ ;Ð/Ð0ðIið ið iðJ ˜˜¨Ð5Ð6ðKiðL �/�/ :Ð.Ð/ðMiðN �/�/ :Ð.Ð/ðOiðP ��¨Ð8Ð9ðQiðR ��¨Ð8Ð9ðSiðT �>�>Ð#3Ð4Ð5ðUiðV �O�O [Ð1Ð2ðWiðX �O�O [Ð1Ð2ðYiðZ �N�N KÐ0Ð1ð[ið\ �_�_ lÐ3Ð4ð]ið^ ˆoˆo˜vÐ&Ð'ð_ið` �~�~ ~Ð6Ð7ðaiðb �N�N KÐ0Ð1ðciðd �� )Ð,Ð-ðeiðf �� )Ð,Ð-ðgiðh �� )Ð,Ð-ðiiðj �� )Ð,Ð-ðkið ið iðl ��¡*Ð-Ð.ðmiñn ‘�¡*Ð-Ð.ðoiñp ‘�¡Ð)Ð*ðqiñr ‘�¡Ð)Ð*ðsiñt ‘^�^¡]Ð3Ð4ðuiñv ‘^�^¡]Ð3Ð4ðwiñx ‘�¡)Ð,Ð-ðyiñz ‘/�/¡:Ð.Ð/ð{iñ| 
‰_ˆ_™eÐ$Ð%ð}iñ~ 
‰_ˆ_™eÐ$Ð%ðiñ@ 	‰OˆOÑ/Ð0Ð
1ðAiñB 	‰OˆOÑ/Ð0Ð
1ðCiñD ‰ˆÑ 3Ð4Ð5ðEiñF ‘�¡)Ð,Ð-ðGiñH ‘/�/¡:Ð.Ð/ðIiñJ ‘N�N¡LÐ1Ð2ðKiñL ‘>�>Ñ#3Ð4Ð5ðMið iñN (˜Ñ)9Ð:Ð;Ùˆn™fÐ%Ð&ñQið ið i€ðXU'ð U'ñ U'ð U'ñ U'�;ñ U'ô U'ð U'ñp0ð 0ð 0ñ 0ð 0r   