K iddlmZddlZddlmZmZddlmZmZm Z ddl m Z ddl m Z ddlmZddlmZdd lmZmZmZmZmZmZmZmZdd lmZdd lmZmZdd l m!Z"dd l#m$Z$ddl%m&Z&GddeeZ'ejPee'fe'dZ)dZ*dZ+dZ,edeeee*e)e+e,ee fZ-eedee-Z.y))reduceN)Basicsympify)addAdd_could_extract_minus_sign)default_sort_key)adjoint) MatrixBase) transpose)rm_idunpackflattensort conditionexhaustdo_oneglom) MatrixExpr) ZeroMatrixGenericZeroMatrix)validate_matadd_integer)sift)sympy_deprecation_warningceZdZdZdZeZdddddZedZ e dZ d Z fd Z d Zd Zd ZdZdZdZxZS)MatAdda3A 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)evaluatecheck_sympifycN|s jSttfd|}|rttt|}t d|Ds t dtjg|}|tddd|durt||rj|}|S) Nc"j|k7SN)identity)iclss g/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/matrices/expressions/matadd.pyz MatAdd.__new__..,sS\\Q%6c3<K|]}t|tywr") isinstancer).0args r& z!MatAdd.__new__..0s?3:c:.?sz Mix of Matrix and Scalar symbolszaPassing check to MatAdd is deprecated and the check argument will be removed in a future version.z1.11z,remove-check-argument-from-matrix-operations)deprecated_since_versionactive_deprecations_targetF) r#listfiltermaprall TypeErrorr__new__rvalidate _evaluate)r%rrrargsobjs` r&r5zMatAdd.__new__&s<< F6=> GT*+D?$??>? ?mmC'$'   %s)/+Y [   dO --$C r(ct|Sr") canonicalize)r%exprs r&r7zMatAdd._evaluateCs D!!r(c4|jdjSNr)r8shapeselfs r&r?z MatAdd.shapeGsyy|!!!r(ct|Sr")rr@s r&could_extract_minus_signzMatAdd.could_extract_minus_signKs (..r(c Ltt| di|}|j|S)N)superrexpandr7)rAkwargsexpanded __class__s r&rGz MatAdd.expandNs&-77~~h''r(c pt|jDcgc]}|j||fi|c}Scc}wr")rr8_entry)rAr$jrHr,s r&rLz MatAdd._entryRs1499ECZSZZ1//EFFEs3czt|jDcgc] }t|c}jScc}wr")rr8r doitrAr,s r&_eval_transposezMatAdd._eval_transposeUs,$))<3 #<=BBDD<8czt|jDcgc] }t|c}jScc}wr")rr8r rOrPs r& _eval_adjointzMatAdd._eval_adjointXs, : :;@@BB:rRcddlm}t|jDcgc] }|| c}jScc}w)N)trace)rWrr8rO)rArWr,s r& _eval_tracezMatAdd._eval_trace[s/ 4995CU3Z56;;==5s;c |jdd}|r*|jDcgc]}|jdi|}}n |j}tt |Scc}w)NdeepTrE)getr8rOr;r)rAhintsrZr,r8s r&rOz MatAdd.doit_sWyy& 15;#HCHH%u%;D;99DFDM**+1r(rc(|jdSr>) as_coeff_mmulr,s r&r'r'ns))+A.r(c:t|jdSNrV)rrjrks r&r'r'oss002156r(c|dk(r|S||zSrmrE)cntmats r&combinerqps ax Syr(ct|jd}t|ddkDr*t|dt t j |dgzS|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|tSr")r*r rks r&r'z merge_explicit..s :c:+Fr(TrVF)rr8lenrroperatorr)mataddgroupss r&merge_explicitrxwsQ*&++F GF 6$<1u  fTl)K(LLNN r(c0|dk(xst|tSr>)r*rr_s r&r'r'sa<:a#<r(c"t|tSr")r*rrzs r&r'r's :a+@r()/ functoolsrru sympy.corerrsympy.core.addrrrsympy.core.sortingr sympy.functionsr sympy.matrices.matrixbaser $sympy.matrices.expressions.transposer sympy.strategiesr rrrrrrr"sympy.matrices.expressions.matexprr"sympy.matrices.expressions.specialrr!sympy.matrices.expressions._shaperr6sympy.utilities.iterablesrsympy.utilities.exceptionsrrregister_handlerclass factor_of matrix_ofrqrxrulesr;rEr(r&rs%>>/#0:9LQ*@V1ZV1p3-0 / 6 8 < =   iG ,     !y!@!'12 r(