Ë
    O/æjO1  ã                  ó®  — 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�y8(9  z
Mathematica code printer
é    )Úannotations)ÚAny)ÚBasicÚExprÚFloat)Údefault_sort_key)ÚCodePrinter)Ú
precedenceÚexpc                 ó   — y©NT© ©Úxs    ú]/root/repos/pocs/video-evals/.venv/lib/python3.12/site-packages/sympy/printing/mathematica.pyú<lambda>r      ó   � ó    ÚExpÚlogc                 ó   — yr   r   r   s    r   r   r      r   r   ÚLogÚsinc                 ó   — yr   r   r   s    r   r   r      r   r   ÚSinÚcosc                 ó   — yr   r   r   s    r   r   r      r   r   ÚCosÚtanc                 ó   — yr   r   r   s    r   r   r      r   r   ÚTanÚcotc                 ó   — yr   r   r   s    r   r   r      r   r   ÚCotÚsecc                 ó   — yr   r   r   s    r   r   r      r   r   ÚSecÚcscc                 ó   — yr   r   r   s    r   r   r      r   r   ÚCscÚasinc                 ó   — yr   r   r   s    r   r   r      r   r   ÚArcSinÚacosc                 ó   — yr   r   r   s    r   r   r      r   r   ÚArcCosÚatanc                 ó   — yr   r   r   s    r   r   r      r   r   ÚArcTanÚacotc                 ó   — yr   r   r   s    r   r   r      r   r   ÚArcCotÚasecc                 ó   — yr   r   r   s    r   r   r      r   r   ÚArcSecÚacscc                 ó   — yr   r   r   s    r   r   r      r   r   ÚArcCscÚatan2c                  ó   — yr   r   r   s    r   r   r      r   r   Úsinhc                 ó   — yr   r   r   s    r   r   r      r   r   ÚSinhÚcoshc                 ó   — yr   r   r   s    r   r   r       r   r   ÚCoshÚtanhc                 ó   — yr   r   r   s    r   r   r   !   r   r   ÚTanhÚcothc                 ó   — yr   r   r   s    r   r   r   "   r   r   ÚCothÚsechc                 ó   — yr   r   r   s    r   r   r   #   r   r   ÚSechÚcschc                 ó   — yr   r   r   s    r   r   r   $   r   r   ÚCschÚasinhc                 ó   — yr   r   r   s    r   r   r   %   r   r   ÚArcSinhÚacoshc                 ó   — yr   r   r   s    r   r   r   &   r   r   ÚArcCoshÚatanhc                 ó   — yr   r   r   s    r   r   r   '   r   r   ÚArcTanhÚacothc                 ó   — yr   r   r   s    r   r   r   (   r   r   ÚArcCothÚasechc                 ó   — yr   r   r   s    r   r   r   )   r   r   ÚArcSechÚacschc                 ó   — yr   r   r   s    r   r   r   *   r   r   ÚArcCschÚsincc                 ó   — yr   r   r   s    r   r   r   +   r   r   ÚSincÚ	conjugatec                 ó   — yr   r   r   s    r   r   r   ,   r   r   Ú	ConjugateÚMaxc                  ó   — yr   r   r   s    r   r   r   -   r   r   ÚMinc                  ó   — yr   r   r   s    r   r   r   .   r   r   Úerfc                 ó   — yr   r   r   s    r   r   r   /   r   r   ÚErfÚerf2c                  ó   — yr   r   r   s    r   r   r   0   r   r   Úerfcc                 ó   — yr   r   r   s    r   r   r   1   r   r   ÚErfcÚerfic                 ó   — yr   r   r   s    r   r   r   2   r   r   ÚErfiÚerfinvc                 ó   — yr   r   r   s    r   r   r   3   r   r   Ú
InverseErfÚerfcinvc                 ó   — yr   r   r   s    r   r   r   4   r   r   ÚInverseErfcÚerf2invc                  ó   — yr   r   r   s    r   r   r   5   r   r   Úexpintc                  ó   — yr   r   r   s    r   r   r   6   r   r   ÚExpIntegralEÚEic                 ó   — yr   r   r   s    r   r   r   7   r   r   ÚExpIntegralEiÚfresnelcc                 ó   — yr   r   r   s    r   r   r   8   r   r   ÚFresnelCÚfresnelsc                 ó   — yr   r   r   s    r   r   r   9   r   r   ÚFresnelSÚgammac                 ó   — yr   r   r   s    r   r   r   :   r   r   ÚGammaÚ
uppergammac                  ó   — yr   r   r   s    r   r   r   ;   r   r   Ú	polygammac                  ó   — yr   r   r   s    r   r   r   <   r   r   Ú	PolyGammaÚloggammac                 ó   — yr   r   r   s    r   r   r   =   r   r   ÚLogGammaÚbetac                  ó   — yr   r   r   s    r   r   r   >   r   r   ÚBetaÚCic                 ó   — yr   r   r   s    r   r   r   ?   r   r   ÚCosIntegralÚSic                 ó   — yr   r   r   s    r   r   r   @   r   r   ÚSinIntegralÚChic                 ó   — yr   r   r   s    r   r   r   A   r   r   ÚCoshIntegralÚShic                 ó   — yr   r   r   s    r   r   r   B   r   r   ÚSinhIntegralÚlic                 ó   — yr   r   r   s    r   r   r   C   r   r   ÚLogIntegralÚ	factorialc                 ó   — yr   r   r   s    r   r   r   D   r   r   Ú	FactorialÚ
factorial2c                 ó   — yr   r   r   s    r   r   r   E   r   r   Ú
Factorial2Úsubfactorialc                 ó   — yr   r   r   s    r   r   r   F   r   r   ÚSubfactorialÚcatalanc                 ó   — yr   r   r   s    r   r   r   G   r   r   ÚCatalanNumberÚharmonicc                  ó   — yr   r   r   s    r   r   r   H   r   r   ÚHarmonicNumberÚlucasc                 ó   — yr   r   r   s    r   r   r   I   r   r   ÚLucasLÚRisingFactorialc                  ó   — yr   r   r   s    r   r   r   J   r   r   Ú
PochhammerÚFallingFactorialc                  ó   — yr   r   r   s    r   r   r   K   r   r   ÚFactorialPowerÚlaguerrec                  ó   — yr   r   r   s    r   r   r   L   r   r   Ú	LaguerreLÚassoc_laguerrec                  ó   — yr   r   r   s    r   r   r   M   r   r   Úhermitec                  ó   — yr   r   r   s    r   r   r   N   r   r   ÚHermiteHÚjacobic                  ó   — yr   r   r   s    r   r   r   O   r   r   ÚJacobiPÚ
gegenbauerc                  ó   — yr   r   r   s    r   r   r   P   r   r   ÚGegenbauerCÚ
chebyshevtc                  ó   — yr   r   r   s    r   r   r   Q   r   r   Ú
ChebyshevTÚ
chebyshevuc                  ó   — yr   r   r   s    r   r   r   R   r   r   Ú
ChebyshevUÚlegendrec                  ó   — yr   r   r   s    r   r   r   S   r   r   Ú	LegendrePÚassoc_legendrec                  ó   — yr   r   r   s    r   r   r   T   r   r   Úmathieucc                  ó   — yr   r   r   s    r   r   r   U   r   r   ÚMathieuCÚmathieusc                  ó   — yr   r   r   s    r   r   r   V   r   r   ÚMathieuSÚmathieucprimec                  ó   — yr   r   r   s    r   r   r   W   r   r   ÚMathieuCPrimeÚmathieusprimec                  ó   — yr   r   r   s    r   r   r   X   r   r   ÚMathieuSPrimeÚ	stieltjesc                 ó   — yr   r   r   s    r   r   r   Y   r   r   ÚStieltjesGammaÚ
elliptic_ec                  ó   — yr   r   r   s    r   r   r   Z   r   r   Ú	EllipticEÚ
elliptic_fc                  ó   — yr   r   r   s    r   r   r   [   r   r   Ú
elliptic_kc                 ó   — yr   r   r   s    r   r   r   \   r   r   Ú	EllipticKÚelliptic_pic                  ó   — yr   r   r   s    r   r   r   ]   r   r   Ú
EllipticPiÚzetac                  ó   — yr   r   r   s    r   r   r   ^   r   r   ÚZetaÚdirichlet_etac                 ó   — yr   r   r   s    r   r   r   _   r   r   ÚDirichletEtaÚ
riemann_xic                 ó   — yr   r   r   s    r   r   r   `   r   r   Ú	RiemannXiÚbesselic                  ó   — yr   r   r   s    r   r   r   a   r   r   ÚBesselIÚbesseljc                  ó   — yr   r   r   s    r   r   r   b   r   r   ÚBesselJÚbesselkc                  ó   — yr   r   r   s    r   r   r   c   r   r   ÚBesselKÚbesselyc                  ó   — yr   r   r   s    r   r   r   d   r   r   ÚBesselYÚhankel1c                  ó   — yr   r   r   s    r   r   r   e   r   r   ÚHankelH1Úhankel2c                  ó   — yr   r   r   s    r   r   r   f   r   r   ÚHankelH2Úairyaic                 ó   — yr   r   r   s    r   r   r   g   r   r   ÚAiryAiÚairybic                 ó   — yr   r   r   s    r   r   r   h   r   r   ÚAiryBiÚairyaiprimec                 ó   — yr   r   r   s    r   r   r   i   r   r   ÚAiryAiPrimeÚairybiprimec                 ó   — yr   r   r   s    r   r   r   j   r   r   ÚAiryBiPrimeÚpolylogc                  ó   — yr   r   r   s    r   r   r   k   r   r   ÚPolyLogÚlerchphic                  ó   — yr   r   r   s    r   r   r   l   r   r   ÚLerchPhiÚgcdc                  ó   — yr   r   r   s    r   r   r   m   r   r   ÚGCDÚlcmc                  ó   — yr   r   r   s    r   r   r   n   r   r   ÚLCMÚjnc                  ó   — yr   r   r   s    r   r   r   o   r   r   ÚSphericalBesselJÚync                  ó   — yr   r   r   s    r   r   r   p   r   r   ÚSphericalBesselYÚhyperc                  ó   — yr   r   r   s    r   r   r   q   r   r   ÚHypergeometricPFQÚmeijergc                  ó   — yr   r   r   s    r   r   r   r   r   r   ÚMeijerGÚappellf1c                  ó   — yr   r   r   s    r   r   r   s   r   r   ÚAppellF1Ú
DiracDeltac                 ó   — yr   r   r   s    r   r   r   t   r   r   Ú	Heavisidec                 ó   — yr   r   r   s    r   r   r   u   r   r   ÚHeavisideThetac                  ó   — yr   r   r   s    r   r   r   v   r   r   ÚKroneckerDeltac                 ó   — yr   r   r   s    r   r   r   w   r   r   ÚSqrt)r<  Úsqrtc                  óV  ‡ — 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                ó2  — t        j                  | |«       t        t        «      | _        |j	                  di «      j                  «       }|j                  «       D ]  \  }}t        |t        «      rŒd„ |fg||<   Œ! | j                  j                  |«       y)z+Register function mappings supplied by userrE  c                  ó   — yr   r   r   s    r   r   z'MCodePrinter.__init__.<locals>.<lambda>‘   r   r   N)
r	   Ú__init__ÚdictÚknown_functionsÚgetÚcopyÚitemsÚ
isinstanceÚlistÚupdate)ÚselfÚsettingsÚ	userfuncsÚkÚvs        r   rK  zMCodePrinter.__init__Š   s„   € ä×Ñ˜T 8Ô,Ü#¤OÓ4ˆÔØ—L‘LÐ!1°2Ó6×;Ñ;Ó=ˆ	Ø—O‘OÓ%ò 	6‰DˆAˆqÜ˜a¤Õ&Ù!0°!Ð 4Ð5�	˜!’ð	6ð 	×Ñ×#Ñ# IÕ.r   c                ó   — |S ©Nr   )rT  Úliness     r   Ú_format_codezMCodePrinter._format_code”   s   € Øˆr   c                óŽ   — t        |«      }| j                  |j                  |«      ›d| j                  |j                  |«      ›�S )Nú^)r
   ÚparenthesizeÚbaser   )rT  ÚexprÚPRECs      r   Ú
_print_PowzMCodePrinter._print_Pow—   s>   € Ü˜$ÓˆØ×+Ñ+¨D¯I©I°tÕ<Ø×+Ñ+¨D¯H©H°dÔ;ð=ð 	=r   c                óÊ   •‡ ‡— t        |«      Š|j                  «       \  }}t        ‰‰ �   |j                  |Ž «      }|r#|dz  }|dj                  ˆˆ fd„|D «       «      z  }|S )NÚ*z**c              3  óB   •K  — | ]  }‰j                  |‰«      –— Œ y ­wrZ  )r_  )Ú.0Úarb  rT  s     €€r   ú	<genexpr>z*MCodePrinter._print_Mul.<locals>.<genexpr>¢   s   øè ø€ ÒD¸A˜T×.Ñ.¨q°$×7ÑDùs   ƒ)r
   Úargs_cncÚsuperÚ
_print_MulÚfuncÚjoin)rT  ra  ÚcÚncÚresrb  Ú	__class__s   `    @€r   rl  zMCodePrinter._print_Mulœ   s_   ú€ Ü˜$ÓˆØ—‘“‰ˆˆ2Ü‰gÑ   §¡¨A Ó/ˆÙØ�3‰JˆCØ�4—9‘9ÔDÀÔDÓDÑDˆCØˆ
r   c                ó¬   — | j                  |j                  «      }| j                  |j                  «      }|j                  }dj	                  |||«      S )Nz{} {} {})Ú_printÚlhsÚrhsÚrel_opÚformat)rT  ra  Úlhs_codeÚrhs_codeÚops        r   Ú_print_RelationalzMCodePrinter._print_Relational¥   sD   € Ø—;‘;˜tŸx™xÓ(ˆØ—;‘;˜tŸx™xÓ(ˆØ�[‰[ˆØ× Ñ  ¨2¨xÓ8Ð8r   c                 ó   — y)NÚ0r   ©rT  ra  s     r   Ú_print_ZerozMCodePrinter._print_Zero¬   ó   € Ør   c                 ó   — y)NÚ1r   r  s     r   Ú
_print_OnezMCodePrinter._print_One¯   r�  r   c                 ó   — y)Nz-1r   r  s     r   Ú_print_NegativeOnezMCodePrinter._print_NegativeOne²   ó   € Ør   c                 ó   — y)Nz1/2r   r  s     r   Ú_print_HalfzMCodePrinter._print_Halfµ   s   € Ør   c                 ó   — y)NÚIr   r  s     r   Ú_print_ImaginaryUnitz!MCodePrinter._print_ImaginaryUnit¸   r�  r   c                 ó   — y)NÚInfinityr   r  s     r   Ú_print_InfinityzMCodePrinter._print_Infinity½   s   € Ør   c                 ó   — y)Nz	-Infinityr   r  s     r   Ú_print_NegativeInfinityz$MCodePrinter._print_NegativeInfinityÀ   s   € Ør   c                 ó   — y)NÚComplexInfinityr   r  s     r   Ú_print_ComplexInfinityz#MCodePrinter._print_ComplexInfinityÃ   s   € Ø r   c                 ó   — y)NÚIndeterminater   r  s     r   Ú
_print_NaNzMCodePrinter._print_NaNÆ   s   € Ør   c                 ó   — y)NÚEr   r  s     r   Ú_print_Exp1zMCodePrinter._print_Exp1Ë   r�  r   c                 ó   — y)NÚPir   r  s     r   Ú	_print_PizMCodePrinter._print_PiÎ   r‡  r   c                 ó   — y)NÚGoldenRatior   r  s     r   Ú_print_GoldenRatiozMCodePrinter._print_GoldenRatioÑ   s   € Ør   c                ó`   — |j                  d¬«      }t        |«      }| j                  ||«      S )NT)rm  )Úexpandr
   r_  )rT  ra  Úexpandedrb  s       r   Ú_print_TribonacciConstantz&MCodePrinter._print_TribonacciConstantÔ   s/   € Ø—;‘; D�;Ó)ˆÜ˜$ÓˆØ× Ñ  ¨4Ó0Ð0r   c                 ó   — y)NÚ
EulerGammar   r  s     r   Ú_print_EulerGammazMCodePrinter._print_EulerGammaÙ   s   € Ør   c                 ó   — y)NÚCatalanr   r  s     r   Ú_print_CatalanzMCodePrinter._print_CatalanÜ   s   € Ør   c                óD   ‡ — ddj                  ˆ fd„|D «       «      z   dz   S )Nú{ú, c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrZ  ©Údoprint©rg  rh  rT  s     €r   ri  z+MCodePrinter._print_list.<locals>.<genexpr>á   s   øè ø€ Ò=°1˜tŸ|™|¨AŸÑ=ùó   ƒú}©rn  r  s   ` r   Ú_print_listzMCodePrinter._print_listà   s"   ø€ Ø�T—Y‘YÓ=¸Ô=Ó=Ñ=ÀÑCÐCr   c                ó@   — | j                  |j                  «       «      S rZ  ©r°  Útolistr  s     r   Ú_print_ImmutableDenseMatrixz(MCodePrinter._print_ImmutableDenseMatrixå   ó   € Ø�|‰|˜DŸK™K›MÓ*Ð*r   c                ób   ‡ ‡‡— ˆ fd„Šˆˆfd„}ˆˆ fd„}dj                   |«        |«       «      S )Nc                ó€   •— dj                  ‰j                  | d   dz   | d   dz   f«      ‰j                  |«      «      S )Nú{} -> {}r   é   ©rx  r°  ©ÚposÚvalrT  s     €r   Ú
print_rulez=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_ruleê   sD   ø€ Ø×$Ñ$Ø�L‰L˜#˜a™& ™( C¨¡F¨1¡HÐ-Ó.°·±¸SÓ0AóCð Cr   c                 óž   •— t        ‰j                  «       j                  «       t        ¬«      } ddj	                  ˆfd„| D «       «      z   dz   S )N)Úkeyr¬  r­  c              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wrZ  r   )rg  rW  rX  rÃ  s      €r   ri  zPMCodePrinter._print_ImmutableSparseMatrix.<locals>.print_data.<locals>.<genexpr>ñ   s   øè ø€ Ò=©t¨q°!™* Q¨×*Ñ=ùs   ƒr³  )ÚsortedÚtodokrP  r   rn  )rP  ra  rÃ  s    €€r   Ú
print_dataz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dataî   sF   ø€ Ü˜4Ÿ:™:›<×-Ñ-Ó/Ô5EÔFˆEØØ—	‘	Ó=°uÔ=Ó=ñ>àñð r   c                 ó:   •— ‰j                  ‰ j                  «      S rZ  ©r°  Úshape©ra  rT  s   €€r   Ú
print_dimsz=MCodePrinter._print_ImmutableSparseMatrix.<locals>.print_dimsô   s   ø€ Ø—<‘< §
¡
Ó+Ð+r   úSparseArray[{}, {}]©rx  )rT  ra  rÉ  rÎ  rÃ  s   ``  @r   Ú_print_ImmutableSparseMatrixz)MCodePrinter._print_ImmutableSparseMatrixè   s,   ú€ ô	Cõ	õ	,ð %×+Ñ+©J«L¹*»,ÓGÐGr   c                ó@   — | j                  |j                  «       «      S rZ  r·  r  s     r   Ú_print_ImmutableDenseNDimArrayz+MCodePrinter._print_ImmutableDenseNDimArrayù   rº  r   c                óv   ‡ ‡‡‡‡— d„ Šd„ Šˆ fd„Šˆˆˆˆfd„}ˆˆ fd„}dj                   |«        |«       «      S )Nc                ó>   — ddj                  d„ | D «       «      z   dz   S )Nr¬  r­  c              3  ó    K  — | ]  }|–— Œ y ­wrZ  r   )rg  rh  s     r   ri  zZMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_list.<locals>.<genexpr>þ   s   è ø€ Ò":¨¤1Ñ":ùs   ‚r³  r´  )Ústring_lists    r   Úprint_string_listzGMCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_string_listý   s!   € Ø˜Ÿ™Ñ":¨kÔ":Ó:Ñ:¸SÑ@Ð@r   c                 ó&   — 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   –— Œ y­w)r¾  Nr   )rg  Úis     r   ri  z]MCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index.<locals>.<genexpr>  s   è ø€ Ò- 1˜˜Q�Ñ-ùs   ‚)Útuple)Úargss    r   Úto_mathematica_indexzJMCodePrinter._print_ImmutableSparseNDimArray.<locals>.to_mathematica_index   s   € ô Ñ-¨Ô-Ó-Ð-r   c                ód   •— dj                  ‰j                  | «      ‰j                  |«      «      S )z.Helper function to print a rule of Mathematicar½  r¿  rÀ  s     €r   rÃ  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_rule	  s(   ø€ à×$Ñ$ T§\¡\°#Ó%6¸¿¹ÀSÓ8IÓJÐJr   c                 óº   •—  ‰t        ‰j                  j                  «       «      D � �cg c]   \  } } ‰ ‰‰j                  | «      Ž |«      ‘Œ" c}} «      S c c}} w )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.
            )rÇ  Ú_sparse_arrayrP  Ú_get_tuple_index)rÅ  Úvaluera  rÃ  rØ  rÞ  s     €€€€r   rÉ  z@MCodePrinter._print_ImmutableSparseNDimArray.<locals>.print_data  sg   ø€ ñ %ô #)¨×);Ñ);×)AÑ)AÓ)CÓ"D÷Fñ �C˜ñ Ù(¨4×+@Ñ+@ÀÓ+EÐGØõó Fóð ùóFs   ª%A
c                 ó:   •— ‰j                  ‰ 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Ð  )rT  ra  rÉ  rÎ  rÃ  rØ  rÞ  s   ``  @@@r   Ú_print_ImmutableSparseNDimArrayz,MCodePrinter._print_ImmutableSparseNDimArrayü   s7   ü€ ò	Aò	.ô	K÷	õ"	,ð %×+Ñ+©J«L¹*»,ÓGÐGr   c                ó�  ‡ — |j                   j                  ‰ j                  v ra‰ j                  |j                   j                     }|D ]8  \  }} ||j                  Ž sŒ|›d‰ j	                  |j                  d«      ›d�c S  n�|j                   j                  ‰ j
                  v rk‰ j
                  |j                   j                     \  }}‰ j                  |«      r4t        ˆ fd„|D «       «      r ‰ j                  |j                  |«      «      S |j                   j                  d‰ j	                  |j                  d«      z  z   S )Nú[r­  ú]c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrZ  )Ú
_can_print)rg  ÚfrT  s     €r   ri  z/MCodePrinter._print_Function.<locals>.<genexpr>3  s   øè ø€ Ò0YÈ°·±À×1CÑ0Yùr²  z[%s])
rm  Ú__name__rM  rÝ  Ú	stringifyÚ_rewriteable_functionsrê  Úallrt  Úrewrite)rT  ra  Ú
cond_mfuncÚcondÚmfuncÚtarget_fÚrequired_fss   `      r   Ú_print_FunctionzMCodePrinter._print_Function*  s  ø€ Ø�9‰9×Ñ ×!5Ñ!5Ñ5Ø×-Ñ-¨d¯i©i×.@Ñ.@ÑAˆJØ)ò O‘��eÙ˜Ÿ™Ò#Ú',¨d¯n©n¸T¿Y¹YÈÕ.MÐNÒNñOð �Y‰Y×Ñ 4×#>Ñ#>Ñ>à$(×$?Ñ$?ÀÇ	Á	×@RÑ@RÑ$SÑ!ˆH�kØ�‰˜xÔ(¬SÓ0YÈ[Ô0YÔ-YØ—{‘{ 4§<¡<°Ó#9Ó:Ð:Ø�y‰y×!Ñ! F¨T¯^©^¸D¿I¹IÀtÓ-LÑ$LÑLÐLr   c                ó   — t        |j                  «      dk(  r-dj                  | j                  |j                  d   «      «      S dj                  | j                  |j                  d   «      | j                  |j                  d   «      «      S )Nr¾  zProductLog[{}]r   zProductLog[{}, {}])ÚlenrÝ  rx  rt  r  s     r   Ú_print_LambertWzMCodePrinter._print_LambertW9  sp   € Üˆt�y‰y‹>˜QÒØ#×*Ñ*¨4¯;©;°t·y±yÀ±|Ó+DÓEÐEØ#×*Ñ*Ø�K‰K˜Ÿ	™	 !™Ó% t§{¡{°4·9±9¸Q±<Ó'@óBð 	Br   c                óî   ‡ — t        |j                  «      dk(  r1|j                  d   dd  s|j                  d   |j                  d   g}n|j                  }ddj	                  ˆ fd„|D «       «      z   dz   S )Nr¾  r   zHold[Integrate[r­  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrZ  r¯  r±  s     €r   ri  z/MCodePrinter._print_Integral.<locals>.<genexpr>D  s   øè ø€ Ò,KÀ¨T¯\©\¸!¯_Ñ,Kùr²  ú]])rø  Ú	variablesÚlimitsrÝ  rn  )rT  ra  rÝ  s   `  r   Ú_print_IntegralzMCodePrinter._print_Integral?  sh   ø€ Üˆt�~‰~Ó !Ò#¨D¯K©K¸©N¸1¸2Ñ,>Ø—I‘I˜a‘L $§.¡.°Ñ"3Ð4‰Dà—9‘9ˆDØ  4§9¡9Ó,KÀdÔ,KÓ#KÑKÈdÑRÐRr   c                óX   ‡ — ddj                  ˆ fd„|j                  D «       «      z   dz   S )Nz	Hold[Sum[r­  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrZ  r¯  r±  s     €r   ri  z*MCodePrinter._print_Sum.<locals>.<genexpr>G  s   øè ø€ Ò&J¸1 t§|¡|°A§Ñ&Jùr²  rü  )rn  rÝ  r  s   ` r   Ú
_print_SumzMCodePrinter._print_SumF  s&   ø€ Ø˜TŸY™YÓ&JÀÇ	Á	Ô&JÓJÑJÈTÑQÐQr   c                óº   ‡ — |j                   }|j                  D �cg c]  }|d   dk(  r|d   n|‘Œ }}ddj                  ˆ fd„|g|z   D «       «      z   dz   S c c}w )Nr¾  r   zHold[D[r­  c              3  ó@   •K  — | ]  }‰j                  |«      –— Œ y ­wrZ  r¯  r±  s     €r   ri  z1MCodePrinter._print_Derivative.<locals>.<genexpr>L  s   øè ø€ Ò$N¸ T§\¡\°!§_Ñ$Nùr²  rü  )ra  Úvariable_countrn  )rT  ra  ÚdexprrÛ  Údvarss   `    r   Ú_print_DerivativezMCodePrinter._print_DerivativeI  sd   ø€ Ø—	‘	ˆØ37×3FÑ3FÖG¨a˜˜1™ š��1’¨Ñ)ÐGˆÐGØ˜4Ÿ9™9Ó$N¸u¸gÈ¹oÔ$NÓNÑNÐQUÑUÐUùò Hs   œAc                ó$   — dj                  |«      S )Nz(* {} *)rÐ  )rT  Útexts     r   Ú_get_commentzMCodePrinter._get_commentO  s   € Ø× Ñ  Ó&Ð&r   )0rì  Ú
__module__Ú__qualname__Ú__doc__ÚprintmethodÚlanguagerL  r	   rF  Ú__annotations__ÚsetrG  rH  rK  r\  rc  rl  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__)rr  s   @r   rA  rA  {   s  ø… ñð €KØ!€Há(,¨[×-JÑ-Jñ )ØØñOñ )Ð�~ó ñ
 03«u€OÐ,Ó4Ù!$£€N�JÓ&à "ó /òò=ô
ò9òòòòòò
òò!òò
òòò1ò
òòDà€LØ€Lò+òHò"+ò,Hò\Mð (ÐòBòSòRòVö'r   rA  c                ó6   — t        |«      j                  | «      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'
    )rA  r°  )ra  rU  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
   rM  rA  r  r   r   r   ú<module>r     sN	  ðñõ #Ý ç )Ñ )Ý /å 2Ý 0ðiØ	‰^˜UÐ#Ð$ðià	‰^˜UÐ#Ð$ðið 
‰^˜UÐ#Ð$ðið 
‰^˜UÐ#Ð$ð	ið
 
‰^˜UÐ#Ð$ðið 
‰^˜UÐ#Ð$ðið 
‰^˜UÐ#Ð$ðið 
‰^˜UÐ#Ð$ðið ‰n˜hÐ'Ð(ðið ‰n˜hÐ'Ð(ðið ‰n˜hÐ'Ð(ðið ‰n˜hÐ'Ð(ðið ‰n˜hÐ'Ð(ðið ‰n˜hÐ'Ð(ðið ‰ Ð)Ð*ðið  ‰n˜fÐ%Ð&ð!ið" ‰n˜fÐ%Ð&ñ#ið$ ‰n˜fÐ%Ð&ð%ið& ‰n˜fÐ%Ð&ð'ið( ‰n˜fÐ%Ð&ð)ið* ‰n˜fÐ%Ð&ð+ið, ‰~˜yÐ)Ð*ð-ið. ‰~˜yÐ)Ð*ð/ið0 ‰~˜yÐ)Ð*ð1ið2 ‰~˜yÐ)Ð*ð3ið4 ‰~˜yÐ)Ð*ð5ið6 ‰~˜yÐ)Ð*ð7ið8 ‰n˜fÐ%Ð&ð9ið: ‘> ;Ð/Ð0ð;ið< 
‰_˜eÐ$Ð%ð=ið> 
‰_˜eÐ$Ð%ð?ið@ 
‰^˜UÐ#Ð$ðAiðB ‰o˜uÐ%Ð&ðCiðD ‰n˜fÐ%Ð&òEiðF ‰n˜fÐ%Ð&ðGiðH ‘ Ð-Ð.ðIiðJ ‘ Ð/Ð0ðKiðL ‘ ,Ð/Ð0ðMiðN ‘ Ð0Ð1ðOiðP 	‰N˜OÐ,Ð
-ðQiðR ‘. *Ð-Ð.ðSiðT ‘. *Ð-Ð.ðUiðV ‰~˜wÐ'Ð(ðWiðX ‘O WÐ-Ð.ðYiðZ ‘? KÐ0Ð1ð[ið\ ‘. *Ð-Ð.ð]ið^ ‰o˜vÐ&Ð'ð_ið` 	‰N˜MÐ*Ð
+ðaiðb 	‰N˜MÐ*Ð
+ðciðd 
‰^˜^Ð,Ð-ðeiðf 
‰^˜^Ð,Ð-ògiðh 	‰N˜MÐ*Ð
+ðiiðj ‘> ;Ð/Ð0ðkiðl ‘N LÐ1Ð2ðmið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 ]Ð3Ð4ðCiðD ‘O \Ð2Ð3ðEiðF ‘O \Ð2Ð3ðGiðH ‘/ ;Ð/Ð0ò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 [Ð1Ð2ðWiðX ‘O [Ð1Ð2ðYiðZ ‘N KÐ0Ð1ð[ið\ ‘_ lÐ3Ð4ð]ið^ ‰o˜vÐ&Ð'ð_ið` ‘~ ~Ð6Ð7ðaiðb ‘N KÐ0Ð1ðciðd ‘ )Ð,Ð-ðeiðf ‘ )Ð,Ð-ðgiðh ‘ )Ð,Ð-ðiiðj ‘ )Ð,Ð-òk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Ñ/Ð0Ð
1ðAiñB 	ŠOÑ/Ð0Ð
1ðCiñD ŠÑ 3Ð4Ð5ðEiñF ’¡)Ð,Ð-ðGiñH ’/¡:Ð.Ð/ðIiñJ ’N¡LÐ1Ð2ðKiñL ’>Ñ#3Ð4Ð5ñMiòN (Ñ)9Ð:Ð;Ú™fÐ%Ð&óQi€öXU'�;ô U'õp0r   