
    Rie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 ZqdES )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                  D    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           d S )Nr3      r   c                  $    t          ddd          S )Nr3   r;   r#        Mlib/python3.11/site-packages/sympy/matrices/expressions/tests/test_matexpr.py<lambda>z-test_matrix_symbol_creation.<locals>.<lambda>%       |CQ7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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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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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7888
:88999
:77888
:77888
:88999
:77888AQ"""""U###A
:6666777d###A
:666677777r@   c                  2   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 d S )Nr   r9   r   r   r3   )	r3   shaperL   mr4   lindicessymbolnamer?   r@   rA   test_matexpr_propertiesr^   4   s    7q!fE=QF""""T7?f$$$$T7>QT7>#%%%%%%r@   c                  :   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 d S Nr;   )	r2   r3   rX   	__class__r   r,   r4   rL   rZ   r?   r@   rA   test_matexprrb   <   sw    aC;!'!!!!aC?f$$$$Q37Q;*ag.....aC;1a&      r@   c                  |   t          dt          t                    } t          dt          t                    }t          dt          t                    }|                     t          t                    j        t          t          fk    sJ | |z                      ||          | |z  k    sJ | |z                      t          t                    j        sJ t          ddd          t          ddd          t          dd	d          t          d
t          d                                        k    sJ t          d          }                    t          d          |          j        |ddfk    sJ d                                       d         k    sJ t          t          fd           d                                       d         k    sJ d                                       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                      || ||i          t          | |          k    sJ d S )Nr3   r4   r5   W   Xr;   Yr9   Zyr9   r9   c                  <     d                                         S )Nrj   subs)rf   rg   s   rA   rB   z#test_matexpr_subs.<locals>.<lambda>[       qw||Aq11 r@   rV   r;   r9   c                  <     d                                         S )Nr;   r;   rl   )rd   rh   s   rA   rB   z#test_matexpr_subs.<locals>.<lambda>b   rn   r@   c                  V     d                               t          d                    S )Nrq   r;   )rm   r   )rd   s   rA   rB   z#test_matexpr_subs.<locals>.<lambda>d   s    qw||AuQxx8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0T7<<14((((
 :11111222T7<<14(((( T7<<14((((
:11111222
:8888999q!fq!f%&&AAA  AQ""La$;$;qAaC::q!Ql##va||333333r@   c                  J   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            d S )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                  P    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=AG####a!eack6*****
9mmmm$$$
9mmmm$$$
9mmmm$$$z!Q!#z!Q'7'77777
9778888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 d S )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77x{{?QS HQKK////Q3!&(????
,,,S!QAS!QAA;;!a% AE))))a46QT>>>>a4q=ACa4q=Ar@   c                  T   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            d S )	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6Q;;;;7a<<<<qD:????a48A;;a419999a42::::b5GAJJrEB;!qD191af9Qhq!nnQ''''
!C!CDDDDDr@   c                      t          d          \  t          d          } | j        fk    sJ t          t          fd           |                                 | k    sJ d S )Nzn,m,trf   c                  8     t          d                     S )Nrf   r>   )rY   rL   ts   rA   rB   z#test_MatrixSymbol.<locals>.<lambda>   s    5l3155a88 r@   )r   r#   rX   r.   r   doit)rf   rY   rL   r   s    @@@rA   test_MatrixSymbolr      sy    gGAq!S!QA7q!f
98888889996688q======r@   c                       t          ddd           t                     t          dd fd          k    sJ t                     t          dd fd          k    sJ d S )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      sv    S!QA1A7K7K7K7K!L!LLLLL!99q!%9%9%9%9::::::::r@   c                  R    t           t          z  j        t           t          hk    sJ d S r   )r5   r6   free_symbolsr?   r@   rA   test_free_symbolsr      s$    aC!Q''''''r@   c                  l    t          t          j        t          ddd          z  t                    sJ d S )Nrf   r;   )r   r   r   r#   r"   r?   r@   rA   test_zero_matmulr      s1    af|CA666
CCCC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 d S Nr3   r9   r;   )r#   r   r   r   r   r2   r   r!   r{   s    rA   test_matadd_simplifyr          S!QAF1oA	CFFAI0E/F.GHHIIJ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 d S 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    sJ d S )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QKKAq))1fQllF1aLLaLL'!**gajj&A,,q"1aLLD  / /mcmSX....../ /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           d S )Nr3   r9   r;   r9   r;   r=   )r#   rL   rY   rZ   krange)r3   r   r   s      rA   test_matexpr_indexingr      s    S!QAdGGadGGa!eQUlOOS!QA2q\\  r1 	 	AadGGG	 r@   c                  R    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 d S )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VV9$Q41T7????"1"bqb&	??qw$4!D'BBBBB
:||||$$$
:||||$$$S!QA
:||||$$$S!QAQ41T7??????r@   c                  z    t           d         t           d         z  t           d         t           d         z  k    sJ d S )NrV   r   r{   r?   r@   rA   test_MatrixElement_commutativer      s1    T71T7?agago------r@   c                     t          ddd          } |                                                                 | 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                                             t          | |z             cxk    r| |z                                   k    sn J d S )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      se   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

CCCCq1ukkmmCCCCCCCCr@   c                      t           d         t           d         z                      t           d                   t           d         k    sJ d S )Nr   rW   )r3   r   r?   r@   rA   test_MatrixElement_diffr     s;    dGAdGO!!!D'**ag555555r@   c                      t          ddd          } t          ddg          }| d                             | |                                          |d         k    sJ d S )Nur;   r9   re   r   rW   )r#   r   rm   r   )r   vs     rA   test_MatrixElement_doitr     s]    S!QAAAT7<<1""$$$//////r@   c                     t          t                    } t          | d                                          | dz  k    sJ | t          z  | k    sJ t          | d                                          | dz  k    sJ | dz  | k    sJ t          | d                                          | dz  k    sJ t          d          }t          |d                                          |t          z  k    sJ t          |d                                          |k    sJ t          |d                                          |dz  k    sJ t          |d                                          |dz  k    sJ d S )Nre   r   r;   r   rs   )r-   rL   r    r   )MNs     rA   test_identity_powersr     s[   A!Q<<!Q$&&&&a419999!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                                           dz  k    sJ t          t           fd           t          dd          t          d                                          dz  k    sJ t          t          fd           dz  t          d                                          k    sJ dz  t	          d          k    sJ t          t          fd           d S )	Nrs   c                       dz  S Nr   r?   z1s   rA   rB   z!test_Zero_power.<locals>.<lambda>"      b"f r@   r   r;   c                  H    t           d                                          S r   r    r   r   s   rA   rB   z!test_Zero_power.<locals>.<lambda>%      fRnn1133 r@   re   c                       dz  S )Nr?   z2s   rA   rB   z!test_Zero_power.<locals>.<lambda>(  r   r@   c                  H    t           d                                          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     sJ   	Aq		Bq5B;;;;
:}}}}%%%q5HQKK"a==2q5((((
:3333444	Aq		B"a==2q5((((
:}}}}%%%q5F2qMM&&((((((q5HQKK
:333344444r@   c                  :   t          t          t          z  t          df         t          t          df                   } t          t          t          f                              t          t          t          f                   dk    sJ t          t          t          f                              t          d                   t          dt          dt          dz
  f          t          dt          d          z  k    sJ t          d          }|                     t          t          |t          dt          dz
  f          t          t          |f         z  |dt          dz
  f                    sJ | 
                                t          t          t          f         k    sJ d S )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$B>RSUVX^C_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 ]S\  }}	|                    |||	i          ||	f         k    sJ |                    |||	i          |||	f         k    sJ Tt          ddd          }
|
d	                             |
          | k    sJ |
|f                             |
          |f         k    sJ |f                             |
          |
|f         k    sJ t          dz  dz
  |f         t                    sJ dz  dz
  |f                             d
|di          d         k    sJ t          df         t                    sJ df                             d          d	         k    sJ df                             d
          d         k    sJ |f                             |           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           d S )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 7BxxB2''1RV94444yy!RB((Br2vJ66666S!QAT7<<1""""QT7<<11a4((((QT7<<11a4((((a!a
m]33333QqS1WaZ=q!Ql++qw6666a1g}-----QT7<<14((((QT7<<14((((QT7<<??fq!fq!f%566q!t<<<<<
:'''
:'''''(((
:'''
:'''''(((((r@   c                  0   t          ddd          } |                                 | dz  k    sJ t          ddd                                          }|                                t          d|d         z  gg          k    sJ t          ddd                                          }|d         |d         z  |d	         |d
         z  z
  }t          |d         |d	          g|d
          |d         gg          |z  }|                                |k    sJ d S )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5577ae 	S!Q++--A5577fq4yk]++++++S!Q++--AT71T7?QtWQtW_,DQtWqwh'tWHqw') * *,01D5577d??????r@   c                  Z   t          dt          t                    } t          dt          t                    }| |z   t          t          z   z  }| t          z  |t          z  z   | t          z  z   |t          z  z   }||k    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 d S )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IIIIr@   c                  4   t          ddd          } | j        | z  j                                        t	          | j        | z  j        d         | j        | z  j        d         g| j        | z  j        d         | j        | z  j        d         gg          k    sJ d S )Nr3   r   r;   rW   rV   r   rj   )r#   Tr   r   r!   r{   s    rA   test_issue_2749r   v  s    S!QAC!G;""$$!#'T1BQS1WKPTDU0VcAg[qD)*0, )- )- - - - - - -r@   c                      t          ddd          } | j        | z                                  dz  t          | d         dz  gg          k    sJ d S )Nr2   r9   r=   rW   r   )r#   r   r   r!   )r2   s    rA   test_issue_2750r  |  sV    S!QACE  "$42/@(A(AAAAAAAr@   c                  6   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 d S )	Nr3   re   r9   r4   r;   Fr   T)r#   r   funcr,   r   s     rA   test_issue_7842r    s    S!QAS!QAa88uafag#r))))1aA1aAa88tr@   c                     t          d          }  t          d          |           }|                    |           }t          |          t          |          |z  z   }t	          |          t          |          |                    |           z  z   }t	          |          t	          |           z  |                    |                               |           z  }t          |g|g|gg          }t          |                    |          g|                    |          g|                    |          gg          }|                    |          |k    sJ d S )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q66CFF2IDq66CFFBGGAJJ''Dq66#a&&="''!****1---D'((A111?@@A66!99>>>>>>r@   c                  r   t          d          } t          dd          }t          d|           t          | d          cxk    r| |fv sn 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n 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n J t          t          ||          }t          |t          |          }t          ||t                    }||cxk    r|cxk    rt          ||          k    sn 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 d S 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!99Aq		,,,,aW,,,,,,AA  A	!QqSAaC1:&	'	'Bq!99Aq		''''R''''''S!QAq!99q!$$$$q!99q!$$$$Aq!AAq!AAq!A''''Q''''&Q--''''''Aq!AAq!AAq!A''''Q''''&B--''''''q!991q!Q<<6!QT??****q!Q<<6!Q$??****q!Q<<6!Q??****q!Q12q5!1!1111111r@   c                      t          d          } t          | t          j                  t          t          j        |           k    sJ d S r`   )r   r   r   NaN)r   s    rA   test_MatAdd_postprocessor_xfailr    s:     	aAq!%==CqMM))))))r@   c                  "   t          d          } t          d|           t          | d          cxk    r| k    sn 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n J t          t          ||          }|t          |t          |          cxk    rkt          ||t                    cxk    rPt          t          ||          cxk    r5t          |t          |          cxk    rt          ||t                    k    sn 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n J t          |t          ||t                    }t	          |t                    sJ |j        dt          z  |d|z  z   fk    sJ d S r  )r   r   r   Infinityr   ru   ComplexInfinityr  r!   r2   r#   )r   r  r   r3   s       rA   test_MatAdd_postprocessorr    s   
 	aAq!99Aq		&&&&Q&&&&&&AJAAqz""""""a6aj!_$$$$Aq!!AAq())))))a6a'+++++AquAa6aeQZAA  AAq		AAq		>>>>a6aVS!QAq!99Aq		****QU****** 	Aq!AAq!\\\\Aq!\\\\Aq!\\\\Aq!\\\\PSTUWXZ[P\P\\\\\\\a6aQZq!99!q!Q<<3q!Q<<BBBB3q!Q<<BBBB1qs7BBBBBBAq!QAa6ac1qs7^######r@   c                     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 d S )Nr;   rs   )typer   r5   r6   r   ru   )r  s    rA    test_simplify_matrix_expressionsr    s    	!A#!)$$%%////!A#a%!A#a%-  A77f6ac!eQqSU^######r@   c                  H   t          ddd          } t          ddd          }t          |           t          |          z  }t          |          t          |           z  }||k    sJ ||z
  dk    sJ t          |t                    rJ t          |t                    rJ d S )Nr3   r;   r4   r   )r#   r   r   )r3   r4   r   r   s       rA   test_expr    s    S!QAS!QAFF3q66MEFF3q66MEE>>>>5=A%%%%%%%%%%%%%%r@   c                  2    t          t          d            d S )Nc                  $    t          ddd          S )Nr9   r;   r3   r>   r?   r@   rA   rB   z#test_invalid_args.<locals>.<lambda>  s    aC!8!8 r@   )r.   r   r?   r@   rA   test_invalid_argsr!    s    
<8899999r@   c                      t          dd          } t          | dd          }|                                }|                    dd          }|j        |j        k    sJ |j        d         |j        d         k    sJ d S )Nr3   T)complexr;   re   r   )r	   r#   r   rm   ru   )A_labelr3   A_1A_2s       rA   test_matrixsymbol_from_symbolr'    s{    S$'''GWa##A
&&((C
&&A,,C8qv8A;!&)######r@   c                      t          ddd          } |                                 t          | d         | d         | d         g| d         | d         | d	         gg          k    sJ t          t          d
            d S )Nrh   r;   re   rW   rV   r   r   rj   r   c                  4    t                                           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*    s    S!QA==??o	
4!D'1T7#	
4!D'1T7#/       :../////r@   c                  Z   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            d S )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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8 r@   )r'   r   r6  rX   r,  r!   r,   r.   r   rL   rY   r3   falserS   )rg   r   rf   s    @@rA   test_MatrixSetr:    s   !QAG$$$A7f5AGAA  A66661aA6666
9nnnn%%%
9nnnn%%%!QAG$$$A6666
9nnnn%%%
9nnnnn%%%!QIII&&&AAA  AAxAFqwFqw
:88999
:::;;;
98899999r@   c                  h   t          ddd          } t          ddd          }t          dd          }|  |z    | z
  |z   |k    sJ |  |z    | z
  |z                                   |k    sJ |  |z    | z
  |z                                   |k    sJ |  |z    | z
  |z   |z
                                  |k    sJ |  |z    | z
  |z   |z
                                  |k    sJ | | |z   z  || j        |j        z   z  z                                   | dz  | |z  z   || j        z  z   ||j        z  z   k    sJ d S )Nr3   r;   r4   )r#   r,   r   r   r   )r3   r4   rh   s      rA   test_matrixsymbol_solvingr<  .  su   S!QAS!QA1aAR!V9q=1!!!!b1fIMA''))Q....b1fIMA%%''1,,,,b1fIMA!++--2222b1fIMA!))++q0000q1uI139%--//1a4!A#:!#3E!#3MMMM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     sl   ) ) ) ) ) ) * * * * * * . . . . . . . . $ $ $ $ $ $ 2 2 2 2 2 2 2 2 2 2 C C C C C C & & & & & & ( ( ( ( ( (                  : : : : : : : : : : : : : : : : # # # # # #5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 7 6 6 6 6 6 C C C C C C C C < < < < < < C C C C C C C C . . . . . . . . T2221aAGCLLLaLaLaLaLaLa8 8 8$& & &! ! !'4 '4 '4T9 9 9   2E E E&  ; ; ;( ( (D D D! ! !! ! !/ / /    . . .D D D(6 6 60 0 0' ' '5 5 5# # #) ) )>   J J J- - -B B B
  	 	 	2 2 2: * * *,$ ,$ ,$^$ $ $& & &: : :$ $ $0 0 0: : :0	N 	N 	N 	N 	Nr@   