� ��gV��0�dZddlmZddlmZddlmZddlmZddl m Z ddl m Z ddl mZmZdd lmZmZmZdd lmZdd lmZmZdd lmZmZmZGd �de��ZGd�de��ZGd�de��Z ee��dd���Z!dd�Z"eZ#dS)z A MathML printer. �)� annotations)�Any)�Mul)�S)�default_sort_key)�sympify)�split_super_sub�requires_partial)�precedence_traditional� PRECEDENCE�PRECEDENCE_TRADITIONAL)� greek_unicode)�Printer�print_function)� prec_to_dps�repr_dps�to_strc�N�eZdZUdZddddddddddddid d �Zd ed <dd �Zd�ZdS)�MathMLPrinterBasez^Contains common code required for MathMLContentPrinter and MathMLPresentationPrinter. Nzutf-8F� abbreviated�[�plainT�&#xB7;)�order�encoding�fold_frac_powers�fold_func_brackets�fold_short_frac�inv_trig_style� ln_notation�long_frac_ratio� mat_delim�mat_symbol_style� mul_symbol� root_notation� symbol_names�mul_symbol_mathml_numberszdict[str, Any]�_default_settingsc����tj�|��ddlm}m}|���_Gd�d|�����fd�}|�j_dS)Nr)�Document�Textc��eZdZdd�ZdS)�+MathMLPrinterBase.__init__.<locals>.RawText�c�v�|jr1|�d�||j|����dSdS)Nz{}{}{})�data�write�format)�self�writer�indent� addindent�newls �e/home/asafur/pinokio/api/open-webui.git/app/env/lib/python3.11/site-packages/sympy/printing/mathml.py�writexmlz4MathMLPrinterBase.__init__.<locals>.RawText.writexml6sC���9�K��L�L�������D�!I�!I�J�J�J�J�J�K�K�N)r.r.r.)�__name__� __module__� __qualname__r9�r:r8�RawTextr-5s.������ K� K� K� K� K� Kr:r?c�B�����}||_�j|_|S�N)r0�dom� ownerDocument)r0�rr?r3s ��r8�createRawTextNodez5MathMLPrinterBase.__init__.<locals>.createRawTextNode:s#����� � �A��A�F�"�h�A�O��Hr:)r�__init__�xml.dom.minidomr*r+rB�createTextNode)r3�settingsr*r+rEr?s` @r8rFzMathMLPrinterBase.__init__+s��������x�(�(�(�2�2�2�2�2�2�2�2��8�:�:���  K� K� K� K� K�d� K� K� K�  � � � � � � #4�����r:c��tj||��}|���}|�dd��}|���}|S)z2 Prints the expression as MathML. �ascii�xmlcharrefreplace)r�_print�toxml�encode�decode)r3�expr�mathML�unistr�xmlbstr�ress r8�doprintzMathMLPrinterBase.doprintBsJ�����d�+�+���������-�-��)<�=�=���n�n����� r:rA)r;r<r=�__doc__r(�__annotations__rFrVr>r:r8rrs���������� ��!�#��'����#����%-�)�)������"4�4�4�4�.����r:rc���eZdZdZdZd�Zd�Zd'd�Zd�Zd�Z d �Z d �Z d �Z d �Z d �Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZeZeZd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d!�Z$d"�Z%e"Z&e"Z'e"Z(d#�Z)d$�Z*d%�Z+d&�Z,dS)(�MathMLContentPrinterz}Prints an expression to the Content MathML markup language. References: https://www.w3.org/TR/MathML2/chapter4.html �_mathml_contentc���idd�dd�dd�dd�d d�d d �d d �dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�id d �d!d"�d#d#�d$d$�d%d%�d&d&�d'd'�d(d(�d)d)�d*d*�d+d+�d,d,�d-d-�d.d.�d/d0�d1d2�d3d4��id5d6�d7d8�d9d:�d;d8�d<d=�d>d?�d@dA�dBdC�dDdE�dFdG�dHdI�dJdK�dLdM�dNdO�dPdQ�dRdS�dTdU��dVdWdX��}|jjD]}|j}||vr ||cS�|jj}|���S)Y�)Returns the MathML tag for an expression.�Add�plusr�times� Derivative�diff�Number�cn�int�Pow�power�Max�max�Min�min�Abs�abs�And�and�Or�or�Xor�xor�Not�not�Implies�implies�Symbol�ci� MatrixSymbol� RandomSymbol�Integral�Sum�sum�sin�cos�tan�cot�csc�sec�sinh�cosh�tanh�coth�csch�sech�asin�arcsin�asinh�arcsinh�acos�arccos�acosh�arccosh�atan�arctan�atanh�arctanh�atan2�acot�arccot�acoth�arccoth�asec�arcsec�asech�arcsech�acsc�arccsc�acsch�arccsch�log�ln�Equality�eq� Unequality�neq� GreaterThan�geq�LessThan�leq�StrictGreaterThan�gt�StrictLessThan�lt�union� intersect)�Union� Intersection�� __class__�__mro__r;�lower)r3�e� translate�cls�ns r8� mathml_tagzMathMLContentPrinter.mathml_tagTs��6 � �6�6 � �7�6 � �&�6 � �d� 6 � �4� 6 � �7� 6 � �5�6 � �5�6 � �5�6 � �5�6 � �$�6 � �5�6 � �5�6 � �y�6 � �d�6 � �D�!6 �" �D�#6 �6 �$ ��%6 �& �5�'6 �( �5�)6 �* �5�+6 �, �5�-6 �. �5�/6 �0 �5�16 �2 �5�36 �4 �F�56 �6 �F�76 �8 �F�96 �: �F�;6 �< �F�=6 �> �F�?6 �@ �H�A6 �B �Y�C6 �D �H�E6 �6 �6 �F �Y�G6 �H �H�I6 �J �Y�K6 �L �X�M6 �N �H�O6 �P �Y�Q6 �R �H�S6 �T �Y�U6 �V �H�W6 �X �Y�Y6 �Z �4�[6 �\ ��]6 �^ �%�_6 �` �5�a6 �b ��c6 �d ��e6 �f �d�g6 �6 �h�'�k6 �6 �6 � �p�;�&� $� $�C�� �A��I�~�~� ��|�#�#�#�� �K� ���w�w�y�y�r:c���|���rr|j�d��}|�|j�d����|�|�| ����|Sddlm}||��\}}|tjur�|j�d��}|�|j�d����|�|� |����|�|� |����|S|� ��\}}|tjur.t|��dkr|� |d��S|j dkr&tj|�����}|j�d��}|�|j�d����|dkr(|�|� |����|D]*}|�|� |�����+|S) N�apply�minusr��fraction�divide��oldr`)�could_extract_minus_signrB� createElement� appendChild� _print_Mul�sympy.simplifyr�r�OnerM� as_coeff_mul�lenrr� _from_args�as_ordered_factors) r3rQ�xr��numer�denom�coeff�terms�terms r8r�zMathMLContentPrinter._print_Mul�s�� � (� (� *� *� ���&�&�w�/�/�A� �M�M�$�(�0�0��9�9� :� :� :� �M�M�$�/�/�4�%�0�0� 1� 1� 1��H�+�+�+�+�+�+��x��~�~� ��u� ��� � ���&�&�w�/�/�A� �M�M�$�(�0�0��:�:� ;� ;� ;� �M�M�$�+�+�e�,�,� -� -� -� �M�M�$�+�+�e�,�,� -� -� -��H��(�(�*�*� ��u� �A�E�>�>�c�%�j�j�A�o�o��;�;�u�Q�x�(�(� (� �:�� � ��N�5�)�)�<�<�>�>�E� �H� "� "�7� +� +�� � � �d�h�,�,�W�5�5�6�6�6� �A�:�:� �M�M�$�+�+�e�,�,� -� -� -�� -� -�D� �M�M�$�+�+�d�+�+� ,� ,� ,� ,��r:Nc���|�||���}|�|d��}g}|dd�D�]}|���r�|j�d��}|�|j�d����|�|��|�|�| ����|}||dkr|�|����|�|��|�|��}||dkr(|�|�|������ t|��dkr|S|j�d��}|�|j�d����|r*|�|�d����|�*|S)N�rrr�r�r������r_) �_as_ordered_termsrMr�rBr�r��appendr��pop)r3rQr�args� lastProcessed� plusNodes�argr�s r8� _print_AddzMathMLContentPrinter._print_Add�s����%�%�d�%�%�8�8��� � �D��G�,�,� �� �����8� 7� 7�C��+�+�-�-� 7��H�*�*�7�3�3��� � �d�h�4�4�W�=�=�>�>�>�� � �m�,�,�,�� � �d�k�k�3�$�/�/�0�0�0� !� ��$�r�(�?�?��$�$�]�3�3�3��� � ��/�/�/� $� � �C� 0� 0� ��$�r�(�?�?��$�$�T�[�[��%5�%5�6�6�6�� �y�>�>�Q� � � � � �H� "� "�7� +� +�� � � �d�h�,�,�V�4�4�5�5�5�� ,� �M�M�)�-�-��*�*� +� +� +�� ,��r:c��|jdjdkrtd���|j�d��}t |j��D]�\}\}}|t |j��dz krI|dkrC|j�d��}|�|�|����nj|j�d��}|�|�|����|�|�|����|�|����|S)Nr�Tz�All Piecewise expressions must contain an (expr, True) statement to be used as a default condition. Without one, the generated expression may not evaluate to anything under some condition.� piecewiser�� otherwise�piece) r��cond� ValueErrorrBr�� enumerater�r�rM)r3rQ�root�ir��cr�s r8�_print_Piecewisez%MathMLContentPrinter._print_Piecewise�s*�� �9�R�=� �� %� %��/�0�0� 0� �x�%�%�k�2�2��"�4�9�-�-� $� $�I�A�v��1��C�� �N�N�Q�&�&�&�1��9�9���.�.�{�;�;���!�!�$�+�+�a�.�.�1�1�1�1���.�.�w�7�7���!�!�$�+�+�a�.�.�1�1�1��!�!�$�+�+�a�.�.�1�1�1� � � �U� #� #� #� #�� r:c �T�|j�d��}t|j��D]x}|j�d��}t|j��D]2}|�|�|||f�����3|�|���y|S)N�matrix� matrixrow)rBr��range�rows�colsr�rM)r3�mr�r��x_r�js r8�_print_MatrixBasez&MathMLContentPrinter._print_MatrixBase�s��� �H� "� "�8� ,� ,���q�v��� � �A��(�(�(��5�5�C��1�6�]�]� 6� 6������ � �A�a��d�G� 4� 4�5�5�5�5� �M�M�#� � � � ��r:c��|jdkr[|j�d��}|�|j�t |j������|S|j�d��}|�|j�d����|j�d��}|�|j�t |j������|j�d��}|�|j�t |j������|�|��|�|��|S)Nr�rdr�r�)�qrBr�r�rH�str�p)r3r�r��xnum�xdenoms r8�_print_Rationalz$MathMLContentPrinter._print_Rational�s3�� �3�!�8�8���&�&�t�,�,�A� �M�M�$�(�1�1�#�a�c�(�(�;�;� <� <� <��H� �H� "� "�7� +� +�� � � �d�h�,�,�X�6�6�7�7�7��x�%�%�d�+�+�� �����0�0��Q�S���:�:�;�;�;���'�'��-�-�����4�8�2�2�3�q�s�8�8�<�<�=�=�=� � � �d���� � � �f�����r:c��|j�d��}|�|j�|�|������|j�d��}|j�d��}|�|�|jd����|�|�|jd����|�|��|�|��|�|�|jd����|S)Nr��bvar�lowlimitr��r)rBr�r�r�rMr�)r3r�r��x_1�x_2s r8� _print_Limitz!MathMLContentPrinter._print_Limits�� �H� "� "�7� +� +�� � � �d�h�,�,�T�_�_�Q�-?�-?�@�@�A�A�A��h�$�$�V�,�,���h�$�$�Z�0�0�� ���� � �A�F�1�I�.�.�/�/�/� ���� � �A�F�1�I�.�.�/�/�/� � � �c���� � � �c���� � � �d�k�k�!�&��)�,�,�-�-�-��r:c�6�|j�d��S)N� imaginaryi�rBr��r3r�s r8�_print_ImaginaryUnitz)MathMLContentPrinter._print_ImaginaryUnit����x�%�%�l�3�3�3r:c�6�|j�d��S)N� eulergammarrs r8�_print_EulerGammaz&MathMLContentPrinter._print_EulerGammar r:c��|j�d��}|�|j�d����|S)zwWe use unicode #x3c6 for Greek letter phi as defined here https://www.w3.org/2003/entities/2007doc/isogrk1.htmlrduφ�rBr�r�rH�r3r�r�s r8�_print_GoldenRatioz'MathMLContentPrinter._print_GoldenRatiosA�� �H� "� "�4� (� (�� � � �d�h�-�-�.J�K�K�L�L�L��r:c�6�|j�d��S)N� exponentialerrs r8� _print_Exp1z MathMLContentPrinter._print_Exp1 s���x�%�%�n�5�5�5r:c�6�|j�d��S)N�pirrs r8� _print_PizMathMLContentPrinter._print_Pi#s���x�%�%�d�+�+�+r:c�6�|j�d��S)N�infinityrrs r8�_print_Infinityz$MathMLContentPrinter._print_Infinity&����x�%�%�j�1�1�1r:c�6�|j�d��S)N� notanumberrrs r8� _print_NaNzMathMLContentPrinter._print_NaN)r r:c�6�|j�d��S)N�emptysetrrs r8�_print_EmptySetz$MathMLContentPrinter._print_EmptySet,rr:c�6�|j�d��S)N�truerrs r8�_print_BooleanTruez'MathMLContentPrinter._print_BooleanTrue/s���x�%�%�f�-�-�-r:c�6�|j�d��S)N�falserrs r8�_print_BooleanFalsez(MathMLContentPrinter._print_BooleanFalse2s���x�%�%�g�.�.�.r:c���|j�d��}|�|j�d����|�|j�d����|S)Nr�r�r)rBr�r�rs r8�_print_NegativeInfinityz,MathMLContentPrinter._print_NegativeInfinity5s`�� �H� "� "�7� +� +�� � � �d�h�,�,�W�5�5�6�6�6� � � �d�h�,�,�Z�8�8�9�9�9��r:c�|�������fd��t�j��}|����|��S)Nc����j�d��}|��j�����������j�d��}|���|dd����|�|��t |d��dkrƉj�d��}|���|dd����|�|���j�d��}|���|dd����|�|��t |d��dkrc�j�d��}|���|dd����|�|��t |��dkr.|����j����n&|��|dd�����|S) Nr�r�r�rr��uplimitr)rBr�r�r�rMr��function)�limitsr�� bvar_elem�low_elem�up_elemr�� lime_recurr3s ���r8r3z8MathMLContentPrinter._print_Integral.<locals>.lime_recur<s �����&�&�w�/�/�A� �M�M�$�(�0�0�����1C�1C�D�D� E� E� E���.�.�v�6�6�I� � !� !�$�+�+�f�Q�i��l�";�";� <� <� <� �M�M�)� $� $� $��6�!�9�~�~��"�"��8�1�1�*�=�=���$�$�T�[�[����1��%>�%>�?�?�?�� � �h�'�'�'��(�0�0��;�;���#�#�D�K�K��q� �!� �$=�$=�>�>�>�� � �g�&�&�&��6�!�9�~�~��"�"��(�0�0��;�;���#�#�D�K�K��q� �!� �$=�$=�>�>�>�� � �g�&�&�&��6�{�{�a���� � �d�k�k�!�*�5�5�6�6�6�6�� � �j�j������4�4�5�5�5��Hr:)�listr/�reverse)r3r�r/r3s`` @r8�_print_Integralz$MathMLContentPrinter._print_Integral;sW����� � � � � � � �0�a�h�����������z�&�!�!�!r:c�,�|�|��SrA)r6rs r8� _print_SumzMathMLContentPrinter._print_SumXs���#�#�A�&�&�&r:c�v�� ��j���|����}�fd�}d�� t|j��\}}}� |��}� fd�|D��}� fd�|D��}�j�d��}|��j�|����|s�|s/|��j�|�����nH�j�d��}|�|��|�||����|�|��n�|sc�j�d��} | �|��| �||����|�| ��n��j�d��} | �|��| �||����| �||����|�| ��|S) Nc���t|��dkr�j�d��}t|��D]�\}}|dkr\�j�d��}|��j�d����|�|���j�d��}|��j�|����|�|����|S�j�d��}|��j�|d����|S)Nr�zmml:mrowrzmml:mo� �mml:mi�r�rBr�r�r�rH��items�mrowr��item�mo�mir3s �r8�joinz0MathMLContentPrinter._print_Symbol.<locals>.join`s)����5�z�z�A�~�~��x�-�-�j�9�9��(��/�/�)�)�G�A�t��1�u�u�!�X�3�3�H�=�=�����t�x�'>�'>�s�'C�'C�D�D�D��(�(��,�,�,���/�/��9�9�B��N�N�4�8�#:�#:�4�#@�#@�A�A�A��$�$�R�(�(�(�(�� ��X�+�+�H�5�5�����t�x�6�6�u�Q�x�@�@�A�A�A�� r:c�@�|tvrtj|��S|SrA�r�get��ss r8r�z5MathMLContentPrinter._print_Symbol.<locals>.translater�#���M�!�!�$�(��+�+�+��r:c�&��g|] }�|����Sr>r>��.0�supr�s �r8� <listcomp>z6MathMLContentPrinter._print_Symbol.<locals>.<listcomp>z�!���3�3�3�S�)�)�C�.�.�3�3�3r:c�&��g|] }�|����Sr>r>�rM�subr�s �r8rOz6MathMLContentPrinter._print_Symbol.<locals>.<listcomp>{�!���/�/�/�3� � �#���/�/�/r:r<zmml:msubzmml:msupz mml:msubsup)rBr�r�r �namer�rH) r3�symryrDrU�supers�subs�mname�msub�msup�msubsupr�s ` @r8� _print_Symbolz"MathMLContentPrinter._print_Symbol]sF���� �X� #� #�D�O�O�C�$8�$8� 9� 9�� � � � � �$ � � � -�S�X�6�6���f�d��y�����3�3�3�3�F�3�3�3��/�/�/�/�$�/�/�/����&�&�x�0�0�� ���$�(�1�1�$�7�7�8�8�8�� (�� %����t�x�6�6�t�<�<�=�=�=�=��x�-�-�j�9�9��� � ��'�'�'�� � ���d���,�,�,����t�$�$�$�$�� (��x�-�-�j�9�9��� � ��'�'�'�� � ���f���.�.�.����t�$�$�$�$��(�0�0��?�?���#�#�E�*�*�*��#�#�D�D��J�J�/�/�/��#�#�D�D��L�L�1�1�1����w�'�'�'�� r:c��|jd�rF|jj�r9|jjdk�r(|j�d��}|�|j�d����|jjdkr�|j�d��}|j�d��}|�|j�t|jj������|�|��|�|��|�|� |j ����|S|j�d��}|j�|� |����}|�|��|�|� |j ����|�|� |j����|S)Nr%r�r�r�r�degreerd) � _settings�exp� is_Rationalr�rBr�r�r�rHr�rM�baser�)r3r�r��xmldeg�xmlcnrs r8� _print_PowzMathMLContentPrinter._print_Pow�s��� �N�?� +� ���0A� ��E�G�q�L�L���&�&�w�/�/�A� �M�M�$�(�0�0��8�8� 9� 9� 9��u�w�!�|�|���/�/��9�9����.�.�t�4�4���!�!�$�(�"9�"9�#�a�e�g�,�,�"G�"G�H�H�H��"�"�5�)�)�)�� � �f�%�%�%� �M�M�$�+�+�a�f�-�-� .� .� .��H� �H� "� "�7� +� +���h�$�$�T�_�_�Q�%7�%7�8�8�� � � �c���� � � �d�k�k�!�&�)�)�*�*�*� � � �d�k�k�!�%�(�(�)�)�)��r:c���|j�|�|����}|�|j�t |������|SrA�rBr�r�r�rHr�rs r8� _print_Numberz"MathMLContentPrinter._print_Number��P�� �H� "� "�4�?�?�1�#5�#5� 6� 6�� � � �d�h�-�-�c�!�f�f�5�5�6�6�6��r:c��|j�|�|����}t|jt |j����}|�|j�|����|SrA) rBr�r�� mlib_to_str�_mpf_r�_precr�rH)r3r�r��repr_es r8� _print_Floatz!MathMLContentPrinter._print_Float�se�� �H� "� "�4�?�?�1�#5�#5� 6� 6���Q�W�h�q�w�&7�&7�8�8�� � � �d�h�-�-�f�5�5�6�6�6��r:c���|j�d��}|�|��}t|j��rd}|�|j�|����|j�d��}t |j��D]�\}}|�|�|����|dkrd|j�d��}|�|�t|������|�|����|�|��|�|�|j����|S)Nr�� partialdiffr�r�r_) rBr�r�r rQr��reversed�variable_countrMr)r3r�r�� diff_symbolrrVr`r_s r8�_print_Derivativez&MathMLContentPrinter._print_Derivative�s@�� �H� "� "�7� +� +���o�o�a�(�(� � �A�F� #� #� (�'�K� � � �d�h�,�,�[�9�9�:�:�:��h�$�$�V�,�,��"�1�#3�4�4� (� (�J�C�� �O�O�D�K�K��,�,� -� -� -��q�y�y���/�/��9�9���"�"�4�;�;�w�u�~�~�#>�#>�?�?�?�����'�'�'�� � � �c���� � � �d�k�k�!�&�)�)�*�*�*��r:c��|j�d��}|�|j�|�|������|jD]*}|�|�|�����+|S�Nr�)rBr�r�r�r�rM�r3r�r�r�s r8�_print_Functionz$MathMLContentPrinter._print_Function�s|�� �H� "� "�7� +� +�� � � �d�h�,�,�T�_�_�Q�-?�-?�@�@�A�A�A��6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +��r:c���|j�|�|����}|jD]*}|�|�|�����+|SrA)rBr�r�r�r�rMrys r8� _print_Basicz!MathMLContentPrinter._print_Basic�sZ�� �H� "� "�4�?�?�1�#5�#5� 6� 6���6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +��r:c�"�|j�d��}|j�|�|����}|�|��|jD]*}|�|�|�����+|Srx)rBr�r�r�r�rM)r3r�r�rr�s r8�_print_AssocOpz#MathMLContentPrinter._print_AssocOp�s��� �H� "� "�7� +� +���h�$�$�T�_�_�Q�%7�%7�8�8�� � � �c�����6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +��r:c�n�|j�d��}|�|j�|�|������|�|�|j����|�|�|j����|Srx)rBr�r�r�rM�lhs�rhsrs r8�_print_Relationalz&MathMLContentPrinter._print_Relational�s��� �H� "� "�7� +� +�� � � �d�h�,�,�T�_�_�Q�-?�-?�@�@�A�A�A� � � �d�k�k�!�%�(�(�)�)�)� � � �d�k�k�!�%�(�(�)�)�)��r:c��|j�d��}|D]*}|�|�|�����+|S)zgMathML reference for the <list> element: https://www.w3.org/TR/MathML2/chapter4.html#contm.listr4�rBr�r�rM)r3�seq� dom_elementrAs r8� _print_listz MathMLContentPrinter._print_list�sQ���h�,�,�V�4�4� �� 7� 7�D� � #� #�D�K�K��$5�$5� 6� 6� 6� 6��r:c���|j�|�|����}|�|j�t |������|SrArh�r3r�r�s r8� _print_intzMathMLContentPrinter._print_int��S���h�,�,�T�_�_�Q�-?�-?�@�@� ������ 7� 7��A��� ?� ?�@�@�@��r:c��|j�d��}|jD]*}|�|�|�����+|S)N�set�rBr�r�r�rMrys r8�_print_FiniteSetz%MathMLContentPrinter._print_FiniteSet�sN�� �H� "� "�5� )� )���6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +��r:c���|j�d��}|�|j�d����|jD]*}|�|�|�����+|S)Nr��setdiff�rBr�r�r�rMrys r8�_print_Complementz&MathMLContentPrinter._print_Complementsp�� �H� "� "�7� +� +�� � � �d�h�,�,�Y�7�7�8�8�8��6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +��r:c���|j�d��}|�|j�d����|jD]*}|�|�|�����+|S)Nr��cartesianproductr�rys r8�_print_ProductSetz&MathMLContentPrinter._print_ProductSetsq�� �H� "� "�7� +� +�� � � �d�h�,�,�-?�@�@�A�A�A��6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +��r:c�|�|j�|�|����}|jD]Y}|j�d��}|�|�|����|�|���Z|�|�|j����|S)Nr�)rBr�r�� signaturer�rMrQ)r3r�r�r�rs r8� _print_Lambdaz"MathMLContentPrinter._print_Lambdas��� �H� "� "�4�?�?�1�#5�#5� 6� 6���;� � �C��(�(�(��0�0�C� �O�O�D�K�K��,�,� -� -� -� �M�M�#� � � � � � � �d�k�k�!�&�)�)�*�*�*��r:rA)-r;r<r=rW� printmethodr�r�r�r�r�r�rr r rrrrrr!r$r'r)r6r8r]�_print_MatrixSymbol�_print_RandomSymbolrfrirprvrzr|r~r�r�r��_print_Implies� _print_Not� _print_Xorr�r�r�r�r>r:r8rZrZMs\��������$�K�@�@�@�D!�!�!�F����8���*������$ � � �4�4�4�4�4�4����6�6�6�,�,�,�2�2�2�4�4�4�2�2�2�.�.�.�/�/�/���� "�"�"�:'�'�'� 6�6�6�p(��'�����.��� ��� ���&������ ������������ $�N��J��J���� ������ � � � � r:rZc�8�eZdZdZdZd�Zd�d�Zd�Zd�d�Zd �Z d�d �Z d �Z d �Z d �Z d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�d�Zd�ZeZd �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�d/�Z/e/Z0d0�Z1d�d1�Z2d�d2�Z3d3�Z4d4�Z5d5�Z6d6�Z7d7�Z8d8�Z9d9�Z:d:�Z;d;�Z<e<Z=d<�Z>d=�Z?d>�Z@d?�ZAd@�ZBdA�ZCdB�ZDdC�ZEdD�ZFeFZGeFZHdE�ZIdF�ZJdG�ZKeKxZLZMdH�ZNdI�ZOdJ�ZPdK�ZQdL�ZRdM�ZSdN�ZTdO�ZUdP�ZVdQ�ZWdR�ZXdS�ZYdT�ZZdU�Z[dV�Z\dW�Z]dX�Z^dY�Z_dZ�Z`d[�Zad\�ZbebZcd]�Zdd^�Zed_�Zfd`�Zgda�Zhdb�Zidc�Zjdd�Zkde�Zldf�Zmdg�Zndh�Zodi�Zpdj�Zqdk�Zrdl�Zsdm�Ztdn�Zudo�Zvdp�Zwdq�Zxdr�Zyds�Zzdt�Z{du�Z|dv�Z}dw�Z~dx�Zdy�Z�dz�Z�d{�Z�d|�Z�d}�Z�d~�Z�d�Z�d��Z�d��Z�d��Z�d��Z�dS)��MathMLPresentationPrinterz�Prints an expression to the Presentation MathML markup language. References: https://www.w3.org/TR/MathML2/chapter3.html �_mathml_presentationc����idd�dd�dd�dd�dd �d d �d d �dd�dd�dd�dd�dd�dd�dd�dd�dd�dd�idd�d d�d!d"�d#d$�d%d&�d'd(�d)d*�d+d,�d-d.�d/d0�d1d2�d3d4�d5d6�d7d8�d9d8�d:d;�d<d=��d>d?d@dAdBdCdDdEdFd@dAdGdHdIdJ��}�fdK�}|jjD]}|j}||vr ||cS�|jjdLkr |��S|jj}|���S)Mr]rc�mn�Limitz&#x2192;ra�&dd;rerxrCr|z&int;r}z&#x2211;rr�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r�r��=r�z&#x2260;r�z&#x2265;r�z&#x2264;r��>r��<�lerchphi�&#x3A6;�zetaz&#x3B6;� dirichlet_etaz&#x3B7;� elliptic_kz&#x39A;� lowergamma�&#x3B3;� uppergammaz&#x393;�gamma�totientz&#x3D5;�reduced_totientz&#x3BB;z&#x3BD;z&#x3A9;r�C�Wz&#x398;�True�False�Nonez S&#x2032;z C&#x2032;�lambda)�primenu� primeomega�fresnels�fresnelc�LambertW� Heaviside� BooleanTrue� BooleanFalse�NoneType�mathieus�mathieuc� mathieusprime� mathieucprime�Lambdac����jd��jddkrdS�jddkrdS�jddkrdS�jddkrd St�jdt��st��jdS) Nr$r��&InvisibleTimes;r`�&#xD7;�dotr�ldotz&#x2024;)r`� isinstancer�� TypeError)r3s�r8�mul_symbol_selectionzBMathMLPresentationPrinter.mathml_tag.<locals>.mul_symbol_selectionXs������|�,�4��N�<�0�F�:�:�)�)��� �-��8�8��x��� �-��6�6��x��� �-��7�7�!�z����|� <�c�B�B� 4����~�l�3�3r:rr�)r3r�r�r�r�r�s` r8r�z$MathMLPresentationPrinter.mathml_tag#sy���1 � �d�1 � �Z�1 � �&�1 � �4� 1 � �d� 1 � �� 1 � �:�1 � �5�1 � �5�1 � �5�1 � �5�1 � �H�1 � �Y�1 � �H�1 � �Y�1 � �H�!1 �" �Y�#1 �1 �$ �H�%1 �& �X�'1 �( ��)1 �* �*�+1 �, �:�-1 �. � �/1 �0 ��11 �2 �c�31 �4 � �51 �6 �I�71 �8 �Y�91 �: �)�;1 �< �)�=1 �> �)�?1 �@ �Y�A1 �B �y�C1 �D �y�E1 �1 �F!�#����"�!�#����(�(��a1 �1 �1 � �f 4� 4� 4� 4� 4��;�&� $� $�C�� �A��I�~�~� ��|�#�#�#�� �;� �5� (� (�'�'�)�)� )� �K� ���w�w�y�y�r:Fc���t|��}||ks|sJ||krD|j�d��}|�|�|����|S|�|��S�N�mfenced)r rBr�r�rM)r3rA�level�strict�prec_val�bracs r8� parenthesizez&MathMLPresentationPrinter.parenthesizepsu��)�$�/�/�� �u� � �v� �8�u�3D�3D��8�)�)�)�4�4�D� � � �T�[�[��.�.� /� /� /��K��;�;�t�$�$� $r:c�Z���fd�}�j�d��}|���rj�j�d��}|��j�d����|�|��|| |��}n |||��}|S)Nc���ddlm}||��\}}|tjurȉ j�d��}� jdr6tt|����dkr|� dd��� � |��}� � |��}|� |��|� |��|� |��|S|� ��\}} |tjurCt| ��dkr0|� � � | d����|S� j d kr&tj| �����} |dkr�� � |��} � j�d ��} | � � j�� �|������|� | ��|� | ��| D]�} |� � �| t(d ����| | d kso� j�d ��} | � � j�� �|������|� | ����|S) Nrr��mfracr��bevelledr#r�r�rBrr�)r�r�rr�rBr�r`r�r�� setAttributerMr�r�rrr�r�rHr�r�r )rQr@r�r�r��fracr��xdenr�r�r��yr�r3s �r8�multiplyz6MathMLPresentationPrinter._print_Mul.<locals>.multiply{s���� /� /� /� /� /� /�#�8�D�>�>�L�E�5��A�E�!�!��x�-�-�g�6�6���>�"3�4�:��S��Y�Y���!�9K�9K��%�%�j�&�9�9�9��{�{�5�)�)���{�{�5�)�)��� � ��&�&�&�� � ��&�&�&�� � ��&�&�&�� ��,�,�.�.�L�E�5����~�~�#�e�*�*��/�/�� � ����U�1�X�!6�!6�7�7�7�� ��z�U�"�"���u�-�-�@�@�B�B����z�z��K�K��&�&���H�*�*�4�0�0��� � �d�h�5�5�d�o�o�d�6K�6K�L�L�M�M�M�� � ��#�#�#�� � ��#�#�#�� (� (��� � ��!2�!2�4��E�9J�!K�!K�L�L�L��u�R�y�(�(���.�.�t�4�4�A��M�M�$�(�"9�"9�$�/�/�$�:O�:O�"P�"P�Q�Q�Q��$�$�Q�'�'�'���Kr:r@rB�-)rBr�r�r�rH)r3rQr�r@r�s` r8r�z$MathMLPresentationPrinter._print_Mulys����! �! �! �! �! �D�x�%�%�f�-�-�� � (� (� *� *� (���&�&�t�,�,�A� �M�M�$�(�1�1�#�6�6� 7� 7� 7� � � �Q� � � ��8�T�E�4�(�(�D�D��8�D�$�'�'�D�� r:Nc���|j�d��}|�||���}|�|�|d����|dd�D]�}|���r^|j�d��}|�|j�d����|�| ��}n\|j�d��}|�|j�d����|�|��}|�|��|�|����|S)Nr@r�rr�rBr��+)rBr�r�r�rMr�rH)r3rQrr@r�r�r�r�s r8r�z$MathMLPresentationPrinter._print_Add�sD���x�%�%�f�-�-���%�%�d�%�%�8�8�� ������T�!�W�-�-�.�.�.�����8� � �C��+�+�-�-� %��H�*�*�4�0�0��� � �d�h�5�5�c�:�:�;�;�;��K�K���%�%����H�*�*�4�0�0��� � �d�h�5�5�c�:�:�;�;�;��K�K��$�$�� � � �Q� � � � � � �Q� � � � �� r:c ��|j�d��}t|j��D]�}|j�d��}t|j��D]a}|j�d��}|�|�|||f����|�|���b|�|����|jddkr|S|j�d��}|jddkr,|�dd ��|�d d��|�|��|S) N�mtable�mtr�mtdr"r.r�r�close�]�open) rBr�r�r�r�r�rMr`r�)r3r��tabler�r�r�r�r�s r8r�z+MathMLPresentationPrinter._print_MatrixBase�sD����&�&�x�0�0���q�v��� !� !�A���&�&�u�-�-�A��1�6�]�]� !� !���H�*�*�5�1�1��� � �d�k�k�!�A�q�D�'�2�2�3�3�3�� � �a� � � � � � � �a� � � � � �>�+� &�"� ,� ,��L��x�%�%�i�0�0�� �>�+� &�#� -� -� � � �g�s� +� +� +� � � �f�c� *� *� *� �������� r:c��|jdkr |j }n|j}|j�d��}|s |jdr|�dd��|�|�|����|�|�|j����|jdkr�|j�d��}|j�d��}|�|j�d����|�|��|�|��|S|S) Nrr�rr�r#r@rBr�) r�rBr�r`r�r�rMr�rH)r3r��foldedr�r�r@rBs r8�_get_printed_Rationalz/MathMLPresentationPrinter._get_printed_Rational�s$�� �3��7�7����A�A���A� �H� "� "�7� +� +�� � /�T�^�$5�6� /� �N�N�:�v� .� .� .� � � �d�k�k�!�n�n�%�%�%� � � �d�k�k�!�#�&�&�'�'�'� �3��7�7��8�)�)�&�1�1�D���'�'��-�-�B� �N�N�4�8�2�2�3�7�7� 8� 8� 8� � � �R� � � � � � �Q� � � ��K��Hr:c��|jdkr|�|j��S|�||jd��S)Nr�r)r�rMr�r�r`rs r8r�z)MathMLPresentationPrinter._print_Rational�s?�� �3�!�8�8��;�;�q�s�#�#� #��)�)�!�T�^�<M�-N�O�O�Or:c���|j�d��}|j�d��}|j�d��}|�|j�d����|j�d��}|�|jd��}|j�d��}|�|j�|�|������|�|jd��}|�|��|�|��|�|��|�|��|�|��|�|��|�|�|jd����|S) Nr@�munderrC�limr�rBrr)rBr�r�rHrMr�r�) r3r�r@r�rCr�r�arrowrs r8rz&MathMLPresentationPrinter._print_Limit�s����x�%�%�f�-�-����'�'��1�1�� �X� #� #�D� )� )�� ���t�x�.�.�u�5�5�6�6�6� �H� "� "�6� *� *���k�k�!�&��)�$�$����&�&�t�,�,�� ���$�(�1�1�$�/�/�!�2D�2D�E�E�F�F�F��k�k�!�&��)�$�$�� � � �c���� � � �e���� � � �c�������2�������1���� ���� � � � ������Q�V�A�Y�/�/�0�0�0�� r:c��|j�d��}|�|j�d����|S)NrCz &ImaginaryI;rrs r8r z.MathMLPresentationPrinter._print_ImaginaryUnit�s>�� �H� "� "�4� (� (�� � � �d�h�-�-�n�=�=�>�>�>��r:c��|j�d��}|�|j�d����|S)NrCr�rrs r8rz,MathMLPresentationPrinter._print_GoldenRatio�>�� �H� "� "�4� (� (�� � � �d�h�-�-�i�8�8�9�9�9��r:c��|j�d��}|�|j�d����|S)NrCz&ExponentialE;rrs r8rz%MathMLPresentationPrinter._print_Exp1 s?�� �H� "� "�4� (� (�� � � �d�h�-�-�.>�?�?�@�@�@��r:c��|j�d��}|�|j�d����|S)NrCz&pi;rrs r8rz#MathMLPresentationPrinter._print_Pis>�� �H� "� "�4� (� (�� � � �d�h�-�-�f�5�5�6�6�6��r:c��|j�d��}|�|j�d����|S)NrC�&#x221E;rrs r8rz)MathMLPresentationPrinter._print_Infinity�>�� �H� "� "�4� (� (�� � � �d�h�-�-�j�9�9�:�:�:��r:c�F�|j�d��}|j�d��}|�|j�d����|�|��}|�|��|�|��|S)Nr@rBr�)rBr�r�rHr)r3r�r@r�r�s r8r)z1MathMLPresentationPrinter._print_NegativeInfinitys����x�%�%�f�-�-�� �H� "� "�4� (� (�� � � �d�h�-�-�c�2�2�3�3�3� � � �� #� #�� ������� �������� r:c��|j�d��}|�|j�d����|S)NrCz&#x210F;rrs r8� _print_HBarz%MathMLPresentationPrinter._print_HBar!r�r:c��|j�d��}|�|j�d����|S)NrCr�rrs r8r z+MathMLPresentationPrinter._print_EulerGamma&r�r:c��|j�d��}|�|j�d����|S)NrC�TribonacciConstantrrs r8�_print_TribonacciConstantz3MathMLPresentationPrinter._print_TribonacciConstant+s?�� �H� "� "�4� (� (�� � � �d�h�-�-�.B�C�C�D�D�D��r:c���|j�d��}|�|�|jd����|�|j�d����|S)Nr[r�&#x2020;�rBr�r�rMr�rH�r3r�r[s r8� _print_Daggerz'MathMLPresentationPrinter._print_Dagger0sf���x�%�%�f�-�-�� ������Q�V�A�Y�/�/�0�0�0� �����0�0��<�<�=�=�=�� r:c��|j�d��}|�|�|jd����|j�d��}|�|j�d����|�|��|�|�|jd����|S)Nr@rrBz&#x2208;r�r)r3r�r@rBs r8�_print_Containsz)MathMLPresentationPrinter._print_Contains6s����x�%�%�f�-�-�� ������Q�V�A�Y�/�/�0�0�0� �X� #� #�D� )� )�� ���t�x�.�.�z�:�:�;�;�;� ������� ������Q�V�A�Y�/�/�0�0�0�� r:c��|j�d��}|�|j�d����|S)NrCz&#x210B;rrs r8�_print_HilbertSpacez-MathMLPresentationPrinter._print_HilbertSpace?r�r:c���|j�d��}|�|j�d����|�|�|jd����|S)Nr[z &#x1D49E;r�rBr�r�rHrMr�rs r8�_print_ComplexSpacez-MathMLPresentationPrinter._print_ComplexSpaceDsf���x�%�%�f�-�-�� �����0�0��=�=�>�>�>� ������Q�V�A�Y�/�/�0�0�0�� r:c��|j�d��}|�|j�d����|S)NrCz&#x2131;rrs r8�_print_FockSpacez*MathMLPresentationPrinter._print_FockSpaceJr�r:c���dddd�}|j�d��}t|j��dkr�t d�|jD����rv|j�d��}|�|j�|t|j������|�|���n�t|j��D�]�}|j�d��}|�|j�|d ����t|��d kr|�|��t|��d krr|j�d ��}|�|��|�|�|d ����|�|��t|��dkr�|j�d ��}|�|��|�|�|d ����|�|�|d ����|�|�����|�|� |j td d�����t|j��D]�}|j�d��}|�|j�d����|�|��|�|�|d������|S)Nz&#x222B;z&#x222C;z&#x222D;)r�rr,r@r,c3�<K�|]}t|��dkV��dS)r�N)r�)rMr�s r8� <genexpr>z<MathMLPresentationPrinter._print_Integral.<locals>.<genexpr>Ts,����(N�(N�3��S���Q��(N�(N�(N�(N�(N�(Nr:rBr�rr[r\rT�r�r�r) rBr�r�r/�allr�rHrsrMr�r.r ) r3rQ� intsymbolsr@rBr�r[r\�ds r8r6z)MathMLPresentationPrinter._print_IntegralPs��#� �z�B�B� ��x�%�%�f�-�-�� �t�{� � �q� � �S�(N�(N�$�+�(N�(N�(N�%N�%N� ���'�'��-�-�B� �N�N�4�8�2�2�:�c�$�+�>N�>N�3O�P�P� Q� Q� Q� � � �R� � � � � �� �,�,� .� .���X�+�+�D�1�1�����t�x�6�6�z�!�}�E�E�F�F�F��s�8�8�q�=�=��$�$�R�(�(�(��s�8�8�q�=�=��8�1�1�&�9�9�D��$�$�R�(�(�(��$�$�T�[�[��Q��%8�%8�9�9�9��$�$�T�*�*�*��s�8�8�q�=�=�"�h�4�4�Y�?�?�G��'�'��+�+�+��'�'�� � �C��F�(;�(;�<�<�<��'�'�� � �C��F�(;�(;�<�<�<��$�$�W�-�-�-�� ����*�*�4�=�*�U�:K�26�+�8�8� 9� 9� 9��D�K�(�(� 2� 2�C���&�&�t�,�,�A� �M�M�$�(�1�1�&�9�9� :� :� :� � � �Q� � � � � � �T�[�[��Q��0�0� 1� 1� 1� 1�� r:c�V�t|j��}|j�d��}|�|dd��}|�|dd��}|j�d��}|�|j�|�|������|j�d��}|�|dd��}|j�d��} | �|j�d����|�|��|�| ��|�|��|�|��|�|��|�|��|j�d��} | �|��tt|j ����dkr.| �|�|j ����n\|j�d��} | �|�|j ����| �| ��| S) N� munderoverrr�rrBr@r�r�) r4r/rBr�rMr�rHr�r�r�r.) r3r�r/�subsupr1r2�summand�low�var�equalr@�fences r8r8z$MathMLPresentationPrinter._print_Sumvs-���a�h������'�'� �5�5���;�;�v�a�y��|�,�,���+�+�f�Q�i��l�+�+���(�(�(��.�.�����D�H�3�3�D�O�O�A�4F�4F�G�G�H�H�H��h�$�$�V�,�,���k�k�&��)�A�,�'�'����&�&�t�,�,�� ���$�(�1�1�#�6�6�7�7�7� ������� ������� ����!�!�!����7�#�#�#����3�������7�#�#�#��x�%�%�f�-�-�� ���� � � � �s�1�:��� � �1� $� $� � � �T�[�[���4�4� 5� 5� 5� 5��H�*�*�9�5�5�E� � � �d�k�k�!�*�5�5� 6� 6� 6� � � �U� #� #� #�� r:rc���� ��fd�}d�� t|j��\}}}� |��}� fd�|D��}� fd�|D��}�j�d��}|��j�|����t |��dkret |��dkr|}�n�j�d��}|�|��|�||����n�t |��dkrN�j�d��}|�|��|�||����nk�j�d ��}|�|��|�||����|�||����|d kr|�d d ��|S) Nc���t|��dkr�j�d��}t|��D]�\}}|dkr\�j�d��}|��j�d����|�|���j�d��}|��j�|����|�|����|S�j�d��}|��j�|d����|S)Nr�r@rrBr;rCr=r>s �r8rDz5MathMLPresentationPrinter._print_Symbol.<locals>.join�s)����5�z�z�A�~�~��x�-�-�f�5�5��(��/�/�)�)�G�A�t��1�u�u�!�X�3�3�D�9�9�����t�x�'>�'>�s�'C�'C�D�D�D��(�(��,�,�,���/�/��5�5�B��N�N�4�8�#:�#:�4�#@�#@�A�A�A��$�$�R�(�(�(�(�� ��X�+�+�D�1�1�����t�x�6�6�u�Q�x�@�@�A�A�A�� r:c�@�|tvrtj|��S|SrArFrHs r8r�z:MathMLPresentationPrinter._print_Symbol.<locals>.translate�rJr:c�&��g|] }�|����Sr>r>rLs �r8rOz;MathMLPresentationPrinter._print_Symbol.<locals>.<listcomp>�rPr:c�&��g|] }�|����Sr>r>rRs �r8rOz;MathMLPresentationPrinter._print_Symbol.<locals>.<listcomp>�rTr:rCrrZr[r\�bold� mathvariant)r rUrBr�r�rHr�r�) r3rV�stylerDrUrWrXrYr�r�s ` @r8r]z'MathMLPresentationPrinter._print_Symbol�s����� � � � � �$ � � � -�S�X�6�6���f�d��y�����3�3�3�3�F�3�3�3��/�/�/�/�$�/�/�/����&�&�t�,�,�� ���$�(�1�1�$�7�7�8�8�8� �v�;�;�!� � ��4�y�y�A�~�~�����H�*�*�6�2�2��� � �e�$�$�$�� � �d�d�4�j�j�)�)�)�)��4�y�y�A�~�~��H�*�*�6�2�2��� � �e�$�$�$�� � �d�d�6�l�l�+�+�+�+��H�*�*�9�5�5��� � �e�$�$�$�� � �d�d�4�j�j�)�)�)�� � �d�d�6�l�l�+�+�+� �F�?�?� �N�N�=�&� 1� 1� 1��r:c�F�|�||jd���S)Nr#)r))r]r`)r3rVs r8r�z-MathMLPresentationPrinter._print_MatrixSymbol�s/���!�!�#�(,��7I�(J�"�L�L� Lr:c���|j�d��}|�dd��|�|�|jd����|S)N�menclose�notation�topr�rBr�r�r�rMr�)r3rQ�encs r8�_print_conjugatez*MathMLPresentationPrinter._print_conjugate�sV���h�$�$�Z�0�0�� ����U�+�+�+� ���� � �D�I�a�L�1�1�2�2�2�� r:c�Z�|j�d��}|�|�|td����|j�d��}|�|j�|����|�|��|S)Nr@�FuncrB)rBr�r�r�r rH)r3�oprQ�rowrBs r8�_print_operator_afterz/MathMLPresentationPrinter._print_operator_after�s����h�$�$�V�,�,�� ����)�)�$� �6�0B�C�C�D�D�D� �X� #� #�D� )� )�� ���t�x�.�.�r�2�2�3�3�3� �������� r:c�D�|�d|jd��S)N�!r�r6r��r3rQs r8�_print_factorialz*MathMLPresentationPrinter._print_factorial�s���)�)�#�t�y��|�<�<�<r:c�D�|�d|jd��S)Nz!!rr9r:s r8�_print_factorial2z+MathMLPresentationPrinter._print_factorial2�s���)�)�$�� �!� �=�=�=r:c��|j�d��}|j�d��}|�dd��|�|�|jd����|�|�|jd����|�|��|S)Nr�r�� linethickness�0rr�r/)r3rQr�r�s r8�_print_binomialz)MathMLPresentationPrinter._print_binomial�s����x�%�%�i�0�0���x�%�%�g�.�.�� ���/�3�/�/�/� ������T�Y�q�\�2�2�3�3�3� ������T�Y�q�\�2�2�3�3�3� �������� r:c� �|jj�r�t|jj��dk�rj|jjdk�rY|jd�rK|jjdkrG|j�d��}|�|� |j ����|jjdkry|j�d��}|�|� |j ����|�|� |jj����|jjdkrY|j�d��}|�|� d����|�|��|S|S|jj�r�|jjdk�r�|jj r�|j�d��}|�|� d����|j�d��}|�|� |j td ����|�|�|j |jd ����|�|��|S|j�d��}|�|� |j td ����|�|�|j|jd ����|S|jj �r|j�d��}|�|� d����|jdkr.|�|� |j ����n�|j�d��}|�|� |j td ����|�|� |j ����|�|��|S|j�d��}|�|� |j td ����|�|� |j����|S) Nr�r%r�msqrt�mrootr�r�r[rfr)rarbrmr�r�r`rBr�r�rMrc� is_negativer�r r�)r3r�r�r�r.s r8rfz$MathMLPresentationPrinter._print_Pow�s��� �E� � �#�a�e�g�,�,�!�"3�"3����1� � ����/�9E��u�w�!�|�|��H�*�*�7�3�3��� � �d�k�k�!�&�1�1�2�2�2��u�w�!�|�|��H�*�*�7�3�3��� � �d�k�k�!�&�1�1�2�2�2�� � �d�k�k�!�%�'�2�2�3�3�3��u�w�"�}�}��x�-�-�g�6�6��� � ����Q���0�0�0�� � ��#�#�#�� ��� �5� � ����A����u� � ��h�,�,�W�5�5������ � �A���/�/�/��H�*�*�6�2�2��� � �d�/�/��� �5�8I�J�J�K�K�K�� � �d�8�8�!�%��$(�N�3E�$F�H�H�I�I�I�����"�"�"�� ��H�*�*�6�2�2��� � �d�/�/��� �5�8I�J�J�K�K�K�� � �d�8�8���$(�N�3E�$F�H�H�I�I�I��� �5� � ��h�,�,�W�5�5������ � �A���/�/�/��5�B�;�;��O�O�D�K�K���$7�$7�8�8�8�8���.�.�v�6�6�A��M�M�$�"3�"3�A�F�J�u�<M�"N�"N�O�O�O��M�M�$�+�+�q�u�f�"5�"5�6�6�6��O�O�A�&�&�&�� � �H� "� "�6� *� *�� � � �d�'�'��� �5�0A�B�B�C�C�C� � � �d�k�k�!�%�(�(�)�)�)��r:c���|j�|�|����}|�|j�t |������|SrArhrs r8riz'MathMLPresentationPrinter._print_Number$rjr:c�F�|j�d��}|�dd��|�dd��|�|�|j����|�|�|j����|S)Nr�r��⟩r��⟨)rBr�r�r�rMrkri)r3r�r�s r8�_print_AccumulationBoundsz3MathMLPresentationPrinter._print_AccumulationBounds)s����x�%�%�i�0�0�� ���'�8�,�,�,� ���&�(�+�+�+� ������Q�U�+�+�,�,�,� ������Q�U�+�+�,�,�,�� r:c��t|j��rd}n|�|��}|j�d��}d}t |j��D�]6\}}||z }|dkr�|j�d��}|j�d��}|�|j�|����|�|��|�|� |����nG|j�d��}|�|j�|����|�|��|� |��} |�| ����8|j�d��} |dkr�|j�d��}|j�d��}|�|j�|����|�|��|�|� |����nG|j�d��}|�|j�|����| �|��|j�d��} |j�d��} | �| ��| �|��| �| ��| �|� |j����| S)Nz&#x2202;r@rrr[rBr�) r rQr�rBr�rsrtr�rHrM) r3r�rr��dimrV�numr��xxr��mnumr@r�s r8rvz+MathMLPresentationPrinter._print_Derivative1s��� �A�F� #� #� #��A�A�����"�"�A� �H� "� "�6� *� *���� ��!1�2�2� � �H�C�� �3�J�C��a�x�x��H�*�*�6�2�2���X�+�+�D�1�1�����t�x�6�6�q�9�9�:�:�:�� � �b�!�!�!�� � �d�k�k�#�.�.�/�/�/�/��H�*�*�4�0�0��� � �d�h�5�5�a�8�8�9�9�9� �M�M�!� � � �� � �C� � �A� �M�M�!� � � � ��x�%�%�f�-�-�� �!�8�8���&�&�v�.�.�A���'�'��-�-�B� �N�N�4�8�2�2�1�5�5� 6� 6� 6� �M�M�"� � � � �M�M�$�+�+�c�*�*� +� +� +� +���&�&�t�,�,�A� �M�M�$�(�1�1�!�4�4� 5� 5� 5� ��������x�%�%�f�-�-���x�%�%�g�.�.�� ������� ������� ������� ������Q�V�,�,�-�-�-�� r:c��|j�d��}|j�d��}|�|��dkr;|jdr.|�|j�d����n@|�|j�|�|������|j�d��}|jD]*}|�|�|�����+|�|��|�|��|S)Nr@rCr�r r�r�)rBr�r�r`r�rHr�rM)r3r�r@r�r�r�s r8rzz)MathMLPresentationPrinter._print_Functionas���x�%�%�f�-�-�� �H� "� "�4� (� (�� �?�?�1� � �� &� &�4�>�-�+H� &� �M�M�$�(�1�1�$�7�7� 8� 8� 8� 8� �M�M�$�(�1�1�$�/�/�!�2D�2D�E�E� F� F� F� �H� "� "�9� -� -���6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +� ������� �������� r:c�L�t|j��}t|j|d���}|jd}|j�d��}d|v�r�|�d��\}}|ddkr |dd�}|j�d ��}|�|j� |����|�|��|j�d ��} | �|j� |����|�| ��|j�d ��} |j�d ��}|�|j� d ����| �|��|j�d ��}|�|j� |����| �|��|�| ��|S|d kr|� d��S|dkr|� d��S|j�d ��}|�|j� |����|S)NT)� strip_zerosr'r@r�rr�r�r�rBr[�10z+infz-inf) rrnrlrmr`rBr��splitr�rHrr)) r3rQ�dps�str_real� separatorr@�mantrar�rBr[s r8rpz&MathMLPresentationPrinter._print_FloatosW���$�*�%�%���t�z�3�D�A�A�A���N�#>�?� ��x�%�%�f�-�-�� �(�?�?�"�.�.��-�-�K�T�3��1�v��}�}��!�"�"�g����'�'��-�-�B� �N�N�4�8�2�2�4�8�8� 9� 9� 9� � � �R� � � ���'�'��-�-�B� �N�N�4�8�2�2�9�=�=� >� >� >� � � �R� � � ��8�)�)�&�1�1�D���'�'��-�-�B� �N�N�4�8�2�2�4�8�8� 9� 9� 9� � � �R� � � ���'�'��-�-�B� �N�N�4�8�2�2�3�7�7� 8� 8� 8� � � �R� � � � � � �T� "� "� "��K� �� � ��'�'��-�-� -� �� � ��/�/��5�5� 5���'�'��-�-�B� �N�N�4�8�2�2�8�<�<� =� =� =��Ir:c�z�|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|j�d��}|�|�|jd����|�|��|S)Nr@rZrC�Lirr�r�r)r3rQr@r�rCr�s r8�_print_polylogz(MathMLPresentationPrinter._print_polylog�s���x�%�%�f�-�-�� �H� "� "�6� *� *�� �X� #� #�D� )� )�� ���t�x�.�.�t�4�4�5�5�5� � � �b���� � � �d�k�k�$�)�A�,�/�/�0�0�0� ��������x�%�%�i�0�0�� ������T�Y�q�\�2�2�3�3�3� �������� r:c���|j�d��}|j�d��}|�|j�|�|������|�|��|j�d��}|jD]*}|�|�|�����+|�|��|S)Nr@rCr��rBr�r�rHr�r�rM)r3r�r@rCr�r�s r8r|z&MathMLPresentationPrinter._print_Basic�s����x�%�%�f�-�-�� �X� #� #�D� )� )�� ���t�x�.�.�t���q�/A�/A�B�B�C�C�C� ��������x�%�%�i�0�0���6� /� /�C� � � �T�[�[��-�-� .� .� .� .� �������� r:c���|j�d��}|j�d��}|jD]*}|�|�|�����+|�|��|S)Nr@r�r�)r3r�r@r�r�s r8� _print_Tuplez&MathMLPresentationPrinter._print_Tuple�sw���x�%�%�f�-�-�� �H� "� "�9� -� -���6� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +� �������� r:c���|j�d��}|j�d��}|j|jkrZ|�dd��|�dd��|�|�|j����n�|jr|�dd��n|�dd��|jr|�dd ��n|�dd ��|�|�|j����|�|�|j����|�|��|S) Nr@r�r��}r��{�)r��(r) rBr��start�endr�r�rM� right_open� left_open)r3r�r@r�s r8�_print_Intervalz)MathMLPresentationPrinter._print_Interval�s[���x�%�%�f�-�-���x�%�%�i�0�0�� �7�a�e� � � � � �g�s� +� +� +� � � �f�c� *� *� *� � � �T�[�[���1�1� 2� 2� 2� 2��|� 0��!�!�'�3�/�/�/�/��!�!�'�3�/�/�/��{� /��!�!�&�#�.�.�.�.��!�!�&�#�.�.�.� � � �T�[�[���1�1� 2� 2� 2� � � �T�[�[���/�/� 0� 0� 0� �������� r:c�V�|j�d��}|j�d��}|�dd��|�dd��|�|�|jd����|�|��|S)Nr@r�r��|r�rr/)r3rQrar@r�s r8� _print_Absz$MathMLPresentationPrinter._print_Abs�s����x�%�%�f�-�-�� �H� "� "�9� -� -�� ���w��$�$�$� ���v�s�#�#�#� � � �d�k�k�$�)�A�,�/�/�0�0�0� �������� r:c���|j�d��}|j�d��}|�dd��|�|j�|����|�|��|j�d��}|�|�|����|�|��|S)Nr@rCr(�frakturr�)rBr�r�r�rHrM)r3r�rQr@rCr�s r8� _print_re_imz&MathMLPresentationPrinter._print_re_im�s����x�%�%�f�-�-�� �X� #� #�D� )� )�� ��� �y�1�1�1� ���t�x�.�.�q�1�1�2�2�2� ��������x�%�%�i�0�0�� ������T�*�*�+�+�+� �������� r:c�D�|�d|jd��S)N�Rr�ror��r3rQras r8� _print_rez#MathMLPresentationPrinter._print_re����� � ��d�i��l�3�3�3r:c�D�|�d|jd��S)N�Irrrrss r8� _print_imz#MathMLPresentationPrinter._print_im�rur:c�|�|j�d��}|j�d��}|�|j�|�|������|�|��|jD]*}|�|�|�����+|S)Nr@rCr])r3r�r@rCr�s r8r~z(MathMLPresentationPrinter._print_AssocOp�s����x�%�%�f�-�-�� �X� #� #�D� )� )�� ���t�x�.�.�t���q�/A�/A�B�B�C�C�C� ��������6� /� /�C� � � �T�[�[��-�-� .� .� .� .�� r:c���|j�d��}|�|�|jd|����|jdd�D]�}|j�d��}|�|j�|����|�||��}|�|��|�|����|S)Nr@rr�rB)rBr�r�r�r�rH)r3rQ�symbol�precr@r�r�r�s r8� _print_SetOpz&MathMLPresentationPrinter._print_SetOp�s����x�%�%�f�-�-�� ����*�*�4�9�Q�<��>�>�?�?�?��9�Q�R�R�=� � �C���&�&�t�,�,�A� �M�M�$�(�1�1�&�9�9� :� :� :��!�!�#�t�,�,�A� � � �Q� � � � � � �Q� � � � �� r:c�J�td}|�|d|��S)Nr�z&#x222A;�r r}�r3rQr|s r8� _print_Unionz&MathMLPresentationPrinter._print_Union�s$��%�g�.��� � ��z�4�8�8�8r:c�J�td}|�|d|��S)Nr�z&#x2229;rr�s r8�_print_Intersectionz-MathMLPresentationPrinter._print_Intersections$��%�n�5��� � ��z�4�8�8�8r:c�J�td}|�|d|��S)N� Complementz&#x2216;rr�s r8r�z+MathMLPresentationPrinter._print_Complement�$��%�l�3��� � ��z�4�8�8�8r:c�J�td}|�|d|��S)N�SymmetricDifference�&#x2206;rr�s r8�_print_SymmetricDifferencez4MathMLPresentationPrinter._print_SymmetricDifference s%��%�&;�<��� � ��z�4�8�8�8r:c�J�td}|�|d|��S)N� ProductSetz&#x00d7;rr�s r8r�z+MathMLPresentationPrinter._print_ProductSetr�r:c�6�|�|j��SrA)� _print_setr�)r3rIs r8r�z*MathMLPresentationPrinter._print_FiniteSets�����q�v�&�&�&r:c��t|t���}|j�d��}|�dd��|�dd��|D]*}|�|�|�����+|S)N��keyr�r�rar�rb)�sortedrrBr�r�r�rM)r3rIr?r�rAs r8r�z$MathMLPresentationPrinter._print_sets����q�.�/�/�/���x�%�%�i�0�0�� ���'�3�'�'�'� ���&�#�&�&�&�� 0� 0�D� � � �T�[�[��.�.� /� /� /� /�� r:c�N�|j�d��}|djrk|djs^|j�d��}|�|�|d����|�|��n.|�|�|d����|dd�D]�}|j�d��}|�|j�|����|jrJ|jsC|j�d��}|�|�|����n|�|��}|�|��|�|����|S)Nr@rr�r�rB)rBr�� is_Boolean�is_Notr�rMrH)r3r�r{r@r�r�r�r�s r8� _print_LogOpz&MathMLPresentationPrinter._print_LogOp!s���x�%�%�f�-�-�� ��7� � 3�d�1�g�n� 3��8�)�)�)�4�4�D� � � �T�[�[��a��1�1� 2� 2� 2� � � �T� "� "� "� "� � � �T�[�[��a��1�1� 2� 2� 2�����8� � �C���&�&�t�,�,�A� �M�M�$�(�1�1�&�9�9� :� :� :��~� %�c�j� %��H�*�*�9�5�5��� � �d�k�k�#�.�.�/�/�/�/��K�K��$�$�� � � �Q� � � � � � �Q� � � � �� r:c�n�ddlm}||jkr|�|j��St ||��r'|������}nd|fg}|j�d��}|D�]�\}}t|j �����}|� d����t|��D�][\}\} } | dkr�|r\|j�d��} | � |j�d����|� | ��|� |�| ������| d kr�|j�d��} | � |j�d ����|� | ��|� |�| ������"|r\|j�d��} | � |j�d����|� | ��|j�d ��} | � |�| ����|� | ��|j�d��} | � |j�d ����|� | ��|� |�| ������]���|S) Nr)�Vectorr@c�6�|d���S)Nr)�__str__)r�s r8�<lambda>zAMathMLPresentationPrinter._print_BasisDependent.<locals>.<lambda>Cs��1�Q�4�<�<�>�>�r:r�r�rBr�r�r�r�r�)� sympy.vectorr��zerorMr��separater?rBr�r4� components�sortr�r�rH) r3rQr�r?r@�system�vect� inneritemsr��k�vrB�mbracs r8�_print_BasisDependentz/MathMLPresentationPrinter._print_BasisDependent5s���'�'�'�'�'�'� �4�9� � ��;�;�t�y�)�)� )� �d�F� #� #� ��M�M�O�O�)�)�+�+�E�E���Y�K�E��x�%�%�f�-�-��!� 5� 5�L�F�D��d�o�3�3�5�5�6�6�J� �O�O�"9�"9�O� :� :� :�&�z�2�2� 5� 5� ��6�A�q���6�6��-�!�X�3�3�D�9�9�����t�x�'>�'>�s�'C�'C�D�D�D��(�(��,�,�,��$�$�T�[�[��^�^�4�4�4�4��"�W�W���/�/��5�5�B��N�N�4�8�#:�#:�3�#?�#?�@�@�@��$�$�R�(�(�(��$�$�T�[�[��^�^�4�4�4�4��-�!�X�3�3�D�9�9�����t�x�'>�'>�s�'C�'C�D�D�D��(�(��,�,�,� �H�2�2�9�=�=�E��%�%�d�k�k�!�n�n�5�5�5��$�$�U�+�+�+���/�/��5�5�B��N�N�4�8�#:�#:�;M�#N�#N�O�O�O��$�$�R�(�(�(��$�$�T�[�[��^�^�4�4�4�4�/ 5�0� r:c�d�t|jt���}|�|d��S)Nr�z&#x2227;�r�r�rr��r3rQr�s r8� _print_Andz$MathMLPresentationPrinter._print_And_�-���d�i�%5�6�6�6��� � ��z�2�2�2r:c�d�t|jt���}|�|d��S)Nr�z&#x2228;r�r�s r8� _print_Orz#MathMLPresentationPrinter._print_Orcr�r:c�d�t|jt���}|�|d��S)Nr�z&#x22BB;r�r�s r8r�z$MathMLPresentationPrinter._print_Xorgr�r:c�8�|�|jd��S)Nz&#x21D2;)r�r�r:s r8r�z(MathMLPresentationPrinter._print_Impliesks��� � ���J�7�7�7r:c�d�t|jt���}|�|d��S)Nr�z&#x21D4;r�r�s r8�_print_Equivalentz+MathMLPresentationPrinter._print_Equivalentnr�r:c��|j�d��}|j�d��}|�|j�d����|�|��|jdjrN|j�d��}|�|�|jd����n |�|jd��}|�|��|S)Nr@rBz&#xAC;rr�)rBr�r�rHr�r�rM)r3r�r@rBr�s r8r�z$MathMLPresentationPrinter._print_Notrs����x�%�%�f�-�-�� �X� #� #�D� )� )�� ���t�x�.�.�x�8�8�9�9�9� ������� �F�1�I� � '���&�&�y�1�1�A� �M�M�$�+�+�a�f�Q�i�0�0� 1� 1� 1� 1�� � �A�F�1�I�&�&�A� �������� r:c��|j�d��}|�|j�|�|������|S�NrC�rBr�r�rHr��r3r�rCs r8� _print_boolz%MathMLPresentationPrinter._print_bool�J�� �X� #� #�D� )� )�� ���t�x�.�.�t���q�/A�/A�B�B�C�C�C�� r:c��|j�d��}|�|j�|�|������|Sr�r�r�s r8�_print_NoneTypez)MathMLPresentationPrinter._print_NoneType�r�r:c��d}|j�d��}|�dd��|�dd��|jjr(|jjr|jjr|ddd |f}n�|d dd|f}n�|jjr||d|jz |df}n�|jjr/t|��}t|��t|��|f}nXt|��d kr6t|��}t|��t|��||df}nt|��}|D]�}||kr]|j�d ��}|� |j� |����|� |���e|� |�|������|S) Nu…r�r�rar�rbr�rr��rC)rBr�r�re� is_infinite�stop�step� is_positive�iter�nextr��tupler�rHrM)r3rI�dotsr��printset�it�elrCs r8� _print_Rangez&MathMLPresentationPrinter._print_Range�s������x�%�%�i�0�0�� ���'�3�'�'�'� ���&�#�&�&�&� �7� � �1�6�#5� ��v�!� 0���Q��4�/�����A�r�4�/��� �W� � ��Q�r�U�Q�V�^�Q�r�U�2�H�H� �V� � ��a���B��B�x�x��b���4�/�H�H� ��V�V�a�Z�Z��a���B��B�x�x��b���4��2��6�H�H��Q�x�x�H�� 2� 2�B��T�z�z��X�+�+�D�1�1�����t�x�6�6�t�<�<�=�=�=�� � ��$�$�$�$�� � ����R���1�1�1�1�� r:c�(�t|jt���}|j�d��}|j�d��}|�|j�t|j��� ������|�|��|j�d��}|D]*}|�|� |�����+|�|��|S)Nr�r@rBr�) r�r�rrBr�r�rHr��funcr�rM)r3rQr�r@rBr�r{s r8�_hprint_variadic_functionz3MathMLPresentationPrinter._hprint_variadic_function�s����d�i�%5�6�6�6���x�%�%�f�-�-�� �X� #� #�D� )� )�� ���t�x�.�.��D�I���/E�/E�/G�/G�H�H�I�I�I� ��������x�%�%�i�0�0��� 2� 2�F� � � �T�[�[��0�0� 1� 1� 1� 1� �������� r:c���|j�d��}|�|�d����|�|�|jd����|S)Nr[r)rBr�r�rrMr�)r3rQr[s r8� _print_expz$MathMLPresentationPrinter._print_exp�sd���x�%�%�f�-�-�� ����)�)�$�/�/�0�0�0� ������T�Y�q�\�2�2�3�3�3�� r:c���|j�d��}|�|�|j����|j�d��}|�|j�|�|������|�|��|�|�|j����|S)Nr@rB)rBr�r�rMr�rHr�r��r3r�r@r�s r8r�z+MathMLPresentationPrinter._print_Relational�s����x�%�%�f�-�-�� ������Q�U�+�+�,�,�,� �H� "� "�4� (� (�� � � �d�h�-�-�d�o�o�a�.@�.@�A�A�B�B�B� ������� ������Q�U�+�+�,�,�,�� r:c���|j�|�|����}|�|j�t |������|SrArhr�s r8r�z$MathMLPresentationPrinter._print_int�r�r:c�6�|j�d��}|j\}}|j�d��}|�dd��|�|j�|j|����|�|��|j�d��}|�dd��|�|j�|j����|�|��|S)NrZrCr(r')rBr��_idr�r�rH�_variable_names�_name)r3r�rZ�indexr�rCs r8�_print_BaseScalarz+MathMLPresentationPrinter._print_BaseScalar�s����x�%�%�f�-�-���� ��v� �X� #� #�D� )� )�� ��� �v�.�.�.� ���t�x�.�.�v�/E�e�/L�M�M�N�N�N� ������� �X� #� #�D� )� )�� ��� �v�.�.�.� ���t�x�.�.�v�|�<�<�=�=�=� �������� r:c�L�|j�d��}|j\}}|j�d��}|j�d��}|�dd��|�|j�|j|����|�|��|j�d��}|�|j�d����|�|��|�|��|j�d��}|�dd��|�|j�|j����|�|��|S)NrZ�moverrCr(r'rB�^)rBr�r�r�r�rH� _vector_namesr�)r3r�rZr�r�r�rCrBs r8�_print_BaseVectorz+MathMLPresentationPrinter._print_BaseVector�sc���x�%�%�f�-�-���� ��v���&�&�w�/�/�� �X� #� #�D� )� )�� ��� �v�.�.�.� ���t�x�.�.�v�/C�E�/J�K�K�L�L�L� ���"���� �X� #� #�D� )� )�� ���t�x�.�.�s�3�3�4�4�4� ���"���� ������� �X� #� #�D� )� )�� ��� �v�.�.�.� ���t�x�.�.�v�|�<�<�=�=�=� �������� r:c���|j�d��}|j�d��}|�dd��|�|j�d����|�|��|j�d��}|�|j�d����|�|��|S)Nr�rCr(r'r@rBr��rBr�r�r�rH)r3r�r�rCrBs r8�_print_VectorZeroz+MathMLPresentationPrinter._print_VectorZero�s�����&�&�w�/�/�� �X� #� #�D� )� )�� ��� �v�.�.�.� ���t�x�.�.�s�3�3�4�4�4� ���"���� �X� #� #�D� )� )�� ���t�x�.�.�s�3�3�4�4�4� ���"����� r:c���|j�d��}|j}|j}|�|�|t d����|j�d��}|�|j�d����|�|��|�|�|t d����|S)Nr@rrBr��rBr��_expr1�_expr2r�r�r rH�r3rQr@�vec1�vec2rBs r8� _print_Crossz&MathMLPresentationPrinter._print_Cross������x�%�%�f�-�-���{���{�� ����*�*�4��E�1B�C�C�D�D�D� �X� #� #�D� )� )�� ���t�x�.�.�x�8�8�9�9�9� ������� ����*�*�4��E�1B�C�C�D�D�D�� r:c��|j�d��}|j�d��}|�|j�d����|�|��|j�d��}|�|j�d����|�|��|�|�|jt d����|S)Nr@rB�&#x2207;r�r�rBr�r�rHr��_exprr �r3rQr@rBs r8� _print_Curlz%MathMLPresentationPrinter._print_Curl�����x�%�%�f�-�-�� �X� #� #�D� )� )�� ���t�x�.�.�z�:�:�;�;�;� ������� �X� #� #�D� )� )�� ���t�x�.�.�x�8�8�9�9�9� ������� ����*�*�4�:�z�%�7H�I�I�J�J�J�� r:c��|j�d��}|j�d��}|�|j�d����|�|��|j�d��}|�|j�d����|�|��|�|�|jt d����|S)Nr@rBr�rrr�r�s r8�_print_Divergencez+MathMLPresentationPrinter._print_Divergencer�r:c���|j�d��}|j}|j}|�|�|t d����|j�d��}|�|j�d����|�|��|�|�|t d����|S)Nr@rrBrr�r�s r8� _print_Dotz$MathMLPresentationPrinter._print_Dotr�r:c�d�|j�d��}|j�d��}|�|j�d����|�|��|�|�|jt d����|S)Nr@rBr�rr�r�s r8�_print_Gradientz)MathMLPresentationPrinter._print_Gradient$����x�%�%�f�-�-�� �X� #� #�D� )� )�� ���t�x�.�.�z�:�:�;�;�;� ������� ����*�*�4�:�z�%�7H�I�I�J�J�J�� r:c�d�|j�d��}|j�d��}|�|j�d����|�|��|�|�|jt d����|S)Nr@rBr�rr�r�s r8�_print_Laplacianz*MathMLPresentationPrinter._print_Laplacian,r�r:c���|j�d��}|�dd��|�|j�d����|S)NrCr(�normalz&#x2124;r�rs r8�_print_Integersz)MathMLPresentationPrinter._print_Integers4�R�� �H� "� "�4� (� (�� ���}�h�/�/�/� � � �d�h�-�-�j�9�9�:�:�:��r:c���|j�d��}|�dd��|�|j�d����|S)NrCr(r�z&#x2102;r�rs r8�_print_Complexesz*MathMLPresentationPrinter._print_Complexes:r�r:c���|j�d��}|�dd��|�|j�d����|S)NrCr(r�z&#x211D;r�rs r8� _print_Realsz&MathMLPresentationPrinter._print_Reals@r�r:c���|j�d��}|�dd��|�|j�d����|S)NrCr(r��&#x2115;r�rs r8�_print_Naturalsz)MathMLPresentationPrinter._print_NaturalsFr�r:c��|j�d��}|j�d��}|�dd��|�|j�d����|�|��|�|�t j����|S)NrZrCr(r�r)rBr�r�r�rHrMr�Zero)r3r�rSr�s r8�_print_Naturals0z*MathMLPresentationPrinter._print_Naturals0Ls����h�$�$�V�,�,�� �H� "� "�4� (� (�� ���}�h�/�/�/� � � �d�h�-�-�j�9�9�:�:�:� ������� ���� � �A�F�+�+�,�,�,�� r:c���|jd|jdz }|jd}|j�d��}|j�d��}|�dd��|�dd ��|�|�|����|�|��|�|�|����|S) Nrr�rr[r�r�rHr�rI)r�rBr�r�r�rM)r3rQ�shiftrgrNr�s r8�_print_SingularityFunctionz4MathMLPresentationPrinter._print_SingularityFunctionUs���� �!� �t�y��|�+��� �!� ���h�$�$�V�,�,���x�%�%�i�0�0�� ���'�8�,�,�,� ���&�(�+�+�+� ������U�+�+�,�,�,� ������� ���� � �E�*�*�+�+�+�� r:c��|j�d��}|�|j�d����|S)NrC�NaNrrs r8rz$MathMLPresentationPrinter._print_NaNas>�� �H� "� "�4� (� (�� � � �d�h�-�-�e�4�4�5�5�5��r:c��|j�d��}|j�d��}|�|j�|����|�|��|�|�|jd����t |j��dkr|S|j�d��}|j�d��}|jdd�D]*}|�|�|�����+|�|��|�|��|S)NrZrCrr�r@r�)rBr�r�rHrMr�r�)r3r�rUrSrCr@r�r�s r8�_print_number_functionz0MathMLPresentationPrinter._print_number_functionfs/���h�$�$�V�,�,�� �X� #� #�D� )� )�� ���t�x�.�.�t�4�4�5�5�5� ������� ���� � �A�F�1�I�.�.�/�/�/� �q�v�;�;�!� � ��J��x�%�%�f�-�-�� �H� "� "�9� -� -���6�!�"�"�:� ,� ,�C� �M�M�$�+�+�c�*�*� +� +� +� +� ������� �������� r:c�.�|�|d��S)N�B�r rs r8�_print_bernoulliz*MathMLPresentationPrinter._print_bernoulliy����*�*�1�c�2�2�2r:c�.�|�|d��S)Nr�rrs r8�_print_catalanz(MathMLPresentationPrinter._print_catalan~rr:c�.�|�|d��S)N�Errs r8� _print_eulerz&MathMLPresentationPrinter._print_euler�rr:c�.�|�|d��S)N�Frrs r8�_print_fibonacciz*MathMLPresentationPrinter._print_fibonacci�rr:c�.�|�|d��S)N�Lrrs r8� _print_lucasz&MathMLPresentationPrinter._print_lucas�rr:c�.�|�|d��S)Nz&#x03B3;rrs r8�_print_stieltjesz*MathMLPresentationPrinter._print_stieltjes�s���*�*�1�j�9�9�9r:c�.�|�|d��S)N�Trrs r8�_print_tribonacciz+MathMLPresentationPrinter._print_tribonacci�rr:c��|j�d��}|j�d��}|�|j�d����|�|��|j�d��}|�|j�d����|�|��|S)Nr�rBr��~r)r3r�r�rBs r8�_print_ComplexInfinityz0MathMLPresentationPrinter._print_ComplexInfinity�s��� �H� "� "�7� +� +�� �X� #� #�D� )� )�� ���t�x�.�.�z�:�:�;�;�;� � � �b���� �X� #� #�D� )� )�� ���t�x�.�.�s�3�3�4�4�4� � � �b�����r:c��|j�d��}|�|j�d����|S)NrBz&#x2205;rrs r8r!z)MathMLPresentationPrinter._print_EmptySet�r�r:c��|j�d��}|�|j�d����|S)NrBz &#x1D54C;rrs r8�_print_UniversalSetz-MathMLPresentationPrinter._print_UniversalSet��>�� �H� "� "�4� (� (�� � � �d�h�-�-�k�:�:�;�;�;��r:c�,�ddlm}|j}|j�d��}t ||��sX|j�d��}|�|�|����|�|��n(|�|�|����|j�d��}|�|j�d����|�|��|S)Nr�rzr[r�rBr� �sympy.matricesrzr�rBr�r�r�rMrH�r3rQrz�matrNr�rBs r8�_print_Adjointz(MathMLPresentationPrinter._print_Adjoint�s���/�/�/�/�/�/��h���h�$�$�V�,�,���#�|�,�,� .��8�)�)�)�4�4�D� � � �T�[�[��-�-� .� .� .� �O�O�D� !� !� !� !� �O�O�D�K�K��,�,� -� -� -� �X� #� #�D� )� )�� ���t�x�.�.�z�:�:�;�;�;� �������� r:c�,�ddlm}|j}|j�d��}t ||��sX|j�d��}|�|�|����|�|��n(|�|�|����|j�d��}|�|j�d����|�|��|S)Nrr+r[r�rBr!r,r.s r8�_print_Transposez*MathMLPresentationPrinter._print_Transpose�s���/�/�/�/�/�/��h���h�$�$�V�,�,���#�|�,�,� .��8�)�)�)�4�4�D� � � �T�[�[��-�-� .� .� .� �O�O�D� !� !� !� !� �O�O�D�K�K��,�,� -� -� -� �X� #� #�D� )� )�� ���t�x�.�.�s�3�3�4�4�4� �������� r:c���ddlm}|j}|j�d��}t ||��sX|j�d��}|�|�|����|�|��n(|�|�|����|�|�d����|S)Nrr+r[r�r�)r-rzr�rBr�r�r�rM)r3rQrzr/rNr�s r8�_print_Inversez(MathMLPresentationPrinter._print_Inverse�s���/�/�/�/�/�/��h���h�$�$�V�,�,���#�|�,�,� .��8�)�)�)�4�4�D� � � �T�[�[��-�-� .� .� .� �O�O�D� !� !� !� !� �O�O�D�K�K��,�,� -� -� -� ���� � �B���(�(�(�� r:c ��ddlm}|j�d��}|j}t |dt ��r3|d���t|dd���z}nt|��}t ||��r�|� ��r|ddkr |dd�}n |d |d<|j�d��}|� |j� d����|� |��|dd�D]�}|� |� |t|��d����|j�d��}|� |j� d ����|� |����|� |� |dt|��d����|S) Nr)�MatMulr@r�r�rBr�Fr�)�!sympy.matrices.expressions.matmulr6rBr�r�r�rr�r4r�r�rHr�r )r3rQr6r�r�rBr�s r8� _print_MatMulz'MathMLPresentationPrinter._print_MatMul�s���<�<�<�<�<�<� �H� "� "�6� *� *���y�� �d�1�g�s� #� #� ���7�-�-�/�/�$�t�A�B�B�x�.�.�@�D�D���:�:�D� �d�F� #� #� ��(E�(E�(G�(G� ��A�w�"�}�}��A�B�B�x�����7�(��Q����'�'��-�-�B� �N�N�4�8�2�2�3�7�7� 8� 8� 8� �M�M�"� � � �����9� � �C� �M�M�$�+�+�C�1G��1M�1M�,1�3�3� 4� 4� 4���'�'��-�-�B� �N�N�4�8�2�2�3E�F�F� G� G� G� �M�M�"� � � � � � � �d�'�'��R��2H��2N�2N�(-�/�/� 0� 0� 0��r:c���ddlm}|j|j}}|j�d��}t ||��sX|j�d��}|�|�|����|�|��n(|�|�|����|�|�|����|S)Nrr+r[r�) r-rzrcrarBr�r�r�rM)r3rQrzrcrarNr�s r8� _print_MatPowz'MathMLPresentationPrinter._print_MatPow�s���/�/�/�/�/�/��I�t�x�c���h�$�$�V�,�,���$� �-�-� /��8�)�)�)�4�4�D� � � �T�[�[��.�.� /� /� /� �O�O�D� !� !� !� !� �O�O�D�K�K��-�-� .� .� .� ���� � �C�(�(�)�)�)�� r:c ��|j�d��}|j}|dd�D]�}|�|�|t |��d����|j�d��}|�|j�d����|�|����|�|�|dt |��d����|S)Nr@r�FrBz&#x2218;)rBr�r�r�r�r rH)r3rQr�r�r�rBs r8�_print_HadamardProductz0MathMLPresentationPrinter._print_HadamardProduct�s��� �H� "� "�6� *� *���y������9� � �C� �M�M��!�!�#�'=�d�'C�'C�U�K�K� M� M� M���'�'��-�-�B� �N�N�4�8�2�2�:�>�>� ?� ?� ?� �M�M�"� � � � � � � � � � �d�2�h�(>�t�(D�(D�e� L� L� N� N� N��r:c��|j�d��}|�|j�d����|S)Nr�z&#x1D7D8r�r3�Zr�s r8�_print_ZeroMatrixz+MathMLPresentationPrinter._print_ZeroMatrixr�r:c��|j�d��}|�|j�d����|S)Nr�z&#x1D7D9rr>s r8�_print_OneMatrixz*MathMLPresentationPrinter._print_OneMatrix r�r:c��|j�d��}|�|j�d����|S)NrCz &#x1D540;r)r3rwr�s r8�_print_Identityz)MathMLPresentationPrinter._print_Identityr)r:c�V�|j�d��}|j�d��}|�dd��|�dd��|�|�|jd����|�|��|S)Nr@r�r�u⌋r�u⌊rr/r�s r8� _print_floorz&MathMLPresentationPrinter._print_floor����x�%�%�f�-�-�� �H� "� "�9� -� -�� ���w��)�)�)� ���v�x�(�(�(� � � �d�k�k�!�&��)�,�,�-�-�-� �������� r:c�V�|j�d��}|j�d��}|�dd��|�dd��|�|�|jd����|�|��|S)Nr@r�r�u⌉r�u⌈rr/r�s r8�_print_ceilingz(MathMLPresentationPrinter._print_ceilingrGr:c��|j�d��}|j�d��}|jd}t|��dkr|�|d��}n|�|��}|�|��|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|S)Nr�r@rr�rBz&#x21A6;)rBr�r�r�rMr�rH)r3r�r�r@�symbolsrBs r8r�z'MathMLPresentationPrinter._print_Lambda's �� �H� "� "�9� -� -���x�%�%�f�-�-���&��)�� �w�<�<�1� � ��k�k�'�!�*�-�-�G�G��k�k�'�*�*�G� ����!�!�!� �X� #� #�D� )� )�� ���t�x�.�.�z�:�:�;�;�;� ������� ������Q�V�A�Y�/�/�0�0�0� � � �d�����r:c��|j�d��}|D]*}|�|�|�����+|Sr�r�)r3r�r�r�s r8� _print_tuplez&MathMLPresentationPrinter._print_tuple7sJ�� �H� "� "�9� -� -��� *� *�A� �M�M�$�+�+�a�.�.� )� )� )� )��r:c�6�|�|j��SrA)rM�labelrs r8�_print_IndexedBasez,MathMLPresentationPrinter._print_IndexedBase=s���{�{�1�7�#�#�#r:c��|j�d��}|�|�|j����t |j��dkr5|�|�|jd����|S|�|�|j����|S)NrZr�r)rBr�r�rMrcr��indicesrs r8�_print_Indexedz(MathMLPresentationPrinter._print_Indexed@s��� �H� "� "�6� *� *�� � � �d�k�k�!�&�)�)�*�*�*� �q�y�>�>�Q� � � �M�M�$�+�+�a�i��l�3�3� 4� 4� 4��H� � � �d�k�k�!�)�,�,�-�-�-��r:c���|j�d��}|�|�|jt dd�����|j�d��}|�dd��|�dd��|jD]*}|�|�|�����+|�|��|S) NrZ�AtomTrr�r�r.r�) rBr�r�r��parentr r�rRrM)r3r�r�r�r�s r8�_print_MatrixElementz.MathMLPresentationPrinter._print_MatrixElementIs��� �H� "� "�6� *� *�� � � �d�'�'���*�V�2D�t�'�T�T�U�U�U��x�%�%�i�0�0�� ���'�2�&�&�&� ���&�"�%�%�%��� -� -�A� � � �T�[�[��^�^� ,� ,� ,� ,� � � �d�����r:c���|j�d��}|j�d��}|�|j�d����|�|��|j�d��}|�dd��|jD]*}|�|�|�����+|�|��|S)Nr@rCz &#x1d5a5;r�� separatorsrk�rBr�r�rHr�r�rM�r3r�r�rCr�r�s r8�_print_elliptic_fz+MathMLPresentationPrinter._print_elliptic_fT���� �H� "� "�6� *� *�� �X� #� #�D� )� )�� ���t�x�.�.�{�;�;�<�<�<� � � �b���� �H� "� "�9� -� -�� ���|�S�)�)�)��� *� *�A� �M�M�$�+�+�a�.�.� )� )� )� )� � � �a�����r:c���|j�d��}|j�d��}|�|j�d����|�|��|j�d��}|�dd��|jD]*}|�|�|�����+|�|��|S)Nr@rCz &#x1d5a4;r�rYrkrZr[s r8�_print_elliptic_ez+MathMLPresentationPrinter._print_elliptic_e`r]r:c�>�|j�d��}|j�d��}|�|j�d����|�|��|j�d��}t |j��dkr|�dd��n|�dd��|jD]*}|�|�|�����+|�|��|S) Nr@rCz &#x1d6f1;r�rrYrkz;|)rBr�r�rHr�r�r�rMr[s r8�_print_elliptic_piz,MathMLPresentationPrinter._print_elliptic_pils��� �H� "� "�6� *� *�� �X� #� #�D� )� )�� ���t�x�.�.�{�;�;�<�<�<� � � �b���� �H� "� "�9� -� -�� �q�v�;�;�!� � � �N�N�<�� -� -� -� -� �N�N�<�� .� .� .��� *� *�A� �M�M�$�+�+�a�.�.� )� )� )� )� � � �a�����r:c�L�|j�d��}|j�d��}|�|j�d����|�|��|�|�|j����|S)Nr@rC�Eir)r3r�r�rCs r8� _print_Eiz#MathMLPresentationPrinter._print_Ei{s��� �H� "� "�6� *� *�� �X� #� #�D� )� )�� ���t�x�.�.�t�4�4�5�5�5� � � �b���� � � �d�k�k�!�&�)�)�*�*�*��r:c� �|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|�|�|jdd�����|S)Nr@rZrBrrr�r�r3r�r�r�rBs r8� _print_expintz'MathMLPresentationPrinter._print_expint����� �H� "� "�6� *� *�� �H� "� "�6� *� *�� �X� #� #�D� )� )�� ���t�x�.�.�s�3�3�4�4�4� � � �b���� � � �d�k�k�!�&��)�,�,�-�-�-� � � �a���� � � �d�k�k�!�&����*�-�-�.�.�.��r:c��|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|�|jdd�����|�|��|�|�|jdd�����|S)Nr@r\rB�Prr�r,rrfs r8� _print_jacobiz'MathMLPresentationPrinter._print_jacobi���� �H� "� "�6� *� *�� �H� "� "�9� -� -�� �X� #� #�D� )� )�� ���t�x�.�.�s�3�3�4�4�4� � � �b���� � � �d�k�k�!�&��)�,�,�-�-�-� � � �d�k�k�!�&��1��+�.�.�/�/�/� � � �a���� � � �d�k�k�!�&����*�-�-�.�.�.��r:c��|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|�|jdd�����|�|��|�|�|jdd�����|S)Nr@r\rBr�rr�rrrfs r8�_print_gegenbauerz+MathMLPresentationPrinter._print_gegenbauer�rlr:c� �|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|�|�|jdd�����|S)Nr@rZrBr!rr�rrfs r8�_print_chebyshevtz+MathMLPresentationPrinter._print_chebyshevt�rhr:c� �|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|�|�|jdd�����|S)Nr@rZrB�Urr�rrfs r8�_print_chebyshevuz+MathMLPresentationPrinter._print_chebyshevu�rhr:c� �|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|�|�|jdd�����|S)Nr@rZrBrjrr�rrfs r8�_print_legendrez)MathMLPresentationPrinter._print_legendre�rhr:c��|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|�|jdd�����|�|��|�|�|jdd�����|S)Nr@r\rBrjrr�rrrfs r8�_print_assoc_legendrez/MathMLPresentationPrinter._print_assoc_legendre�rlr:c� �|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|�|�|jdd�����|S)Nr@rZrBrrr�rrfs r8�_print_laguerrez)MathMLPresentationPrinter._print_laguerre�rhr:c��|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|�|jdd�����|�|��|�|�|jdd�����|S)Nr@r\rBrrr�rrrfs r8�_print_assoc_laguerrez/MathMLPresentationPrinter._print_assoc_laguerre�rlr:c� �|j�d��}|j�d��}|j�d��}|�|j�d����|�|��|�|�|jd����|�|��|�|�|jdd�����|S)Nr@rZrB�Hrr�rrfs r8�_print_hermitez(MathMLPresentationPrinter._print_hermite�rhr:)FrA)r)�r;r<r=rWr�r�r�r�r�r�r�r�rr rrrrr)rr rr r r rrr6r8r]r�r�r1r6r;r=rArfrirJrvrzrpr[r|r_rirl�_print_Determinantrortrxr~r}r�r�r�r�r�r�r��_print_frozensetr�r�r�r�r�r�r�r�r�r$r'r�r�r�� _print_Min� _print_Maxr�r�r�r�r�r�r�r�r�r�r�r�r�r�rrrr rr r� _print_bellrrrrrr"r%r!r(r0r2r4r8r:r<r@rBrDrFrIr�rMrPrSrWr\r_rardrgrkrnrprsrurwryr{r~r>r:r8r�r�s���������)�K�K�K�K�Z%�%�%�%�-�-�-�^����(���$����(P�P�P����,��� ��� ��� ��� ��� ������ ��� ��� ��� ������ ��� ��� $�$�$�L���>4�4�4�4�lL�L�L�(����� ���=�=�=�>�>�>����4�4�4�l��� ���.�.�.�` � � �%�%�%�N � � � � � �������0����$�� � � �4�4�4�4�4�4�4�4���� � � �9�9�9�9�9�9�9�9�9�9�9�9�9�9�9�'�'�'����"�����('�'�'�T3�3�3�3�3�3�3�3�3�8�8�8�3�3�3� � � ���� %��%����� ���@ � � �8�7�J����� ������ � � ����$ � � � � � � � � � � � � � � ���������� ��� ��� ��� ��� � � ���� ���&3�3�3�#�K�3�3�3�3�3�3�3�3�3�3�3�3�:�:�:�3�3�3������� ��� � � � � � � � � ����: � � � � � ���� ��� ��� ��������� ��� $�$�$���� � � � � � � � � � � � ���� � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � � r:r��contentc ��|dkr"t|���|��St|���|��S)z�Returns the MathML representation of expr. If printer is presentation then prints Presentation MathML else prints content MathML. � presentation)r�rVrZ)rQ�printerrIs r8�mathmlr��sG�� �.� � �(��2�2�:�:�4�@�@�@�#�H�-�-�5�5�d�;�;�;r:c ���|dkrt|��}nt|��}|�t|����}|���}t |��dS)a Prints a pretty representation of the MathML code for expr. If printer is presentation then prints Presentation MathML else prints content MathML. Examples ======== >>> ## >>> from sympy import print_mathml >>> from sympy.abc import x >>> print_mathml(x+1) #doctest: +NORMALIZE_WHITESPACE <apply> <plus/> <ci>x</ci> <cn>1</cn> </apply> >>> print_mathml(x+1, printer='presentation') <mrow> <mi>x</mi> <mo>+</mo> <mn>1</mn> </mrow> r�N)r�rZrMr� toprettyxml�print)rQr�rIrI�xml� pretty_xmls r8� print_mathmlr�se��2�.� � � %�h� /� /��� �� *� *�� �(�(�7�4�=�=� !� !�C����"�"�J� �*�����r:N)r�)$rW� __future__r�typingr�sympy.core.mulr�sympy.core.singletonr�sympy.core.sortingr�sympy.core.sympifyr�sympy.printing.conventionsr r �sympy.printing.precedencer r r �&sympy.printing.pretty.pretty_symbologyr�sympy.printing.printerrr� mpmath.libmprrrrlrrZr�r�r�� MathMLPrinterr>r:r8�<module>r�s�����#�"�"�"�"�"�������������"�"�"�"�"�"�/�/�/�/�/�/�&�&�&�&�&�&�H�H�H�H�H�H�H�H�?�?�?�?�?�?�?�?�?�?�@�@�@�@�@�@�:�:�:�:�:�:�:�:�E�E�E�E�E�E�E�E�E�E�5�5�5�5�5��5�5�5�pJ�J�J�J�J�,�J�J�J�^W�W�W�W�W� 1�W�W�W�t.��!�"�"�<�<�<�#�"�<� � � � �H%� � � r:
Memory