K i1W \dZddlmZddlmZmZddlmZddlm Z ddl m Z m Z m Z mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZddlmZddlm Z dd l!m"Z"dd l#m$Z$dd l%m&Z&dd l'm(Z(d dl)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6dZ7e*jpedZ9e+jpedZ9e+jpedZ9e+jpedZ9e+jpedZ9e+jteedZ9e+jteedZ9e+jpedZ9e+jpedZ9e,jpedZ9e,jpedZ9e,jpedZ9e,jpedZ9e,jteedZ9e,jpedZ9e,jpedZ9e,jped Z9e,jped!Z9e,jpe d"Z9e,jped#Z9e,jpe d$Z9e,jpe d%Z9e-jped&Z9e-jped'Z9e-jped(Z9e-jped)Z9e-jped*Z9e-jped+Z9e-jteed,Z9e-jped-Z9e-jpe d.Z9e.jped/Z9e.jped0Z9e.jped1Z9e.jteed2Z9e.jped3Z9e.jte"ed4Z9e.jped5Z9e.jpe d6Z9e/jped7Z9e/jped8Z9e/jped9Z9e/jped:Z9e/jped;Z9e/jteed<Z9e/jped=Z9e0jped>Z9e0jped?Z9e0jped@Z9e0jpedAZ9e0jpedBZ9e0jpedCZ9e0jpedDZ9e0jteedEZ9e0jpedFZ9e1jpedGZ9e1jpedHZ9e1jpedIZ9e1jpedJZ9e1jteedKZ9e1jpedLZ9e1jpedMZ9e1jpedNZ9e1jpedOZ9e1jpe dPZ9e2jpedQZ9e2jpedRZ9e2jpedSZ9e2jpedTZ9e2jteedUZ9e2jpedVZ9e2jpedWZ9e2jpedXZ9e2jpedYZ9e2jpe dZZ9d[Z;e3jped\Z9e3jped]Z9e3jped^Z9e3jped_Z9e3jped`Z9e3jteedaZ9e3jpedbZ9e3jteeeedcZ9e3jpe ddZ9deZe4jte eeeedhZ9e4jpediZ9e4jteeedjZ9e4jpedkZ9e4jpedlZ9e4jpe dmZ9e5jte e eeeednZ9e5jpedoZ9e5jpedpZ9e5jpedqZ9e5jpe drZ9e6jte e eeeeedsZ9e6jpedtZ9e6jpeduZ9e6jpedvZ9e6jpe dwZ9e6jpe"dxZ9yy)zzj This module contains query handlers responsible for Matrices queries: Square, Symmetric, Invertible etc. ) conjuncts)Qask)test_closed_group) MatrixBase) BlockMatrixBlockDiagMatrix Determinant DiagMatrixDiagonalMatrixHadamardProductIdentityInverseMatAddMatMulMatPow MatrixExpr MatrixSlice MatrixSymbol OneMatrixTrace Transpose ZeroMatrix) reblock_2x2) Factorization)DFT) fuzzy_and)sift)Basic) SquarePredicateSymmetricPredicateInvertiblePredicateOrthogonalPredicateUnitaryPredicateFullRankPredicatePositiveDefinitePredicateUpperTriangularPredicateLowerTriangularPredicateDiagonalPredicateIntegerElementsPredicateRealElementsPredicateComplexElementsPredicatec"||jvryyNT) predicates predicateexpr assumptionss i/mnt/ssd/data/python-lab/Trading/venv/lib/python3.12/site-packages/sympy/assumptions/handlers/matrices.py_Factorizationr6sDOO#$c@|jd|jdk(SNrshaper3r4s r5_r>#s ::a=DJJqM ))r7c |j\}}tfd|jDrytt j |ryt |jdk\ru|jd|jdjk(rKt |jdk(rytt jt|jddSyy)Nc3\K|]#}ttj|%ywNrr symmetric.0argr4s r5 z_..-s! C#3q{{3 - C),Tr rr:) as_coeff_mmulallargsrrdiagonallenTrCrr3r4factormmuls ` r5r>r>*s%%'LFD C CC 1::d [) 499~tyy|tyy}> tyy>Q 1;;vtyy278+FF ?r7c0|j\}}ttj||}|syttj||}|s$|dk(r>ttj ||rttj ||SyNF)rLrrintegernegative invertiblerCr3r4baseexpint_exp non_negatives r5r>r>8sx ID#!))C.+.G  3'5L - T 2K@1;;t$k22 r7c@tfd|jDS)Nc3\K|]#}ttj|%ywrArBrDs r5rGz_..Gs!Gcs1;;s#[1GrHrKrLr=s `r5r>r>Es GTYYG GGr7c|jsyttj||rytj|t |vryyNFT) is_squarerrrMrCrr=s r5r>r>IsB >> 1::d [){{4Ik223r7c@ttj||SrA)rrsquarer=s r5r>r>Ts qxx~{ ++r7cTttj|j|SrA)rrrCrFr=s r5r>r>Xs q{{488$k 22r7cttj||ry|jsyttj|j |Sr/)rrrMon_diagrCparentr=s r5r>r>\s> 1::d [) <<1;;t{{+[99r7cyr/r=s r5r>r>g r7c|j\}}tfd|jDrytfd|jDryy)Nc3\K|]#}ttj|%ywrArrrWrDs r5rGz_..qs! D33q||C + . DrHTc3`K|]%}ttj|du'ywFNrnrDs r5rGz_..s. " q||C + .% 7 "+.FrJrKrLanyrPs ` r5r>r>nsK%%'LFD D$)) DD  "yy """r7c|j\}}ttj||}|sy|jdk(rttj ||SyrT)rLrrrU is_negativerWr3r4rYrZr[s r5r>r>wsP ID#!))C.+.G  %1<<%{33 r7cyrArjr=s r5r>r>rkr7c`|jsytj|t|vryyra)rbrrWrr=s r5r>r>s* >>||DY{334r7cyr/rjr=s r5r>r>rkr7cyrTrjr=s r5r>r> r7cN|jddk(xr|jddk(Sr9r;r=s r5r>r>' ::a=A  4$**Q-1"44r7cTttj|j|SrA)rrrWrFr=s r5r>r> q||DHH%{ 33r7cn|jsyttj|j|SrA)rgrrrWrhr=s r5r>r>& <<1<< ,k::r7cV|jsy|j|jk(SrT)rbrankrowsr=s r5r>r>s! >> 99;$)) ##r7c|jsyyrT)rbr=s r5r>r>s >> r7c|jsy|jdk(r,ttj|j d|St |}|jdk(r|j j\\}}\}}ttj||dk(r6ttj|||jz|zz |}||Sttj||dk(r6ttj|||jz|zz |}||Sttj||dk(r6ttj|||jz|zz |}||Sttj||dk(r6ttj|||jz|zz |}||Sy)NFr:r:rr)r r T) rb blockshaperrrWblocksrtolistI)r3r4ABCDrWs r5r>r>s >> & 1<< D 12K@@ t D & ;;--/!Q!Q q||A , 4Q\\!a!##gk/:KHJ%!! q||A , 4Q\\!a!##gk/:KHJ%!! q||A , 4Q\\!a!##gk/:KHJ%!! q||A , 4Q\\!a!##gk/:KHJ%!! r7c |j|jk7ryt|jDcgc]!}t t j ||#c}Scc}wrA) rowblocksizes colblocksizesrdiagrrrW)r3r4as r5r>r>sE T/// KAc!,,q/;7K LLKs&Ac|j\}}tfd|jDr|dk(rytfd|jDryy)Nc3\K|]#}ttj|%ywrA)rr orthogonalrDs r5rGz_..s! ECC S!; / ErHr:Tc3`K|]%}ttj|du'ywrprnrDs r5rGz_..rqrrFrsrPs ` r5r>r>sR%%'LFD E499 EE aK  "yy """r7c|j\}}ttj||}|rttj||SyrA)rLrrrUrrws r5r>r>sA ID#!))C.+.G1<<%{33 r7ct|jdk(r.ttj|jd|ryyy)Nr:rT)rNrLrrrr=s r5r>r>s: DII!  TYYq\*K 8 9 r7c|jr!ttj||durytj|t |vryyra)rbrrrWrrr=s r5r>r>sB NN T*K8EA||DY{334r7cyr/rjr=s r5r>r>rkr7cyrTrjr=s r5r>r>r|r7cTttj|j|SrA)rrrrFr=s r5r>r>rr7cn|jsyttj|j|SrA)rgrrrrhr=s r5r>r>rr7c8ttj||SrA)r6rrr=s r5r>r>s !,,k ::r7c|j\}}tfd|jDrt|dk(ryt fd|jDryy)Nc3\K|]#}ttj|%ywrA)rrunitaryrDs r5rGz_..s BC # , BrHr:Tc3`K|]%}ttj|du'ywrprnrDs r5rGz_..rqrrF)rJrKrLabsrtrPs ` r5r>r>sW%%'LFD B BB K1   "yy """r7c|j\}}ttj||}|rttj||SyrA)rLrrrUrrws r5r>r>s@ ID#!))C.+.G199T?K00 r7c|jr!ttj||durytj|t |vryyra)rbrrrWrrr=s r5r>r>"sA NN T*K8EAyy)K001r7cTttj|j|SrA)rrrrFr=s r5r>r>*s qyy"K 00r7cn|jsyttj|j|SrA)rgrrrrhr=s r5r>r>.s& <<199T[[);77r7cyr/rjr=s r5r>r>5rkr7cyrTrjr=s r5r>r>9r|r7c8ttj||SrA)r6rrr=s r5r>r>=s !))T; 77r7cDtfd|jDryy)Nc3\K|]#}ttj|%ywrA)rrfullrankrDs r5rGz_..F B3qzz# , BrHTr_r=s `r5r>r>D B BBCr7c|j\}}ttj||}|r?ttj||rttj ||SyrA)rLrrrUrVrrws r5r>r>IsU ID#!))C.+.G3 3'51::d#[11 r7cyr/rjr=s r5r>r>Rrkr7cyrTrjr=s r5r>r>Vr|r7cN|jddk(xr|jddk(Sr9r;r=s r5r>r>Zr~r7cTttj|j|SrA)rrrrFr=s r5r>r>^ qzz$((#[ 11r7cXttj|j|ryyr/)rrrrhr=s r5r>r>bs! 1<< $k23r7c |j\}}tfd|jDr|dkDryt|jdk\r|jd|jdjk(r_t t j|jdr2t t jt|jddSyyy)Nc3\K|]#}ttj|%ywrArrpositive_definiterDs r5rGz_..ms+ " ##C(+ 6 "rHrTr rIr:) rJrKrLrNrOrrrrrrPs ` r5r>r>js%%'LFD  "yy " "&,qj DII! !  " /AJJtyy|,k:1&& DIIaO $&'24 4;0 r7c^ttj|jd|ryy)NrT)rrrrLr=s r5r>r>vs) 1  tyy| ,k:;r7cDtfd|jDryy)Nc3\K|]#}ttj|%ywrArrDs r5rGz_..~s+ " q""3' 5 "rHTr_r=s `r5r>r>|s$  "yy """r7c`|jsytj|t|vryyra)rbrrrr=s r5r>r>s, >>4 Ik$::;r7cyr/rjr=s r5r>r>rkr7cyrTrjr=s r5r>r>r|r7cN|jddk(xr|jddk(Sr9r;r=s r5r>r>r~r7cTttj|j|SrA)rrrrFr=s r5r>r>s q""488,k ::r7cn|jsyttj|j|SrA)rgrrrrhr=s r5r>r>s( <<1&&t{{3[AAr7cV|j\}}tfd|Dryy)Nc3\K|]#}ttj|%ywrArrupper_triangularrEmr4s r5rGz_..# Eq3q!!!$k 2 ErHTas_coeff_matricesrKr3r4rQmatricess ` r5r>r>---/FH EH EEFr7cDtfd|jDryy)Nc3\K|]#}ttj|%ywrArrDs r5rGz_..# J3q!!#& 4 JrHTr_r=s `r5r>r> J JJKr7c0|j\}}ttj||}|syttj||}|s$|dk(r>ttj ||rttj ||SyrT)rLrrrUrVrWrrXs r5r>r>z ID#!))C.+.G  3'5L - T 2K@1%%d+[99 r7cFtj|t|vryyr/)rrrr=s r5r>r>"$9[#99:r7cyr/rjr=s r5r>r>rkr7cN|jddk(xr|jddk(Sr9r;r=s r5r>r>r~r7cTttj|j|SrArrlower_triangularrFr=s r5r>r> q!!$((+[ 99r7cTttj|j|SrArrrrFr=s r5r>r>rr7cn|jsyttj|j|SrA)rgrrrrhr=s r5r>r>( <<1%%dkk2K@@r7c8ttj||SrA)r6rrr=s r5r>r> !,,dK @@r7cV|j\}}tfd|Dryy)Nc3\K|]#}ttj|%ywrArrrrs r5rGz_..rrHTrrs ` r5r>r>rr7cDtfd|jDryy)Nc3\K|]#}ttj|%ywrArrDs r5rGz_..rrHTr_r=s `r5r>r>rr7c0|j\}}ttj||}|syttj||}|s$|dk(r>ttj ||rttj ||SyrT)rLrrrUrVrWrrXs r5r>r>rr7cFtj|t|vryyr/)rrrr=s r5r>r>rr7cyr/rjr=s r5r>r>rkr7cN|jddk(xr|jddk(Sr9r;r=s r5r>r>r~r7cTttj|j|SrArr=s r5r>r>rr7cTttj|j|SrArr=s r5r>r>rr7cn|jsyttj|j|SrA)rgrrrrhr=s r5r>r> rr7c8ttj||SrA)r6rrr=s r5r>r>rr7c|jdvS)N)rrr;)r3s r5_is_empty_or_1x1rs ::) ))r7cnt|ry|j\}}tfd|Dryy)NTc3\K|]#}ttj|%ywrArrrMrs r5rGz_.. s =q3qzz!}k * =rH)rrrKrs ` r5r>r>s7--/FH =H ==>r7c0|j\}}ttj||}|syttj||}|s$|dk(r>ttj ||rttj ||SyrT)rLrrrUrVrWrMrXs r5r>r>#sx ID#!))C.+.G  3'5L - T 2K@1::d#[11 r7cDtfd|jDryy)Nc3\K|]#}ttj|%ywrArrDs r5rGz_..2rrHTr_r=s `r5r>r>0rr7c^t|rytj|t|vryyr/)rrrMrr=s r5r>r>5s+zz$9[112r7cN|jddk(xr|jddk(Sr9r;r=s r5r>r><r~r7cTttj|j|SrA)rrrMrFr=s r5r>r>@rr7ct|ry|jsyttj|j |Sr/)rrgrrrMrhr=s r5r>r>Ds1 <<1::dkk*K88r7cyr/rjr=s r5r>r>Mrkr7c8ttj||SrA)r6rrMr=s r5r>r>Qs !**dK 88r7cDtfd|jDS)z Block Matrix elements. c3BK|]}t|ywrA)r)rEbr4r2s r5rGzBM_elements..ZsC!s9Q<-Cs)rKrr1s` `r5 BM_elementsrXs Ct{{C CCr7c:t||j|S)z Matrix Slice elements. )rrhr1s r5 MS_elementsr\s y%{ 33r7ct|jd}|d|d}}ttt |||tt |||gS)Nc"t|tSrA) isinstancer)xs r5z!MatMul_elements..as *Q ";r7FT)rrLrrr)matrix_predicatescalar_predicater3r4dfactorsrs r5MatMul_elementsr`s\ TYY;r>h T;0B0B CCr7c|j\}}ttj||}|sy|jdk(rttj ||SyrT)rLrrrUrvrrws r5r>r>msR ID#!))C.+.G  %1%%d+[99 r7cyr/rjr=s r5r>r>xrkr7cVttjtj||SrA)rrrrUr=s r5r>r>| 1--qyy$ LLr7c8ttj||SrA)rrrr=s r5r>r> q))4 ==r7c8ttj||SrA)rrrr=s r5r>r>rr7c8t||tjSrA)rr real_elementsr=s r5r>r>s T; @@r7c0|j\}}ttj||}|syttj||}|s$|dk(r>ttj ||rttj ||SyrT)rLrrrUrVrWrrXs r5r>r>sx ID#!))C.+.G  3'5L - T 2K@1??4(+66 r7cVttjtj||SrA)rrrrealr=s r5r>r>s 1??AFFD+ FFr7c8ttj||SrA)rrrr=s r5r>r> qk ::r7c8ttj||SrA)rrrr=s r5r>r>r#r7c8t||tjSrA)rrcomplex_elementsr=s r5r>r>rr7c0|j\}}ttj||}|syttj||}|s$|dk(r>ttj ||rttj ||SyrT)rLrrrUrVrWr&rXs r5r>r>rr7cVttjtj||SrA)rrr&complexr=s r5r>r>rr7c8ttj||SrA)rrr&r=s r5r>r>rr7c8ttj||SrA)rrr&r=s r5r>r>rr7cyr/rjr=s r5r>r>rkr7N)?__doc__sympy.logic.boolalgrsympy.assumptionsrrsympy.assumptions.handlersrsympy.matricesrsympy.matrices.expressionsrr r r r r rrrrrrrrrrrr&sympy.matrices.expressions.blockmatrixr)sympy.matrices.expressions.factorizationsr"sympy.matrices.expressions.fourierrsympy.core.logicrsympy.utilities.iterablesr sympy.corerpredicates.matricesr!r"r#r$r%r&r'r(r)r*r+r,r-r6registerr> register_manyrrrrrjr7r5r<sB *$8%?C2&*5555*%*&* V$ G% GV$ % V$H%H\*+"!!)Z8,9,"!!'95363[):*:X&' f%&f%&f%&l+, #""8W56j)*i(5)5i(4)4k*;+; j)$*$ j)* k*+4o.M/Mf%&f%&f%& l+,h'(j)*#""7I6474k*;+; m,;-; 6"#6"#<() 3141;'8(8  X./:&'=)8*8 F#$F#$H%&J'(I&5'5!  )4252K()$##F+ 4, 4$##F+, $##F+, $##L12 $##H-.$##J/0$##I.5/5)(()<;=;$##K0B1B#""6*+ #""6*+#""6* + #""<01(''*=>#""9-5.5#""9-:.:#""7+:,:#"";/A0A #""=1A2A #""6*+ #""6*+#""6* + #""<01(''*=>#""9-5.5#""9-:.:#""7+:,:#"";/A0A #""=1A2A *F#$F# $ F#$L)* I&5'5!  )4252K(9)9!  XzRSM*9+9 D4M('' _f 9DD#""6*+('')ZHI#""6*M+M#"";/>0>#"";/>0> %$$[- E9AA ' (  'G(G  ,;-;  ,;-; ('' ]O VUI'D'D#""6* + #""6*M+M#"";/>0>#"";/>0>#""3'(r7