Ë
    7^(h¥  ã                   óŽ  — d dl mZ d dlZd dlmZmZ d dlmZmZm	Z	 d dl
mZ d dlmZ d dlmZ d dlmZ d d	lmZmZmZmZmZmZmZmZ d d
lmZ d dlmZmZ d dl m!Z" d dl#m$Z$ d dl%m&Z&  G d„ dee«      Z' ejP                  ee'fe'«       d„ Z)d„ Z*d„ Z+d„ Z, ed„ «      ee ee*e)e+«      e, ee«      fZ- e ed„  ee-Ž «      «      Z.y)é    )Ú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                   óŽ   ‡ — e Zd ZdZdZ e«       Zddddœd„Zed„ «       Z	e
d„ «       Zd	„ Zˆ fd
„Zd„ Zd„ Zd„ Zd„ Zd„ Zd„ Zˆ xZS )ÚMatAdda3  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                óN  ‡ — |s‰ j                   S t        t        ˆ fd„|«      «      }|rt        t        t        |«      «      }t        d„ |D «       «      st        d«      ‚t        j                  ‰ g|¢­Ž }|�t        ddd¬«       |durt        |Ž  |r‰ j                  |«      }|S )	Nc                 ó"   •— ‰j                   | k7  S ©N)Úidentity)ÚiÚclss    €ú_/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/sympy/matrices/expressions/matadd.pyú<lambda>z MatAdd.__new__.<locals>.<lambda>,   s   ø€  S§\¡\°QÑ%6€ ó    c              3   ó<   K  — | ]  }t        |t        «      –— Œ y ­wr"   )Ú
isinstancer   )Ú.0Úargs     r&   ú	<genexpr>z!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&   r5   zMatAdd.__new__&   s¤   ø€ ÙØ—<‘<Ðô ”FÓ6¸Ó=Ó>ˆÙÜœœG TÓ*Ó+ˆDäÑ?¸$Ô?Ô?ÜÐ>Ó?Ð?ä�m‰m˜CÐ' $Ò'ˆàÐÜ%ØsØ)/Ø+Yõ[ð
 ˜ÑÜ�d‰OáØ—-‘- Ó$ˆCàˆ
r(   c                 ó   — t        |«      S r"   )Úcanonicalize)r%   Úexprs     r&   r7   zMatAdd._evaluateC   s   € ä˜DÓ!Ð!r(   c                 ó4   — | j                   d   j                  S ©Nr   )r8   Úshape©Úselfs    r&   r?   zMatAdd.shapeG   s   € à�y‰y˜‰|×!Ñ!Ð!r(   c                 ó   — t        | «      S r"   )r   r@   s    r&   Úcould_extract_minus_signzMatAdd.could_extract_minus_signK   s   € Ü(¨Ó.Ð.r(   c                 óL   •— t        t        | �
  di |¤Ž}| j                  |«      S )N© )Úsuperr   Úexpandr7   )rA   ÚkwargsÚexpandedÚ	__class__s      €r&   rG   zMatAdd.expandN   s&   ø€ Üœ Ñ-Ñ7°Ñ7ˆØ�~‰~˜hÓ'Ð'r(   c           
      óp   — t        | j                  D �cg c]  } |j                  ||fi |¤Ž‘Œ c}Ž S c c}w r"   )r   r8   Ú_entry)rA   r$   ÚjrH   r,   s        r&   rL   zMatAdd._entryR   s1   € Ü¸4¿9¹9ÖE°C�Z�S—Z‘Z  1Ñ/¨Ó/ÒEÐFÐFùÒEs   ”3c                 óz   — t        | j                  D �cg c]  }t        |«      ‘Œ c}Ž j                  «       S c c}w r"   )r   r8   r   Údoit©rA   r,   s     r&   Ú_eval_transposezMatAdd._eval_transposeU   s,   € Ü°$·)±)Ö<¨3œ	 #�Ò<Ð=×BÑBÓDÐDùÒ<ó   ”8c                 óz   — t        | j                  D �cg c]  }t        |«      ‘Œ c}Ž j                  «       S c c}w r"   )r   r8   r
   rO   rP   s     r&   Ú_eval_adjointzMatAdd._eval_adjointX   s,   € Ü°·	±	Ö:¨œ �Ò:Ð;×@Ñ@ÓBÐBùÒ:rR   c                 ó€   — ddl m } t        | j                  D �cg c]
  } ||«      ‘Œ c}Ž j                  «       S c c}w )Né   )Útrace)rW   r   r8   rO   )rA   rW   r,   s      r&   Ú_eval_tracezMatAdd._eval_trace[   s/   € Ý Ü¨4¯9©9Ö5 C‘U˜3•ZÒ5Ð6×;Ñ;Ó=Ð=ùÒ5s   š;c                 óÂ   — |j                  dd«      }|r*| j                  D �cg c]  } |j                  di |¤Ž‘Œ }}n| j                  }t        t	        |Ž «      S c c}w )NÚdeepTrE   )Úgetr8   rO   r;   r   )rA   ÚhintsrZ   r,   r8   s        r&   rO   zMatAdd.doit_   sW   € Ø�y‰y˜ Ó&ˆÙØ15·±Ö;¨#�H�C—H‘HÑ%˜uÓ%Ð;ˆDÑ;à—9‘9ˆDÜœF D˜MÓ*Ð*ùò <s   £Ac                 óš   — | j                   D �cg c]  }|j                  |«      ‘Œ }}|D ��cg c]  }|D ]  }|‘Œ Œ c}}S c c}w c c}}w r"   )r8   Ú_eval_derivative_matrix_lines)rA   Úxr,   Ú	add_linesr$   rM   s         r&   r^   z$MatAdd._eval_derivative_matrix_linesg   sJ   € ØEIÇYÁYÖO¸c�S×6Ñ6°qÕ9ÐOˆ	ÐOØ$×0�a¨aÒ0¨’Ð0�Ó0Ð0ùò PùÛ0s
   �A®A)Ú__name__Ú
__module__Ú__qualname__Ú__doc__Ú	is_MatAddr   r#   r5   Úclassmethodr7   Úpropertyr?   rC   rG   rL   rQ   rT   rX   rO   r^   Ú__classcell__)rJ   s   @r&   r   r      sv   ø„ ñð €Iá Ó"€Hà%*°$Àô ð: ñ"ó ð"ð ñ"ó ð"ò/ô(òGòEòCò>ò+ö1r(   r   c                 ó(   — | j                  «       d   S r>   )Úas_coeff_mmul©r,   s    r&   r'   r'   n   s   € ˜×)Ñ)Ó+¨AÑ.€ r(   c                 ó:   — t        | j                  «       d   «      S ©NrV   )r   rj   rk   s    r&   r'   r'   o   s   € œ˜s×0Ñ0Ó2°1Ñ5Ó6€ r(   c                 ó   — | dk(  r|S | |z  S rm   rE   )ÚcntÚmats     r&   Úcombinerq   p   s   € Ø
ˆa‚xØˆ
à�S‰yÐr(   c                 óª   — t        | j                  d„ «      }t        |d   «      dkD  r*t        |d   t	        t
        j                  |d   «      gz   Ž S | S )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                 ó"   — t        | t        «      S r"   )r*   r   rk   s    r&   r'   z merge_explicit.<locals>.<lambda>Œ   s   € ¬:°c¼:Ó+F€ r(   TrV   F)r   r8   Úlenr   r   Úoperatorr   )ÚmataddÚgroupss     r&   Úmerge_explicitrx   w   sQ   € ô* �&—+‘+ÑFÓG€FÜ
ˆ6�$‰<Ó˜1ÒÜ˜˜u™¬´·±¸fÀT¹lÓ)KÐ(LÑLÐNÐNàˆr(   c                 ó0   — | dk(  xs t        | t        «      S r>   )r*   r   ©r_   s    r&   r'   r'   “   s   € ˜˜a™Ò<¤:¨a´Ó#<€ r(   c                 ó"   — t        | t        «      S r"   )r*   r   rz   s    r&   r'   r'   š   s   € ¬:°a¼Ó+@€ r(   )/Ú	functoolsr   ru   Ú
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   r6   Úsympy.utilities.iterablesr   Úsympy.utilities.exceptionsr   r   Úregister_handlerclassÚ	factor_ofÚ	matrix_ofrq   rx   Úrulesr;   rE   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(   