
    g!&hd                         d dl Z d dlZd dlmZ d dlmZ  ed      Zerd dlmZmZm	Z	 n G d d      Z G d d	      Z G d
 d      Z	 G d de      Z
y)    N)import_module)LaTeXParsingErrorlark)TransformerTokenTreec                       e Zd Zd Zy)r   c                      y N )selfargss     z/var/www/pru.catia.catastroantioquia-mas.com/valormas/lib/python3.12/site-packages/sympy/parsing/latex/lark/transformer.py	transformzTransformer.transform   s        N)__name__
__module____qualname__r   r   r   r   r   r      s    	r   r   c                       e Zd Zy)r   Nr   r   r   r   r   r   r   r          r   r   c                       e Zd Zy)r   Nr   r   r   r   r   r      r   r   r   c                   r   e Zd ZdZej
                  Zej                  j                  j                  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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-d% Z.d& Z/d' Z0d( Z1d) Z2d* Z3d+ Z4d, Z5d- Z6d. Z7d/ Z8d0 Z9d1 Z:d2 Z;d3 Z<d4 Z=d5 Z>d6 Z?d7 Z@d8 ZAd9 ZBd: ZCd; ZDd< ZEd= ZFd> ZGd? ZHd@ ZIdA ZJdB ZKdC ZLdD ZMdE ZNdF ZOdG ZPdH ZQdI ZRdJ ZSdK ZTdL ZUdM ZVdN ZWdO ZXdP ZYdQeZfdRZ[dS Z\dT Z]dU Z^dV Z_dW Z`dX ZayY)ZTransformToSymPyExpra   Returns a SymPy expression that is generated by traversing the ``lark.Tree``
    passed to the ``.transform()`` function.

    Notes
    =====

    **This class is never supposed to be used directly.**

    In order to tweak the behavior of this class, it has to be subclassed and then after
    the required modifications are made, the name of the new class should be passed to
    the :py:class:`LarkLaTeXParser` class by using the ``transformer`` argument in the
    constructor.

    Parameters
    ==========

    visit_tokens : bool, optional
        For information about what this option does, see `here
        <https://lark-parser.readthedocs.io/en/latest/visitors.html#lark.visitors.Transformer>`_.

        Note that the option must be set to ``True`` for the default parser to work.
    c                 "    t         j                  S r   )sympyoor   tokenss     r   	CMD_INFTYzTransformToSymPyExpr.CMD_INFTY5   s    xxr   c                 `    t        j                  dd|dd        }t        j                  |      S )Nvar    )resubr   Symbol)r   r   variable_names      r   GREEK_SYMBOL_WITH_PRIMESz-TransformToSymPyExpr.GREEK_SYMBOL_WITH_PRIMES8   s+     ub&*5||M**r   c                     |j                   j                  d      \  }}|j                  d      rt        j                  |d|dd d      S t        j                  |d|d      S )N_{_{r$   })valuesplit
startswithr   r'   )r   r   baser&   s       r   !LATIN_SYMBOL_WITH_LATIN_SUBSCRIPTz6TransformToSymPyExpr.LATIN_SYMBOL_WITH_LATIN_SUBSCRIPT?   sT    LL&&s+	c>>#<<T3q9 =>><<T3 788r   c                    |j                   j                  d      \  }}t        j                  dd|dd        }|j	                  d      rt        j                  |d|dd d      S t        j                  |d|d      S )	Nr+   r"   r#   r$   r,   r-   r.   r/   r0   r1   r%   r&   r2   r   r'   r   r   r3   r&   greek_letters        r   !GREEK_SYMBOL_WITH_LATIN_SUBSCRIPTz6TransformToSymPyExpr.GREEK_SYMBOL_WITH_LATIN_SUBSCRIPTF   sl    LL&&s+	cvveRab2>>#<<\3q9 EFF<<\3 ?@@r   c                     |j                   j                  d      \  }}|j                  d      r|dd }n|dd  }t        j                  dd|      }t        j                  |d|d	      S )
Nr+   r,      r.   r$   r"   r#   r-   r/   )r0   r1   r2   r%   r&   r   r'   r7   s        r   !LATIN_SYMBOL_WITH_GREEK_SUBSCRIPTz6TransformToSymPyExpr.LATIN_SYMBOL_WITH_GREEK_SUBSCRIPTO   sb    LL&&s+	c>>#q9Lqr7LvveR6|||<==r   c                    |j                   j                  d      \  }}t        j                  dd|dd        }|j	                  d      r|dd }n|dd  }t        j                  dd|      }t        j                  |d|d	      S )
Nr+   r"   r#   r$   r,   r;   r.   r-   r/   r6   )r   r   r3   r&   
greek_base	greek_subs         r   !GREEK_SYMBOL_WITH_GREEK_SUBSCRIPTz6TransformToSymPyExpr.GREEK_SYMBOL_WITH_GREEK_SUBSCRIPTZ   sz    LL&&s+	cVVE2tABx0
>>#Ab	IABIFF5"i0	||Y?@@r   c                     t        |      dk(  rt        j                  |d         S t        |      dk(  rt        j                  |d   |d   z         S y )N   r;      )lenr   r'   r   s     r   multi_letter_symbolz(TransformToSymPyExpr.multi_letter_symbolf   sN    v;!<<q	**v;!<<q	F1I 566 r   c                    |d   j                   dk(  rt        j                  S d|d   v r,t        j                  j                  j                  |d         S t        j                  j                  j                  |d         S )Nr   CMD_IMAGINARY_UNIT.)typer   IcorenumbersFloatIntegerr   s     r   numberzTransformToSymPyExpr.numberl   sf    !9>>1177N&)::%%++F1I66::%%--fQi88r   c                     |d   S Nr   r   r   s     r   latex_stringz!TransformToSymPyExpr.latex_stringu       ayr   c                     |d   S Nr$   r   r   s     r   group_round_parenthesesz,TransformToSymPyExpr.group_round_parenthesesx   rS   r   c                     |d   S rU   r   r   s     r   group_square_bracketsz*TransformToSymPyExpr.group_square_brackets{   rS   r   c                     |d   S rU   r   r   s     r   group_curly_parenthesesz,TransformToSymPyExpr.group_curly_parentheses~   rS   r   c                 :    t        j                  |d   |d         S Nr   r;   )r   Eqr   s     r   eqzTransformToSymPyExpr.eq       xxq	6!9--r   c                 :    t        j                  |d   |d         S r\   )r   Ner   s     r   nezTransformToSymPyExpr.ne   r_   r   c                 :    t        j                  |d   |d         S r\   )r   Ltr   s     r   ltzTransformToSymPyExpr.lt   r_   r   c                 :    t        j                  |d   |d         S r\   )r   Ler   s     r   ltezTransformToSymPyExpr.lte   r_   r   c                 :    t        j                  |d   |d         S r\   )r   Gtr   s     r   gtzTransformToSymPyExpr.gt   r_   r   c                 :    t        j                  |d   |d         S r\   )r   Ger   s     r   gtezTransformToSymPyExpr.gte   r_   r   c                     t        |      dk(  r|d   S t        |      dk(  rX|d   }|d   }| j                  |      s| j                  |      rt        j                  ||      S t        j                  ||      S y )Nr;   r$      r   )rD   _obj_is_sympy_Matrixr   MatAddAddr   r   lhrhs       r   addzTransformToSymPyExpr.add   sx    v;!!9v;!BB((,0I0I"0M||B++99R$$ r   c                 t   t        |      dk(  r/|d   }| j                  |      rt        j                  d|      S | S t        |      dk(  rm|d   }|d   }| j                  |      s| j                  |      r*t        j                  |t        j                  d|            S t        j
                  ||       S y )Nr;   r$   r.   rp   r   )rD   rq   r   MatMulrr   rs   )r   r   xru   rv   s        r   r&   zTransformToSymPyExpr.sub   s    v;!q	A((+||B**2Iv;!BB((,0I0I"0M||BR(<==99R"%% r   c                     |d   }|d   }| j                  |      s| j                  |      rt        j                  ||      S t        j                  ||      S r\   )rq   r   ry   Mulrt   s       r   mulzTransformToSymPyExpr.mul   sQ    AYAY$$R(D,E,Eb,I<<B''yyR  r   c                 2    | j                  |d   |d         S r\   )_handle_divisionr   s     r   divzTransformToSymPyExpr.div   s    $$VAYq	::r   c                 ^   ddl m}m} t        |d   |      r$t        |d   |      rddl m}  ||d   |d         S |d   t        j                  d      k(  r
|d   |d   fS t        |d   t              rt        j                  |d   |d   d         S t        j                  |d   |d         S )Nr   )BraKetr$   )OuterProductd)
sympy.physics.quantumr   r   
isinstancer   r   r'   tuple
Derivativer|   )r   r   r   r   r   s        r   adjacent_expressionsz)TransformToSymPyExpr.adjacent_expressions   s     	3fQi%*VAY*D:q	6!955AY%,,s++!9fQi''q	5)##F1Ivay|<<99VAYq	22r   c                    d }d }d }d }|d   }t        |      dk(  r|d   }t        |      dk(  r|d   }| j                  |      r~t        j                  d	      k(  rt        j                  |      S |t        j                  d
      k(  rt        j
                  |      S  ||      r4|j                  }t        |      dz  dk(  r|S t        j                  |      S  ||      r@|j                  }t        |      t        d      z  dz  dk(  r|S t        j                  |      S  ||      rB|j                  }t        |      dz  dk(  r|j                         S t        j
                  |      S  ||      rN|j                  }t        |      t        d      z  dz  dk(  r|j                         S t        j
                  |      S  |      s ||      s ||      s ||      rt        | d| d      t        j                  ||      S )Nc                 D    t        | t              xr | j                  dk(  S )NPRIMESr   r   rI   rz   s    r   isprimez1TransformToSymPyExpr.superscript.<locals>.isprime   s    a'>AFFh,>>r   c                 f    t        | t              xr  | j                  dk(  xs | j                  dk(  S )NPRIMES_VIA_CMD	CMD_PRIMEr   r   s    r   
iscmdprimez4TransformToSymPyExpr.superscript.<locals>.iscmdprime   s6    a' GQVV7G-G .F01+0EGr   c                 D    t        | t              xr | j                  dk(  S )NSTARSr   r   s    r   isstarz0TransformToSymPyExpr.superscript.<locals>.isstar   s    a'=AFFg,==r   c                 f    t        | t              xr  | j                  dk(  xs | j                  dk(  S )NSTARS_VIA_CMDCMD_ASTERISKr   r   s    r   	iscmdstarz3TransformToSymPyExpr.superscript.<locals>.iscmdstar   s5    a' JQVV-F .I01.0HJr   r   rp   r;   rC   THz\primez\astz with superscript  is not understood.)
rD   rq   r   r'   	Transposeadjointr0   doitr   Pow)r   r   r   r   r   r   r3   sups           r   superscriptz TransformToSymPyExpr.superscript   s   	?	G	>	J ayv;!)Cv;!
 )C$$T*ell3''t,,ell3''}}T**s|iis8a<1$Kt,,#iiHS^+q0A5Kt,,c{ii s8a<1$99;&}}T**~iiHS\)Q.!399;&}}T**3<:c?fSkYs^#tf,>seCV$WXXyys##r   c                     |d   }|d   j                   }| j                  |      st        d| d| d      t        |      dz  dk(  r|S t	        j
                  |      S )Nr   r$   ()r   r;   )r0   rq   r   rD   r   r   r   r   r3   primess       r   matrix_primez!TransformToSymPyExpr.matrix_prime  se    ay((.#avQvh6I$JKKv;?aKt$$r   c                 p    |d   }|d   j                   }t        j                  |j                   |       S )Nr   r$   )r0   r   r'   namer   s       r   symbol_primez!TransformToSymPyExpr.symbol_prime  s4    ay||tyyk&233r   c                 x    |d   }t        |d   t              r|d   \  }}d|fS |d   }| j                  ||      S )Nr$   r;   
derivative)r   r   r   )r   r   	numeratorr+   variabledenominators         r   fractionzTransformToSymPyExpr.fraction  sO    1I	fQi' )KAx  )) )K((K@@r   c                 :    t        j                  |d   |d         S )Nr$   r;   )r   binomialr   s     r   r   zTransformToSymPyExpr.binomial&  s    ~~fQi33r   c                    d }d }d|v r|j                  d      }d|v r|j                  d      }|r||dz      nd }|r||dz      nd }| j                  |      }|t        d      |j                  |      dz   }||   }||t        d      ||t        d      |||dz
  k(  rd}	n|||dz
  k(  rd}	n|dk(  rd}	n||dz
     }	|t        j                  |	|||f      S t        j                  |	|      S )	Nr+   ^r$   ztDifferential symbol was not found in the expression.Valid differential symbols are "d", "\text{d}, and "\mathrm{d}".FLower bound for the integral was found, but upper bound was not found.FUpper bound for the integral was found, but lower bound was not found.rp   r;   )index_extract_differential_symbolr   r   Integral)
r   r   underscore_indexcaret_indexlower_boundupper_bounddifferential_symboldifferential_variable_indexdifferential_variable	integrands
             r   normal_integralz$TransformToSymPyExpr.normal_integral)  sq   &=  &||C0&= !,,s+K6Ff-12D1<f[1_-$"??G&# %n o o '-ll3F&G!&K# &'B C "{':#$lmm"{':#$lmm ',<@[^_@_,_ I$8SVW8W)W I(A- I :Q>?I"
 >>).C[R]-^__ >>)-BCCr   c                 ^    t        |      dk(  rd|d   fS t        |      dk(  r
|d   |d   fS y )Nrp   r$   rB   r;   )rD   r   s     r   group_curly_parentheses_intz0TransformToSymPyExpr.group_curly_parentheses_intl  sB     v;!fQi<[A!9fQi'' r   c                 t    |d   \  }}|d   }t        j                  |t        j                  |d            |fS )Nr$   r;   r.   )r   r|   r   )r   r   r   r   r   s        r   special_fractionz%TransformToSymPyExpr.special_fractionu  s<    $Qi	8Qi yyEIIk2$>?IIr   c                 <   d }d }d|v r|j                  d      }d|v r|j                  d      }|r||dz      nd }|r||dz      nd }||t        d      ||t        d      |d   \  }}|t        j                  ||||f      S t        j                  ||      S )Nr+   r   r$   r   r   r.   )r   r   r   r   )r   r   r   r   r   r   r   r   s           r   integral_with_special_fractionz3TransformToSymPyExpr.integral_with_special_fraction|  s    &=  &||C0&= !,,s+K6Ff-12D1<f[1_-$ "{':#$lmm"{':#$lmm+1":(	("
 >>).C[R]-^__ >>)-BCCr   c                     |j                  d      }|j                  d      }|j                  d|      }|j                  d|      }||dz   | }||dz   d  }|d   }|d   }	|d   }
||	|
fS )Nr+   r   r,   r/   r$   r   r.   r   )r   r   r   r   left_brace_indexright_brace_indexbottom_limit	top_limitindex_variablelower_limitupper_limits              r   group_curly_parentheses_specialz4TransformToSymPyExpr.group_curly_parentheses_special  s    !<<,ll3' "<<-=>"LL.>?.24EF ;?+,	 &a"2&l {K77r   c                 :    t        j                  |d   |d         S Nr;   r$   )r   Sumr   s     r   	summationzTransformToSymPyExpr.summation  s    yyF1I..r   c                 :    t        j                  |d   |d         S r   )r   Productr   s     r   productzTransformToSymPyExpr.product  s    }}VAYq	22r   c                     |j                  d      }d|v r|j                  d|      }||dz      }n||dz      }|dk(  r|d   dfS |dk(  r|d   dfS |d   dfS )Nr   r,   r$   +r   -+-r   )r   r   r   left_curly_brace_index	directions        r   limit_dir_exprz#TransformToSymPyExpr.limit_dir_expr  s    ll3'&=%+\\#{%C"59:I{Q/I!9c>!#!9c>!!9d?"r   c                 \    |d   }t        |d   t              r	|d   \  }}n|d   }d}|||fS )Nr$   rp   r   )r   r   r   r   limit_variabledestinationr   s        r   group_curly_parentheses_limz0TransformToSymPyExpr.group_curly_parentheses_lim  sB    fQi'%+AY"K )KI{I55r   c                 J    |d   \  }}}t        j                  |d   |||      S Nr;   r.   )r   Limitr   s        r   limitzTransformToSymPyExpr.limit  s+    17.Y{{6":~{INNr   c                     |d   S rU   r   r   s     r   differentialz!TransformToSymPyExpr.differential  rS   r   c                 :    t        j                  |d   |d         S )Nr.   rC   )r   r   r   s     r   r   zTransformToSymPyExpr.derivative  s    r
F1I66r   c                 @    t        |      dk(  r|S d }t        ||      S )Nr$   c                 Z    t        | t              r| j                  dk7  rt        d      yy)NCOMMAzAA comma token was expected, but some other token was encountered.FT)r   r   rI   r   )r   s    r   remove_tokensz?TransformToSymPyExpr.list_of_expressions.<locals>.remove_tokens  s*    dE*yyG+/0stt r   )rD   filter)r   r   r   s      r   list_of_expressionsz(TransformToSymPyExpr.list_of_expressions  s)    v;! M -00r   c                 >     t        j                  |d         |d    S r\   )r   Functionr   s     r   function_appliedz%TransformToSymPyExpr.function_applied  s     (u~~fQi(&)44r   c                 ,    t        j                  |d    S Nr;   )r   Minr   s     r   minzTransformToSymPyExpr.min      yy&)$$r   c                 ,    t        j                  |d    S r   )r   Maxr   s     r   maxzTransformToSymPyExpr.max  r   r   c                 $    ddl m}  ||d         S )Nr   )r   r$   )r   r   )r   r   r   s      r   brazTransformToSymPyExpr.bra
      -6!9~r   c                 $    ddl m}  ||d         S )Nr   )r   r$   )r   r   )r   r   r   s      r   ketzTransformToSymPyExpr.ket  r  r   c                 L    ddl m}m}m}  | ||d          ||d               S )Nr   )r   r   InnerProductr$   rp   )r   r   r   r  )r   r   r   r   r  s        r   inner_productz"TransformToSymPyExpr.inner_product  s%    @@Cq	NCq	N;;r   c                 2    t        j                  |d         S rU   )r   sinr   s     r   r
  zTransformToSymPyExpr.sin      yy##r   c                 2    t        j                  |d         S rU   )r   cosr   s     r   r  zTransformToSymPyExpr.cos  r  r   c                 2    t        j                  |d         S rU   )r   tanr   s     r   r  zTransformToSymPyExpr.tan  r  r   c                 2    t        j                  |d         S rU   )r   cscr   s     r   r  zTransformToSymPyExpr.csc  r  r   c                 2    t        j                  |d         S rU   )r   secr   s     r   r  zTransformToSymPyExpr.sec"  r  r   c                 2    t        j                  |d         S rU   )r   cotr   s     r   r  zTransformToSymPyExpr.cot%  r  r   c                     |d   }|dk(  rt        j                  |d         S t        j                  t        j                  |d         |      S r   )r   asinr   r
  r   r   exponents      r   	sin_powerzTransformToSymPyExpr.sin_power(  C    !9r>::fRj))99UYYvbz2H==r   c                     |d   }|dk(  rt        j                  |d         S t        j                  t        j                  |d         |      S r   )r   acosr   r  r  s      r   	cos_powerzTransformToSymPyExpr.cos_power/  r  r   c                     |d   }|dk(  rt        j                  |d         S t        j                  t        j                  |d         |      S r   )r   atanr   r  r  s      r   	tan_powerzTransformToSymPyExpr.tan_power6  r  r   c                     |d   }|dk(  rt        j                  |d         S t        j                  t        j                  |d         |      S r   )r   acscr   r  r  s      r   	csc_powerzTransformToSymPyExpr.csc_power=  r  r   c                     |d   }|dk(  rt        j                  |d         S t        j                  t        j                  |d         |      S r   )r   asecr   r  r  s      r   	sec_powerzTransformToSymPyExpr.sec_powerD  r  r   c                     |d   }|dk(  rt        j                  |d         S t        j                  t        j                  |d         |      S r   )r   acotr   r  r  s      r   	cot_powerzTransformToSymPyExpr.cot_powerK  r  r   c                 2    t        j                  |d         S rU   )r   r  r   s     r   arcsinzTransformToSymPyExpr.arcsinR      zz&)$$r   c                 2    t        j                  |d         S rU   )r   r  r   s     r   arccoszTransformToSymPyExpr.arccosU  r-  r   c                 2    t        j                  |d         S rU   )r   r   r   s     r   arctanzTransformToSymPyExpr.arctanX  r-  r   c                 2    t        j                  |d         S rU   )r   r#  r   s     r   arccsczTransformToSymPyExpr.arccsc[  r-  r   c                 2    t        j                  |d         S rU   )r   r&  r   s     r   arcseczTransformToSymPyExpr.arcsec^  r-  r   c                 2    t        j                  |d         S rU   )r   r)  r   s     r   arccotzTransformToSymPyExpr.arccota  r-  r   c                 2    t        j                  |d         S rU   )r   sinhr   s     r   r9  zTransformToSymPyExpr.sinhd  r-  r   c                 2    t        j                  |d         S rU   )r   coshr   s     r   r;  zTransformToSymPyExpr.coshg  r-  r   c                 2    t        j                  |d         S rU   )r   tanhr   s     r   r=  zTransformToSymPyExpr.tanhj  r-  r   c                 2    t        j                  |d         S rU   )r   asinhr   s     r   r?  zTransformToSymPyExpr.asinhm      {{6!9%%r   c                 2    t        j                  |d         S rU   )r   acoshr   s     r   rB  zTransformToSymPyExpr.acoshp  r@  r   c                 2    t        j                  |d         S rU   )r   atanhr   s     r   rD  zTransformToSymPyExpr.atanhs  r@  r   c                 2    t        j                  |d         S rU   )r   Absr   s     r   abszTransformToSymPyExpr.absv  r  r   c                 2    t        j                  |d         S rU   )r   floorr   s     r   rI  zTransformToSymPyExpr.floory  r@  r   c                 2    t        j                  |d         S rU   )r   ceilingr   s     r   ceilzTransformToSymPyExpr.ceil|  s    }}VAY''r   c                 2    t        j                  |d         S rQ   )r   	factorialr   s     r   rN  zTransformToSymPyExpr.factorial      vay))r   c                 2    t        j                  |d         S rU   )r   	conjugater   s     r   rQ  zTransformToSymPyExpr.conjugate  rO  r   c                     t        |      dk(  rt        j                  |d         S t        |      dk(  rt        j                  |d   |d         S y )Nr;   r$   rp   )rD   r   sqrtrootr   s     r   square_rootz TransformToSymPyExpr.square_root  sK    v;!::fQi(([A::fQi33 r   c                 2    t        j                  |d         S rU   )r   expr   s     r   exponentialz TransformToSymPyExpr.exponential  r  r   c                 B   |d   j                   dk(  rt        j                  |d   d      S |d   j                   dk(  rt        j                  |d         S |d   j                   dk(  r8d|v rt        j                  |d   |d	         S t        j                  |d         S y )
Nr   FUNC_LGr$   
   FUNC_LNFUNC_LOGr+   rp   r;   )rI   r   logr   s     r   r^  zTransformToSymPyExpr.log  s    !9>>Y& 99VAY++AY^^y(99VAY''AY^^z)f}yyF1I66 yy++ *r   sc                 :    h d}t        fd|D        d       }|S )N>   \text{d}
\mathrm{d}r   c              3   ,   K   | ]  }|v s|  y wr   r   ).0symbolr_  s     r   	<genexpr>zDTransformToSymPyExpr._extract_differential_symbol.<locals>.<genexpr>  s     #]vQW[\Q\F#]s   	)next)r   r_  differential_symbolsr   s    `  r   r   z1TransformToSymPyExpr._extract_differential_symbol  s$    @"#]9M#]_cd""r   c                     d }d }|d   j                   }t        j                  |D cg c]-  } ||      r#|j                   D cg c]  } ||      s| c}/ c}}      S c c}w c c}}w )Nc                 D    t        | t              xr | j                  dk(  S )N
matrix_row)r   r   datar   s    r   is_matrix_rowz2TransformToSymPyExpr.matrix.<locals>.is_matrix_row  s    q$'BAFFl,BCr   c                 F    t        | t               xs | j                  dk7  S )NMATRIX_COL_DELIMr   )ys    r   is_not_col_delimz5TransformToSymPyExpr.matrix.<locals>.is_not_col_delim  s!    "1e,,L:L0LMr   r$   )childrenr   Matrix)r   r   rm  rq  matrix_bodyrz   rp  s          r   matrixzTransformToSymPyExpr.matrix  sq    	D	N Qi((||&1G!"]15E *+KA7G7JaK G H 	HK Gs   A)
A$A$A)
$A)
c                     t        |      dk(  r2| j                  |d         st        d      |d   j                         S t        |      dk(  r| j	                  |      j                         S y )Nr;   r$   z&Cannot take determinant of non-matrix.rp   )rD   rq   r   detru  r   s     r   determinantz TransformToSymPyExpr.determinant  se    v;!,,VAY7'(PQQ!9==?"v;!;;v&**,, r   c                 p    | j                  |d         st        d      t        j                  |d         S )Nr$   z Cannot take trace of non-matrix.)rq   r   r   Tracer   s     r   tracezTransformToSymPyExpr.trace  s3    ((3#$FGG{{6!9%%r   c                     | j                  |d         st        d      |d   j                         j                         S )Nr$   z#Cannot take adjugate of non-matrix.)rq   r   r   adjugater   s     r   r}  zTransformToSymPyExpr.adjugate  s<    ((3#$IJJ ay~~((**r   c                 f    t        |d      r|j                  S t        |t        j                        S )N	is_Matrix)hasattrr  r   r   rs  )r   objs     r   rq   z)TransformToSymPyExpr._obj_is_sympy_Matrix  s'    3$== #u||,,r   c                    | j                  |      rt        d      | j                  |      r*t        j                  |t        j                  |d            S t        j
                  |t        j                  |d            S )NzCannot divide by matrices like this since it is not clear if left or right multiplication by the inverse is intended. Try explicitly multiplying by the inverse instead.r.   )rq   r   r   ry   r   r|   )r   r   r   s      r   r   z%TransformToSymPyExpr._handle_division  sm    $$[1# %J K K
 $$Y/<<	599["+EFFyyEIIk2$>??r   N)br   r   r   __doc__r   r'   SYMBOLrK   rL   rN   DIGITr    r)   r4   r9   r<   r@   rE   rO   rR   rV   rX   rZ   r^   rb   re   rh   rk   rn   rw   r&   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r
  r  r  r  r  r  r  r  r!  r$  r'  r*  r,  r/  r1  r3  r5  r7  r9  r;  r=  r?  rB  rD  rG  rI  rL  rN  rQ  rU  rX  r^  strr   ru  rx  r{  r}  rq   r   r   r   r   r   r      s   . \\FJJ&&E+9A>
A79......
%&"!;3 :$x
%4
A4ADF(J%DN!8F/3# 6O
71 5%%<$$$$$$>>>>>>%%%%%%%%%&&&$&(**4$,"#c #	H-&+-
@r   r   )r%   r   sympy.externalr   sympy.parsing.latex.errorsr   r   r   r   r   r   r   r   r   <module>r     sR    	  ( 8V-- 
  
@@; @@r   