
    MZdD                        d dl mZ d dlmZ d dlmZmZ d dl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mZmZmZmZmZmZ d d
lmZmZmZmZm Z 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,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z: d dl;m<Z<m=Z=  edd      \  Z>Z?Z@ZAZB ed      ZC e,de>e?      ZD e,de?e@      ZE e,de>e>      ZF e,de>e>      ZG e,de?e>      ZH e,de>d      ZId ZJd ZKd ZLd  ZMd! ZNd" ZOd# ZPd$ ZQd% ZRd& ZSd' ZTd( ZUd) ZVd* ZWd+ ZXd, ZYd- ZZd. Z[d/ Z\d0 Z]d1 Z^d2 Z_d3 Z`d4 Zad5 Zbe=d6        Zcd7 Zdd8 Zed9 Zfd: Zgd; Zhe=d<        Zid= Zjd> Zkd? Zld@ ZmdA ZndB ZodC ZpdD ZqyE)F    )Sum)	gcd_terms)diffexpand)Eq)DummySymbolStr)KroneckerDelta)zeros)factor)SsymbolsAddMulSympifyErrorRationalFunction)sincostansqrtcbrtexp)simplify)ImmutableMatrixInverseMatAddMatMulMatPowMatrix
MatrixExprMatrixSymbolSparseMatrix	TransposeAdjoint	MatrixSet)NonSquareMatrixError)Determinantdet)MatrixElement)
ZeroMatrixIdentity)raisesXFAILz	n m l k pTintegerxABCDEw   c                      t        ddd      sJ t        ddd      sJ t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d	        t        d
       t        d        sJ t        d
d       t        t         fd       t        d
d       t        t         fd       y )Nr3      r   c                      t        ddd      S )Nr3   r;   r#        O/usr/lib/python3/dist-packages/sympy/matrices/expressions/tests/test_matexpr.py<lambda>z-test_matrix_symbol_creation.<locals>.<lambda>%       |CQ7 r@   c                      t        ddd      S )Nr3          @r;   r>   r?   r@   rA   rB   z-test_matrix_symbol_creation.<locals>.<lambda>&   s    |Ca8 r@   c                      t        ddd      S )Nr3                  @r;   r>   r?   r@   rA   rB   z-test_matrix_symbol_creation.<locals>.<lambda>'   rC   r@   c                      t        ddd      S )Nr3   r;   r=   r>   r?   r@   rA   rB   z-test_matrix_symbol_creation.<locals>.<lambda>(       |CB7 r@   c                      t        ddd      S )Nr3   r;   rE   r>   r?   r@   rA   rB   z-test_matrix_symbol_creation.<locals>.<lambda>)   s    |CC8 r@   c                      t        ddd      S )Nr3   r;   rG   r>   r?   r@   rA   rB   z-test_matrix_symbol_creation.<locals>.<lambda>*   rI   r@   nFr0   c                      t        d        S Nr3   r>   rL   s   rA   rB   z-test_matrix_symbol_creation.<locals>.<lambda>/       |CA6 r@   T)negativec                      t        d        S rN   r>   rO   s   rA   rB   z-test_matrix_symbol_creation.<locals>.<lambda>1   rP   r@   )r#   r.   
ValueErrorr   rO   s   @rA   test_matrix_symbol_creationrT   "   s    Q"""Q"""
:78
:89
:78
:78
:89
:78AQ"""U#A
:67d#A
:67r@   c                  :   t         j                  t        t        fk(  sJ t         t        z  j                  t        t
        fk(  sJ t         d   j                  dk(  sJ t         d   j                  t         k(  sJ t         d   j                  j                  dk(  sJ y )Nr   r9   r   r   r3   )	r3   shaperL   mr4   lindicessymbolnamer?   r@   rA   test_matexpr_propertiesr^   4   sz    77q!fE==QF"""T7??f$$$T7>>QT7>>#%%%r@   c                  D   t         t        z  j                  t        j                  k(  sJ t         t        z  j                  t        k(  sJ dt        z  t        z
  t        z
  t        t        j                   k(  sJ t        t        z  j                  t        t        fk(  sJ y Nr;   )	r2   r3   rX   	__class__r   r,   r4   rL   rZ   r?   r@   rA   test_matexprrb   <   so    aC;;!''!!!aC??f$$$Q37Q;*agg....aC;;1a&   r@   c                  t   t        dt        t              } t        dt        t              }t        dt        t              }| j	                  t        t              j
                  t        t        fk(  sJ | |z  j	                  ||      | |z  k(  sJ | |z  j	                  t        t              j                  sJ t        ddd      t        ddd      t        dd	d      t        d
t        d      j	                        k(  sJ t        d      }j	                  t        d      |      j                  |ddfk(  sJ d   j	                        d   k(  sJ t        t        fd       d   j	                        d   k(  sJ d   j	                        d   k(  sJ t        t        fd       t        t        fd       t        d	dgddgg      } t        d	dgddgg      }t        ddd      t        ddd      }}||z  j	                  || ||i      t        | |      k(  sJ y )Nr3   r4   r5   W   Xr;   Yr9   Zyr9   r9   c                  .     d   j                         S )Nrj   subs)rf   rg   s   rA   rB   z#test_matexpr_subs.<locals>.<lambda>[       qw||Aq1 r@   rV   r;   r9   c                  .     d   j                         S )Nr;   r;   rl   )rd   rh   s   rA   rB   z#test_matexpr_subs.<locals>.<lambda>b   rn   r@   c                  @     d   j                   t        d            S )Nrq   r;   )rm   r   )rd   s   rA   rB   z#test_matexpr_subs.<locals>.<lambda>d   s    qw||AuQx8 r@      r6   )r#   rL   rY   rZ   rm   rX   	is_squarer
   argsr.   
IndexErrorr$   r!   r   )	r3   r4   r5   ri   r6   rd   rf   rg   rh   s	        @@@@rA   test_matexpr_subsrw   C   s
   S!QAS!QAS!QA66!Q<!Q'''aC::aqs"""aC::a%%%%S!QAS!QAS!QAS!QA66!Q<1CA66#c(A##1ay000T7<<14(((
 :12T7<<14((( T7<<14(((
:12
:89q!fq!f%&AAA AQ"La$;qAaC::q!Ql#va|333r@   c                     t        dt        t              t        dt        t              } t        | z   t              sJ | z   j
                  j
                  k(  sJ t        z
  d| z  z   t              sJ t        t        fd       t        t        fd       t        t        fd       t        t        t              z   z
  t        t        t              k(  sJ t        t        d        y )Nr3   r4   r;   c                       dz   S Nr9   r?   r3   s   rA   rB   ztest_addition.<locals>.<lambda>u       a!e r@   c                      d z   S N   r?   r{   s   rA   rB   ztest_addition.<locals>.<lambda>v   r|   r@   c                      d z
  S r~   r?   r{   s   rA   rB   ztest_addition.<locals>.<lambda>w   r|   r@   c                  L    t        t        t              t        j                  z   S N)r,   rL   rY   r   Zeror?   r@   rA   rB   ztest_addition.<locals>.<lambda>z   s    jA.7 r@   )
r#   rL   rY   
isinstancer   rX   r   r.   	TypeErrorr,   )r4   r3   s    @rA   test_additionr   m   s    S!QAS!QAa!eV$$$E==AGG###a!eack6***
9m$
9m$
9m$z!Q!#z!Q'7777
978r@   c                     t        dt        t              } t        dt        t              t        dt        t              }d| z  z  j                  t        t        fk(  sJ | dz  z  t        t        t              k(  sJ d| z  j                  | j                  k(  sJ | t        t        t              z  z  t        t        t              k(  sJ |t        t              z  |j                  z  t        t              k(  sJ dz  t        j                  z  k(  sJ t        t        fd       t        dt        t              } t        dt        t              t        t              | z   z  | z   k(  sJ | dz  | z  | dz  k(  sJ | dz  | j                  dz  z  | j                  k(  sJ | dz  | j                  dz  z  | k(  sJ y )Nr3   r4   r5   r;   r   c                      d z  S r`   r?   r4   s   rA   rB   z%test_multiplication.<locals>.<lambda>   s    ! r@   re   )r#   rL   rY   rZ   rX   r,   r-   Ir   Halfr.   NotImplementedError)r3   r5   r4   s     @rA   test_multiplicationr   }   s   S!QAS!QAS!QAaCE==QF"""aCEjA&&&&aC;;!''!!!z!Q!#z!Q'7777x{?QSS HQK///Q3!&&(??
,S!QAS!QAA;!a% AE)))a46QT>>a4q=ACCa4q=Ar@   c                     t        dt        t              } t        | d      }|j                  dk(  sJ |j                  | k(  sJ | t        z  j                  t        k(  sJ | dz  t        t              k(  sJ | dz  | k(  sJ | dz  |k(  sJ | dz  t        |       k(  sJ | dz  dz  | k(  sJ | dz  dz  | dz  k(  sJ | t        j                  z  t        |       k(  sJ | t        dd      z  t        |       k(  sJ t        t        d        y )	Nr3   r;   r   r9   r=   re      c                  "    t        ddd      dz  S )Nr4   re   r;   r>   r?   r@   rA   rB   ztest_MatPow.<locals>.<lambda>   s    c1a)@!)C r@   )r#   rL   r    r   baser-   r   r   r   r   r   r   r.   r(   )r3   AAs     rA   test_MatPowr      s   S!QA	1B66Q;;77a<<qD::??a48A;a4199a42::b5GAJrEB;!qD191aff9Qhq!nQ'''
!CDr@   c                      t        d      \  t        d      } | j                  fk(  sJ t        t        fd       | j                         | k(  sJ y )Nzn,m,trf   c                  *     t        d             S )Nrf   r>   )rY   rL   ts   rA   rB   z#test_MatrixSymbol.<locals>.<lambda>   s    5l315a8 r@   )r   r#   rX   r.   r   doit)rf   rY   rL   r   s    @@@rA   test_MatrixSymbolr      sT    gGAq!S!QA77q!f
989668q==r@   c                       t        ddd       t               t        dd fd      k(  sJ t               t        dd fd      k(  sJ y )Nrf   r;   c                     | |f   S r   r?   ijrf   s     rA   rB   z'test_dense_conversion.<locals>.<lambda>   s    AadG r@   c                     | |f   S r   r?   r   s     rA   rB   z'test_dense_conversion.<locals>.<lambda>   s    !AqD' r@   )r#   r   r!   )rf   s   @rA   test_dense_conversionr      sJ    S!QA1A7K!LLLL!9q!%9::::r@   c                  P    t         t        z  j                  t         t        hk(  sJ y r   )r5   r6   free_symbolsr?   r@   rA   test_free_symbolsr      s    aC!Q'''r@   c                  `    t        t        j                  t        ddd      z  t              sJ y )Nrf   r;   )r   r   r   r#   r"   r?   r@   rA   test_zero_matmulr      s$    aff|CA66
CCCr@   c                      t        ddd      } t        t        | t        t	        t
              dz  t        t
              dz  z   gg                  t        | t        dgg            k(  sJ y Nr3   r9   r;   )r#   r   r   r   r   r2   r   r!   r{   s    rA   test_matadd_simplifyr      `    S!QAF1oA	CFAI0E/F.GHIJq&1#- ! ! !r@   c                      t        ddd      } t        t        | t        t	        t
              dz  t        t
              dz  z   gg                  t        | t        dgg            k(  sJ y r   )r#   r   r   r   r   r2   r   r!   r{   s    rA   test_matmul_simplifyr      r   r@   c                     t        dt        t              } t        dt        t              }t        dt        t              }t	        t              t        t        t              | t        | |      t        | |       t        |       t        |       t        |      t        |d      t        |d      t        |d      g}|D ]   }| |j                  |j                   k(  r J  y )Nr3   r4   rf   r;   r=   r   )r#   rL   rY   rZ   r-   r,   r   r   r%   r&   r   r    ra   ru   )r3   r4   rf   objsobjs        rA   test_invariantsr      s    S!QAS!QAS!QAQKAq)1fQlF1aLaL'!*gaj&A,q"1aLD  /mcmmSXX..../r@   c                      t        dt        t              } | d    | t        t        f    | t        dz   t        dz   f    t        ddd      } t        dd      D ]  }t        dd      D ]	  }| ||f      y )Nr3   r9   r;   r9   r;   r=   )r#   rL   rY   rZ   krange)r3   r   r   s      rA   test_matexpr_indexingr      sx    S!QAdGadGa!eQUlOS!QA2q\ r1 	AadG	r@   c                      t        ddd        d    d   k(  sJ  t        d          d   k(  sJ  d    d   k(  sJ t         d dd df          d    d    d    d   gk(  sJ t        t         fd	       t        t         fd
       t        dt
        t              t        t        fd       t        dt
        d      d   d   k(  sJ y )Nr3   r;   re   r9   rV   r9   r   rW   rj   c                       d   S )Nr   r?   r{   s   rA   rB   z&test_single_indexing.<locals>.<lambda>       qt r@   c                       t            S r   rO   r{   s   rA   rB   z&test_single_indexing.<locals>.<lambda>   s    qt r@   r4   c                       d   S rz   r?   r   s   rA   rB   z&test_single_indexing.<locals>.<lambda>   r   r@   )r#   intlistr.   rv   rL   rY   r3   r4   s   @@rA   test_single_indexingr      s    S!QAQ41T7??SV9$Q41T7??"1"bqb&	?qw$4!D'BBBB
:|$
:|$S!QA
:|$S!QAQ41T7??r@   c                  V    t         d   t         d   z  t         d   t         d   z  k(  sJ y )NrV   r   r{   r?   r@   rA   test_MatrixElement_commutativer      s(    T71T7?agago---r@   c                     t        ddd      } | j                         j                         | d   | d   z  | d   z  | d   z  | d   | d   z  | d   z  | d   z  z
  | d   | d	   z  | d
   z  | d   z  z
  | d   | d	   z  | d   z  | d   z  z   | d   | d   z  | d
   z  | d   z  z   | d   | d   z  | d   z  | d   z  z
  | d   | d   z  | d   z  | d   z  z
  | d   | d   z  | d   z  | d   z  z   | d   | d	   z  | d   z  | d   z  z   | d   | d	   z  | d   z  | d   z  z
  | d   | d   z  | d   z  | d   z  z
  | d   | d   z  | d   z  | d   z  z   | d   | d   z  | d
   z  | d   z  z   | d   | d   z  | d   z  | d   z  z
  | d   | d   z  | d   z  | d   z  z
  | d   | d   z  | d   z  | d   z  z   | d   | d   z  | d   z  | d   z  z   | d   | d   z  | d
   z  | d   z  z
  | d   | d   z  | d
   z  | d   z  z
  | d   | d   z  | d   z  | d   z  z   | d   | d   z  | d   z  | d   z  z   | d   | d   z  | d   z  | d   z  z
  | d   | d	   z  | d   z  | d   z  z
  | d   | d	   z  | d
   z  | d   z  z   k(  sJ t        ddd      }t        | |z         j	                         t        | |z         cxk(  r| |z   j                         k(  sJ  J y )Nr3   rs   rW   rj   rq   )re   re   )r;   re   )re   r;   r   ro   )re   r9   )r9   re   rV   r   )r;   r   re   r   r   r;   )r   re   r4   )r#   as_explicitr*   r)   r   r   s     rA   test_MatrixSymbol_determinantr      s9   S!QA==? AdGAdGOAdG$;AdG$C	$$$$'%(*+D'!D'/!D'*A!D'*I%J	$$$$'%(*+D'!D'/!D'*A!D'*I%J 	
$$$$'%( +,D'!D'/!D'*A!D'*I%J 	
$$$$'	%( +,D'!D'/!D'*A!D'*I	%J
 	
$$$$'%(
 +,D'!D'/!D'*A!D'*I%J 	
$$$$'%( +,D'!D'/!D'*A!D'*I%J 	
$$$$'%( +,D'!D'/!D'*A!D'*I%J 	
$$$$'%( +,D'!D'/!D'*A!D'*I%J 	
$$$$'	%( +,D'!D'/!D'*A!D'*I	%J 	
$$$$'
%( +,D'!D'/!D'*A!D'*I
%J 	
$$$$'%( +,D'!D'/!D'*A!D'*I%J 	
$$$$'%( ( ( ( 	S!QAq1u""$AE
Cq1ukkmCCCCCr@   c                  n    t         d   t         d   z  j                  t         d         t         d   k(  sJ y )Nr   rW   )r3   r   r?   r@   rA   test_MatrixElement_diffr     s/    dGAdGO!!!D'*ag555r@   c                      t        ddd      } t        ddg      }| d   j                  | |      j                         |d   k(  sJ y )Nur;   r9   re   r   rW   )r#   r   rm   r   )r   vs     rA   test_MatrixElement_doitr     sH    S!QAAAT7<<1""$$///r@   c                  F   t        t              } t        | d      j                         | dz  k(  sJ | t        z  | k(  sJ t        | d      j                         | dz  k(  sJ | dz  | k(  sJ t        | d      j                         | dz  k(  sJ t        d      }t        |d      j                         |t        z  k(  sJ t        |d      j                         |k(  sJ t        |d      j                         |dz  k(  sJ t        |d      j                         |dz  k(  sJ y )Nre   r   r;   r   rs   )r-   rL   r    r   )MNs     rA   test_identity_powersr     s   A!Q<!Q$&&&a4199!Q<!Q$&&&b5A::!R=1a4'''A!Q<!Q$&&&!Q<!###!R=1a4'''!Q<!Q$&&&r@   c                      t        t        t                dz   k(  sJ t        t         fd        dz  t	        t              k(  sJ t         d      j                          dz  k(  sJ t        t         fd       t        dd      t        d      j                         dz  k(  sJ t        t        fd       dz  t        d      j                         k(  sJ dz  t	        d      k(  sJ t        t        fd       y )	Nrs   c                       dz  S Nr   r?   z1s   rA   rB   z!test_Zero_power.<locals>.<lambda>"      b"f r@   r   r;   c                  8    t         d      j                         S r   r    r   r   s   rA   rB   z!test_Zero_power.<locals>.<lambda>%      fRn113 r@   re   c                       dz  S )Nr?   z2s   rA   rB   z!test_Zero_power.<locals>.<lambda>(  r   r@   c                  8    t         d      j                         S Nr=   r   r   s   rA   rB   z!test_Zero_power.<locals>.<lambda>+  r   r@   )r,   rL   r.   rS   r-   r    r   )r   r   s   @@rA   test_Zero_powerr     s    	Aq	Bq5B;;
:}%q5HQK"a=2q5(((
:34	Aq	B"a=2q5(((
:}%q5F2qM&&((((q5HQK
:34r@   c                  ~   t        t        t        z  t        df   t        t        df         } t        t        t        f   j                  t        t        t        f         dk(  sJ t        t        t        f   j                  t        d         t        dt        dt        dz
  f      t        dt        d      z  k(  sJ t        d      }| j                  t        t        |t        dt        dz
  f      t        t        |f   z  |dt        dz
  f            sJ | j                         t        t        t        f   k(  sJ y )Nr   r9   rW   _i_1)r   r6   r8   r   pr   rL   r   dummy_eqr   r   )dexprr   s     rA   test_matrixelement_diffr   .  s    !A#qsQqsV$EQT7<<!Q$ A%%%QT7<<$ N1a!QqS$B>RSUVX^C_$____=D>>#nT1q!A#h?!T'
JTSTVWZ[V[L\]^^^::<1QT7"""r@   c                     t        d      \  } }}}t        | |g||gg      t        d      \  }|f   }t        |t              sJ t	        ddgddgg      }||f   }t        |t              sJ dD ]C  \  }}	|j                  |||	i      ||	f   k(  sJ |j                  |||	i      |||	f   k(  rCJ  t        ddd      }
|
d	   j                  |
      | k(  sJ |
|f   j                  |
      |f   k(  sJ |f   j                  |
      |
|f   k(  sJ t        dz  dz
  |f   t              sJ dz  dz
  |f   j                  d
|di      d   k(  sJ t        df   t              sJ df   j                  d      d	   k(  sJ df   j                  d
      d   k(  sJ |f   j                  |       t        d
dgddgg      |f   k(  sJ t        t        fd       t        t        fd       t        t        fd       t        t        fd       y )Nzx y z wzi, jr;   re   rs   r   )rW   rV   r   rj   r3   rW   r9   r   r   rV   c                       df   S r`   r?   r   r   s   rA   rB   z0test_MatrixElement_with_values.<locals>.<lambda>Q      qAw r@   c                       df   S r   r?   r   s   rA   rB   z0test_MatrixElement_with_values.<locals>.<lambda>R  s    qBx r@   c                       df   S r`   r?   r   s   rA   rB   z0test_MatrixElement_with_values.<locals>.<lambda>S  r   r@   c                       df   S r   r?   r   s   rA   rB   z0test_MatrixElement_with_values.<locals>.<lambda>T  s    qQx r@   )
r   r!   r   r+   r$   rm   r#   r   r.   rS   )r2   ri   zr8   r   MijMsmsijoiojr3   r   r   s              @@rA   test_MatrixElement_with_valuesr   8  s   #JAq!QAA A6?DAq
AqD'Cc=)))	1v1v&	'Bad8DdM***2 7BxxB2'1RV9444yy!RB(Br2vJ6667 	S!QAT7<<1"""QT7<<11a4(((QT7<<11a4(((a!a
m]333QqS1WaZ=q!Ql+qw666a1g}---QT7<<14(((QT7<<14(((QT7<<?fq!fq!f%56q!t<<<<
:'
:'(
:'
:'(r@   c                     t        ddd      } | j                         | dz  k(  sJ t        ddd      j                         }|j                         t        d|d   z  gg      k(  sJ t        ddd      j                         }|d   |d   z  |d	   |d
   z  z
  }t        |d   |d	    g|d
    |d   gg      |z  }|j                         |k(  sJ y )Nr4   re   r=   rf   r9   rW   r;   rj   rV   r   )r#   invr   r!   )r4   rf   detXinvXs       rA   test_invr   W  s    S!QA557ae 	S!Q++-A557fq4yk]++++S!Q++-AT71T7?QtWQtW_,DQtWqwh'tWHqw') *,01D557d??r@   c                     t        dt        t              } t        dt        t              }| |z   t        t        z   z  }| t        z  |t        z  z   | t        z  z   |t        z  z   }||k7  sJ t	        |      |k(  sJ t        |      |k(  sJ |dz  | dz  |dz  z  | dz  t        z  |dz  z  z
  dz  z  | dz  z  }t        t              }t        |      |t        z
  |dz  | dz  |t        z
  z  |dz  z  dz  z  | dz  z  fv sJ y )Nr3   r4   r=   )r#   rL   r5   r6   r   r   r-   )r3   r4   expr1expr2exprr   s         rA   test_factor_expandr   f  s   S!QAS!QAUQUOEaC!A#I!Oac!EE>>%=E!!!%=E!!!r7AGAGOa"gaiB&772>>q2wFDA$<AE1b5!R%Q-2*=)B#B1b5#HIIIIr@   c                  d   t        ddd      } | j                  | z  j                  j                         t	        | j                  | z  j                  d   | j                  | z  j                  d   g| j                  | z  j                  d   | j                  | z  j                  d   gg      k(  sJ y )Nr3   r   r;   rW   rV   r   rj   )r#   Tr   r   r!   r{   s    rA   test_issue_2749r   v  s    S!QACC!G;;""$!##'T1BQSS1WKKPTDU0VccAg[[qD)*0, )- - - -r@   c                      t        ddd      } | j                  | z  j                         dz  t        | d   dz  gg      k(  sJ y )Nr2   r9   r=   rW   r   )r#   r   r   r!   )r2   s    rA   test_issue_2750r  |  sF    S!QACCE "$42/@(AAAAr@   c                      t        ddd      } t        ddd      }t        | |      dk(  sJ t        | d   |d         j                  t        u sJ t        dd      } t        dd      }t        | |      dk(  sJ y )	Nr3   re   r9   r4   r;   Fr   T)r#   r   funcr,   r   s     rA   test_issue_7842r    s    S!QAS!QAa8uafag##r)))1aA1aAa8tr@   c                     t        d      }  t        d      |       }|j                  |       }t        |      t        |      |z  z   }t	        |      t        |      |j                  |       z  z   }t	        |      t	        |       z  |j                  |       j                  |       z  }t        |g|g|gg      }t        |j                  |      g|j                  |      g|j                  |      gg      }|j                  |      |k(  sJ y )Nr   r2   )r   r   r   r   r   r   r!   )r   r2   dxexp1exp2exp3r3   r4   s           rA   test_issue_21195r    s    AaA	
Bq6CF2IDq6CFBGGAJ''Dq6#a&="''!***1--D'(A111?@A66!9>>r@   c                  L   t        d      } t        dd      }t        d|       t        | d      cxk(  r| |fv sJ  J t        ddgddgg      }t        t        dt        z  gdt        z  dt        z  gg      }t        t        |      t        |t              cxk(  r|k(  sJ  J t        ddd      }t        ||      t        ||      k(  sJ t        ||      t        ||      k(  sJ t        t        ||      }t        |t        |      }t        ||t              }||cxk(  r|cxk(  rt        ||      k(  sJ  J t        t        ||      }t        |t        |      }t        ||t              }||cxk(  r|cxk(  rt        ||      k(  sJ  J t        ||      |dz  k(  sJ t        |||      t        ||dz        k(  sJ t        |||      t        |dz  |      k(  sJ t        |||      t        |||      k(  sJ t        |t        ||t              t        ||dz        k(  sJ y Nr;   r   r9   re   rs   r3   )r   r,   r   r!   r2   r#   r   )r   r   r   Mxr3   abcs           rA   test_MatMul_postprocessorr    s   aA	Aq	Bq!9Aq	,aW,,,,,AA A	!QqSAaC1:&	'Bq!9Aq	'R'''''S!QAq!9q!$$$q!9q!$$$Aq!AAq!AAq!A'Q'&Q-'''''Aq!AAq!AAq!A'Q'&B-'''''q!91q!Q<6!QT?***q!Q<6!Q$?***q!Q<6!Q?***q!Q12q5!1111r@   c                      t        d      } t        | t        j                        t        t        j                  |       k(  sJ y r`   )r   r   r   NaN)r   s    rA   test_MatAdd_postprocessor_xfailr    s/     	aAq!%%=CqM)))r@   c                  Z   t        d      } t        d|       t        | d      cxk(  r| k(  sJ  J t        t        j                  |       }|t        | t        j                        k(  sJ t	        |t              sJ |j
                  t        j                  | fk(  sJ t        t        j                  |       }|t        | t        j                        k(  sJ t	        |t              sJ |j
                  t        j                  | fk(  sJ t        | t        j                        }t	        |t              sJ |j
                  t        j                  | fk(  sJ t        ddgddgg      }t        t        |      }|t        |t              k(  sJ t	        |t              sJ |j
                  t        |fk(  sJ t        ddd      }t        ||      t        ||      cxk(  r	||z   k(  sJ  J t        t        ||      }|t        |t        |      cxk(  rTt        ||t              cxk(  r?t        t        ||      cxk(  r*t        |t        |      cxk(  rt        ||t              k(  sJ  J t	        |t              sJ |j
                  t        ||z   fk(  sJ t        ||      d|z  k(  sJ t        |||      t        |||      cxk(  rt        |||      cxk(  r|d|z  z   k(  sJ  J t        |t        ||t              }t	        |t              sJ |j
                  dt        z  |d|z  z   fk(  sJ y r  )r   r   r   Infinityr   ru   ComplexInfinityr  r!   r2   r#   )r   r  r   r3   s       rA   test_MatAdd_postprocessorr    s   
 	aAq!9Aq	&Q&&&&&AJJAAqzz""""a66ajj!_$$$Aq!AAq(())))a66a''++++AquuAa66aeeQZAA AAq	AAq	>>a66aVS!QAq!9Aq	*QU***** 	Aq!AAq!\Aq!\Aq!\Aq!\PSTUWXZ[P\\\\\\a66aQZq!9!q!Q<3q!Q<B3q!Q<B1qs7BBBBBAq!QAa66ac1qs7^###r@   c                  J   t        t        t        t        z  t        t        z  z               t        k(  sJ t        dt        z  t        z  dt        z  t        z  z         } t        |       t        k(  sJ | j
                  dt        z  t        z  dt        z  t        z  fk(  sJ y )Nr;   rs   )typer   r5   r6   r   ru   )r  s    rA    test_simplify_matrix_expressionsr    s|    	!A#!)$%///!A#a%!A#a%- A7f66ac!eQqSU^###r@   c                      t        ddd      } t        ddd      }t        |       t        |      z  }t        |      t        |       z  }||k7  sJ ||z
  dk7  sJ t        |t              rJ t        |t              rJ y )Nr3   r;   r4   r   )r#   r   r   )r3   r4   r   r   s       rA   test_expr    s    S!QAS!QAF3q6MEF3q6MEE>>5=A%%%%%%%%%r@   c                  &    t        t        d        y )Nc                      t        ddd      S )Nr9   r;   r3   r>   r?   r@   rA   rB   z#test_invalid_args.<locals>.<lambda>  s    aC!8 r@   )r.   r   r?   r@   rA   test_invalid_argsr!    s    
<89r@   c                      t        dd      } t        | dd      }|j                         }|j                  dd      }|j                  |j                  k(  sJ |j                  d   |j                  d   k(  sJ y )Nr3   T)complexr;   re   r   )r	   r#   r   rm   ru   )A_labelr3   A_1A_2s       rA   test_matrixsymbol_from_symbolr'    sj    S$'GWa#A
&&(C
&&A,C88qvv88A;!&&)###r@   c                      t        ddd      } | j                         t        | d   | d   | d   g| d   | d   | d	   gg      k(  sJ t        t        d
        y )Nrh   r;   re   rW   rV   r   r   rj   r   c                  *    t         j                         S r   )r3   r   r?   r@   rA   rB   z"test_as_explicit.<locals>.<lambda>  s    q}} r@   )r#   r   r   r.   rS   )rh   s    rA   test_as_explicitr*    sm    S!QA==?o	
4!D'1T7#	
4!D'1T7#/     :./r@   c                     t        ddt        j                        j                  dk(  sJ j                  t        j                  k(  sJ t        ddgddgg      v sJ t        dd      v sJ t        t        fd       t        t        fd       t        t        t        t        j                        t        v sJ t        t        fd	       t        t        fd
       t        ddh d      t        ddgddgg      t        ddgg      } v t        j                  k(  sJ | v t        j                  k(  sJ t        t        d        t        t        d        t        t        d        y )Nr;   )setrq   r9   re   rs   c                      t          v S r   r{   r   s   rA   rB   z test_MatrixSet.<locals>.<lambda>      a1f r@   c                      d v S rz   r?   r.  s   rA   rB   z test_MatrixSet.<locals>.<lambda>      a1f r@   c                      t          v S r   )r5   r.  s   rA   rB   z test_MatrixSet.<locals>.<lambda>"  r/  r@   c                       v S r   r?   )r   rf   s   rA   rB   z test_MatrixSet.<locals>.<lambda>#  r1  r@   >   r9   r;   re   c                  8    t        ddt        j                        S )Nr;   r   r'   r   Realsr?   r@   rA   rB   z test_MatrixSet.<locals>.<lambda>)  s    yB8 r@   c                  8    t        ddt        j                        S )Ng333333@r=   r5  r?   r@   rA   rB   z test_MatrixSet.<locals>.<lambda>*  s    yb!'': r@   c                      t        ddd      S )Nr;   )r9   r;   re   )r'   r?   r@   rA   rB   z test_MatrixSet.<locals>.<lambda>+  s    i1i8 r@   )r'   r   r6  rX   r,  r!   r,   r.   r   rL   rY   r3   falserS   )rg   r   rf   s    @@rA   test_MatrixSetr:    s=   !QAGG$A77f55AGGAA A6M61aA6M6
9n%
9n%!QAGG$A6M6
9n%
9n%!QI&AAA AAxAFqwwFqww
:89
::;
989r@   c                  B   t        ddd      } t        ddd      }t        dd      }|  |z    | z
  |z   |k(  sJ |  |z    | z
  |z   j                         |k(  sJ |  |z    | z
  |z   j                         |k(  sJ |  |z    | z
  |z   |z
  j                         |k(  sJ |  |z    | z
  |z   |z
  j                         |k(  sJ | | |z   z  || j                  |j                  z   z  z   j                         | dz  | |z  z   || j                  z  z   ||j                  z  z   k(  sJ y )Nr3   r;   r4   )r#   r,   r   r   r   )r3   r4   rh   s      rA   test_matrixsymbol_solvingr<  .  sM   S!QAS!QA1aAR!V9q=1!!!b1fIMA'')Q...b1fIMA%%'1,,,b1fIMA!++-222b1fIMA!))+q000q1uI1339%--/1a4!A#:!##3E!##3MMMMr@   N)rsympy.concrete.summationsr   sympy.core.exprtoolsr   sympy.core.functionr   r   sympy.core.relationalr   sympy.core.symbolr   r	   r
   (sympy.functions.special.tensor_functionsr   sympy.matrices.denser   sympy.polys.polytoolsr   
sympy.corer   r   r   r   r   r   r   sympy.functionsr   r   r   r   r   r   sympy.simplifyr   sympy.matricesr   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   sympy.matrices.commonr(   &sympy.matrices.expressions.determinantr)   r*   "sympy.matrices.expressions.matexprr+   "sympy.matrices.expressions.specialr,   r-   sympy.testing.pytestr.   r/   rL   rY   rZ   r   r   r2   r3   r4   r5   r6   r7   r8   rT   r^   rb   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@   rA   <module>rN     s   ) * . $ 2 2 C & (   : : #5 5 5 5 7 C < C . T21aACLaaaaaa8$&!'4T9 2E&;(D!!/.D(60'5#)> J J-B
	2: * *,$^$&:$0:0	Nr@   