ó
    ‰*£h¥  ã                   óŽ  • S SK Jr  S SKrS SKJrJr  S SKJrJrJ	r	  S SK
Jr  S SKJr  S SKJr  S SKJr  S S	KJrJrJrJrJrJrJrJr  S S
KJr  S SKJrJr  S SK J!r"  S SK#J$r$  S SK%J&r&   " S S\\5      r'\RP                  " \\'4\'5        S r)S r*S r+S r,\" S 5      \\\" \*\)\+5      \,\" \5      4r-\" \" S \" \-6 5      5      r.g)é    )ÚreduceN)ÚBasicÚsympify)ÚaddÚAddÚ_could_extract_minus_sign)Údefault_sort_key)Úadjoint)Ú
MatrixBase)Ú	transpose)Úrm_idÚunpackÚflattenÚsortÚ	conditionÚexhaustÚdo_oneÚglom)Ú
MatrixExpr)Ú
ZeroMatrixÚGenericZeroMatrix)Úvalidate_matadd_integer)Úsift)Úsympy_deprecation_warningc                   óš   ^ • \ rS rSrSrSr\" 5       rSSSS.S jr\	S 5       r
\S	 5       rS
 rU 4S jrS rS rS rS rS rS rSrU =r$ )ÚMatAddé   a  A Sum of Matrix Expressions

MatAdd inherits from and operates like SymPy Add

Examples
========

>>> from sympy import MatAdd, MatrixSymbol
>>> A = MatrixSymbol('A', 5, 5)
>>> B = MatrixSymbol('B', 5, 5)
>>> C = MatrixSymbol('C', 5, 5)
>>> MatAdd(A, B, C)
A + B + C
TFN)ÚevaluateÚcheckÚ_sympifyc                óx  ^ • U(       d  T R                   $ [        [        U 4S jU5      5      nU(       a  [        [        [        U5      5      n[        S U 5       5      (       d  [        S5      e[        R                  " T /UQ76 nUb  [        SSSS9  USLa  [        U6   U(       a  T R                  U5      nU$ )	Nc                 ó"   >• TR                   U :g  $ ©N)Úidentity)ÚiÚclss    €Ú^/home/mande/repo/quber/.venv/lib/python3.13/site-packages/sympy/matrices/expressions/matadd.pyÚ<lambda>Ú MatAdd.__new__.<locals>.<lambda>,   s   ø€  S§\¡\°QÒ%6ó    c              3   óB   #   • U  H  n[        U[        5      v •  M     g 7fr#   )Ú
isinstancer   )Ú.0Úargs     r'   Ú	<genexpr>Ú!MatAdd.__new__.<locals>.<genexpr>0   s   é € Ð?º$°3”:˜c¤:×.Ð.º$ùs   ‚z Mix of Matrix and Scalar symbolszaPassing check to MatAdd is deprecated and the check argument will be removed in a future version.z1.11z,remove-check-argument-from-matrix-operations)Údeprecated_since_versionÚactive_deprecations_targetF)r$   ÚlistÚfilterÚmapr   ÚallÚ	TypeErrorr   Ú__new__r   ÚvalidateÚ	_evaluate)r&   r   r   r    ÚargsÚobjs   `     r'   r8   ÚMatAdd.__new__&   s§   ø€ ÞØ—<‘<Ðô ”FÔ6¸Ó=Ó>ˆÞÜœœG TÓ*Ó+ˆDäÑ?¹$Ó?×?Ñ?ÜÐ>Ó?Ð?ä�mŠm˜CÐ' $Ò'ˆàÑÜ%ØsØ)/Ø+Yò[ð
 ˜ÒÜ�d‰OæØ—-‘- Ó$ˆCàˆ
r*   c                 ó   • [        U5      $ r#   )Úcanonicalize)r&   Úexprs     r'   r:   ÚMatAdd._evaluateC   s   € ä˜DÓ!Ð!r*   c                 ó4   • U R                   S   R                  $ ©Nr   )r;   Úshape©Úselfs    r'   rD   ÚMatAdd.shapeG   s   € à�y‰y˜‰|×!Ñ!Ð!r*   c                 ó   • [        U 5      $ r#   )r   rE   s    r'   Úcould_extract_minus_signÚMatAdd.could_extract_minus_signK   s   € Ü(¨Ó.Ð.r*   c                 óN   >• [         [        U ]
  " S0 UD6nU R                  U5      $ )N© )Úsuperr   Úexpandr:   )rF   ÚkwargsÚexpandedÚ	__class__s      €r'   rN   ÚMatAdd.expandN   s&   ø€ Üœ Ò-Ñ7°Ñ7ˆØ�~‰~˜hÓ'Ð'r*   c           
      ór   • [        U R                   Vs/ s H  oDR                  " X40 UD6PM     sn6 $ s  snf r#   )r   r;   Ú_entry)rF   r%   ÚjrO   r.   s        r'   rT   ÚMatAdd._entryR   s/   € Ü¸4¿9º9ÓEº9°C—Z’Z Ñ/¨Ô/¹9ÑEÐFÐFùÒEs   ”4c                 ó€   • [        U R                   Vs/ s H  n[        U5      PM     sn6 R                  5       $ s  snf r#   )r   r;   r   Údoit©rF   r.   s     r'   Ú_eval_transposeÚMatAdd._eval_transposeU   s0   € Ü°$·)²)Ó<²)¨3œ	 #ž±)Ñ<Ð=×BÑBÓDÐDùÒ<ó   ”;c                 ó€   • [        U R                   Vs/ s H  n[        U5      PM     sn6 R                  5       $ s  snf r#   )r   r;   r
   rX   rY   s     r'   Ú_eval_adjointÚMatAdd._eval_adjointX   s0   € Ü°·	²	Ó:²	¨œ ž±	Ñ:Ð;×@Ñ@ÓBÐBùÒ:r\   c                 ó„   • SSK J n  [        U R                   Vs/ s H
  o!" U5      PM     sn6 R                  5       $ s  snf )Né   )Útrace)rb   r   r;   rX   )rF   rb   r.   s      r'   Ú_eval_traceÚMatAdd._eval_trace[   s3   € Ý Ü¨4¯9ª9Ó5ª9 C�U˜3–Z©9Ñ5Ð6×;Ñ;Ó=Ð=ùÒ5s   š=c                 óÐ   • UR                  SS5      nU(       a,  U R                   Vs/ s H  o3R                  " S0 UD6PM     nnOU R                  n[        [	        U6 5      $ s  snf )NÚdeepTrL   )Úgetr;   rX   r?   r   )rF   Úhintsrf   r.   r;   s        r'   rX   ÚMatAdd.doit_   sV   € Ø�y‰y˜ Ó&ˆÞØ15·²Ó;²¨#—H’HÑ%˜uÔ%±ˆDÐ;ˆDà—9‘9ˆDÜœF D˜MÓ*Ð*ùò <s   ¨A#c                 ó¦   • U R                    Vs/ s H  o"R                  U5      PM     nnU VVs/ s H  oD  H  oUPM     M     snn$ s  snf s  snnf r#   )r;   Ú_eval_derivative_matrix_lines)rF   Úxr.   Ú	add_linesr%   rU   s         r'   rk   Ú$MatAdd._eval_derivative_matrix_linesg   sI   € ØEIÇYÂYÓOÂY¸c×6Ñ6°qÖ9ÁYˆ	ÐOÙ$Ô0š9�a«a¨’©a‘™9Ò0Ð0ùò PùÛ0s
   �A°ArL   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__Ú	is_MatAddr   r$   r8   Úclassmethodr:   ÚpropertyrD   rI   rN   rT   rZ   r^   rc   rX   rk   Ú__static_attributes__Ú__classcell__)rQ   s   @r'   r   r      s{   ø† ñð €Iá Ó"€Hà%*°$Àõ ð: ñ"ó ð"ð ñ"ó ð"ò/õ(òGòEòCò>ò+÷1ð 1r*   r   c                 ó(   • U R                  5       S   $ rC   )Úas_coeff_mmul©r.   s    r'   r(   r(   n   s   € ˜×)Ñ)Ó+¨AÒ.r*   c                 ó:   • [        U R                  5       S   5      $ ©Nra   )r   rz   r{   s    r'   r(   r(   o   s   € œ˜s×0Ñ0Ó2°1Ñ5Ô6r*   c                 ó   • U S:X  a  U$ X-  $ r}   rL   )ÚcntÚmats     r'   Úcombiner�   p   s   € Ø
ˆaƒxØˆ
à‰yÐr*   c                 ó¬   • [        U R                  S 5      n[        US   5      S:”  a*  [        US   [	        [
        R                  US   5      /-   6 $ U $ )aª  Merge explicit MatrixBase arguments

Examples
========

>>> from sympy import MatrixSymbol, eye, Matrix, MatAdd, pprint
>>> from sympy.matrices.expressions.matadd import merge_explicit
>>> A = MatrixSymbol('A', 2, 2)
>>> B = eye(2)
>>> C = Matrix([[1, 2], [3, 4]])
>>> X = MatAdd(A, B, C)
>>> pprint(X)
    [1  0]   [1  2]
A + [    ] + [    ]
    [0  1]   [3  4]
>>> pprint(merge_explicit(X))
    [2  2]
A + [    ]
    [3  5]
c                 ó"   • [        U [        5      $ r#   )r,   r   r{   s    r'   r(   Ú merge_explicit.<locals>.<lambda>Œ   s   € ¬:°c¼:Ô+Fr*   Tra   F)r   r;   Úlenr   r   Úoperatorr   )ÚmataddÚgroupss     r'   Úmerge_explicitr‰   w   sQ   € ô* �&—+‘+ÑFÓG€FÜ
ˆ6�$‰<Ó˜1ÓÜ˜˜u™¬´·±¸fÀT¹lÓ)KÐ(LÑLÐNÐNàˆr*   c                 ó:   • U S:H  =(       d    [        U [        5      $ rC   )r,   r   ©rl   s    r'   r(   r(   “   s   € ˜˜a™×<¤:¨a´Ó#<Ð<r*   c                 ó"   • [        U [        5      $ r#   )r,   r   r‹   s    r'   r(   r(   š   s   € ¬:°a¼Ô+@r*   )/Ú	functoolsr   r†   Ú
sympy.corer   r   Úsympy.core.addr   r   r   Úsympy.core.sortingr	   Úsympy.functionsr
   Úsympy.matrices.matrixbaser   Ú$sympy.matrices.expressions.transposer   Úsympy.strategiesr   r   r   r   r   r   r   r   Ú"sympy.matrices.expressions.matexprr   Ú"sympy.matrices.expressions.specialr   r   Ú!sympy.matrices.expressions._shaper   r9   Úsympy.utilities.iterablesr   Úsympy.utilities.exceptionsr   r   Úregister_handlerclassÚ	factor_ofÚ	matrix_ofr�   r‰   Úrulesr?   rL   r*   r'   Ú<module>rž      sÈ   ðÝ Û ç %ß >Ñ >Ý /Ý #Ý 0Ý :÷÷ ó å 9ß LÝ QÝ *Ý @ôV1ˆZ˜ô V1ðp × Ò ˜3 ˜-¨Ô 0ñ /€	Ù6€	òòñ8 
Ñ<Ó	=Ø	Ø	Ù	ˆi˜ GÓ	,Ø	Ù	ÐÓ	ð	!€ñ ‘yÑ!@Ù!'¨ ó1ó 2�r*   