
    MZd                        d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlmZ d dlmZ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) d dl*m+Z+ d dl,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8 d dl9m:Z: d dl;m<Z< d dl=m>Z>m?Z? d dl@mAZB d dlCmDZDmEZEmFZF  G d de"e#e$      ZGd ZHd ZI G d de"e#e%      ZJd ZKd ZL G d de"e#e&      ZMd ZNd  ZO G d! d"e"e#e'      ZPd# ZQd$ ZR G d% d&e"e#e(      ZS G d' d(e"e#e+      ZTd) ZUd* ZVd+ ZWd, ZXd- ZYd. ZZd/ Z[d0 Z\d1 Z]d2 Z^d3 Z_d4 Z`d5 Zad6 Zbd7 Zcd8 Zdd9 Zed: Zfd; Zgd< Zhd= Zid> Zjd? Zkd@ ZldA ZmdB ZndC ZodD ZpdE ZqdF ZrdG ZsdH ZtdI ZudJ ZvdK ZwdL ZxdM ZydN ZzdO Z{dP Z|dQ Z}dR Z~dS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Ze?dn        Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zyx)y    )Q)Expr)Add)Function)
NumberKindUndefinedKind)IIntegeroopiRational)S)Symbolsymbols)Abs)exp)sqrt)cossin)

ShapeErrorNonSquareMatrixError_MinimalMatrix_CastableMatrixMatrixShapingMatrixPropertiesMatrixOperationsMatrixArithmeticMatrixSpecial
MatrixKind)MatrixCalculus)Matrixdiageyematrix_multiply_elementwiseoneszerosSparseMatrixbandedMutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)Poly)flatten)raisesXFAIL)ImmutableDenseNDimArray)xyzc                       e Zd Zy)ShapingOnlyMatrixN__name__
__module____qualname__     H/usr/lib/python3/dist-packages/sympy/matrices/tests/test_commonmatrix.pyr6   r6          r<   r6   c                     t        | | d       S )Nc                     t        | |k(        S Nintijs     r=   <lambda>zeye_Shaping.<locals>.<lambda>"   s    AF r<   r6   ns    r=   eye_ShapingrK   !   s    Q#;<<r<   c                     t        | | d       S )Nc                      yNr   r;   rD   s     r=   rG   zzeros_Shaping.<locals>.<lambda>&       r<   rH   rI   s    r=   zeros_ShapingrP   %   s    Q>22r<   c                       e Zd Zy)PropertiesOnlyMatrixNr7   r;   r<   r=   rR   rR   )   r>   r<   rR   c                     t        | | d       S )Nc                     t        | |k(        S rA   rB   rD   s     r=   rG   z eye_Properties.<locals>.<lambda>.       3qAv; r<   rR   rI   s    r=   eye_PropertiesrW   -       1&>??r<   c                     t        | | d       S )Nc                      yrN   r;   rD   s     r=   rG   z"zeros_Properties.<locals>.<lambda>2   rO   r<   rV   rI   s    r=   zeros_Propertiesr[   1       1n55r<   c                       e Zd Zy)OperationsOnlyMatrixNr7   r;   r<   r=   r^   r^   5   r>   r<   r^   c                     t        | | d       S )Nc                     t        | |k(        S rA   rB   rD   s     r=   rG   z eye_Operations.<locals>.<lambda>:   rU   r<   r^   rI   s    r=   eye_Operationsrb   9   rX   r<   c                     t        | | d       S )Nc                      yrN   r;   rD   s     r=   rG   z"zeros_Operations.<locals>.<lambda>>   rO   r<   ra   rI   s    r=   zeros_Operationsre   =   r\   r<   c                       e Zd Zy)ArithmeticOnlyMatrixNr7   r;   r<   r=   rg   rg   A   r>   r<   rg   c                     t        | | d       S )Nc                     t        | |k(        S rA   rB   rD   s     r=   rG   z eye_Arithmetic.<locals>.<lambda>F   rU   r<   rg   rI   s    r=   eye_Arithmeticrk   E   rX   r<   c                     t        | | d       S )Nc                      yrN   r;   rD   s     r=   rG   z"zeros_Arithmetic.<locals>.<lambda>J   rO   r<   rj   rI   s    r=   zeros_Arithmeticrn   I   r\   r<   c                       e Zd Zy)SpecialOnlyMatrixNr7   r;   r<   r=   rp   rp   M   r>   r<   rp   c                       e Zd Zy)CalculusOnlyMatrixNr7   r;   r<   r=   rr   rr   Q   r>   r<   rr   c                  h   t        ddg d      } | j                  dk(  sJ | j                  dk(  sJ | d   dk(  sJ | d   dk(  sJ t        |       g dk(  sJ t        | dd d f         g dk(  sJ t        | d d df         ddgk(  sJ t        | d d d d f         t        |       k(  sJ | d d d d f   | k(  sJ t        |       | k(  sJ t        g dg dg      | k(  sJ t        g dg df      | k(  sJ t        ddg      | k(  sJ t        d	      | k(  sJ t        ddgdd
gddgg      | k(  rJ y )N      )   rt   ru            rv   rv   rx   rv   rw   rx   ry   rv   rt   ru   )r|   r{   rw   ry   )r   rowscolslistr2   s    r=   test__MinimalMatrixr   U   sf   q!/0A66Q;;66Q;;Q4199T7a<<7((((!Q$=I%%%!Q$=QF"""!Q$=DG###QT7a<<!!!!9i01Q6669i01Q6669i01Q66601Q666AAA78A=>>=r<   c                     t        ddgddgg      j                  t        t              k(  sJ t        ddgddgg      j                  t        t              k(  sJ t        ddg       j                  t        t              k(  sJ t        t        gg      j                  t        t              k(  sJ t        dt        dgg      gg      j                  t        t
              k(  sJ t        dgg      j                  t        t              k(  sJ t        dt        dgg      gg      j                  t        t
              k(  sJ y )Nrv   rt   ru   rw   r   )r!   kindr   r   r2   r   r'   r;   r<   r=   	test_kindr   h   s   Aq6Aq6"#((Jz,BBBBAq6Aq6"#((Jz,BBBB!Q  Jz$::::A3%=J!7777Avse}%&',,
=0IIII!##z*'====!VaSE]+,-22j6OOOOr<   c                      t        ddg d      } | j                         }|j                  dk(  sJ t        d      D ]  }||   |dz   k(  rJ  y )Nrt   )rv   ru   rt   rw   rv   rw   )r6   vecr~   range)mm_vecrE   s      r=   test_vecr   s   sT    !Q-AEEGE::??1X !Qx1q5   !r<   c                  ^   t        d      \  } }}}t        | |g||gg      }t        | |g||gg      }t        | |g||gg      }t	        | |g||gg      }|j                         |j                         cxk(  r3|j                         cxk(  r|j                         cxk(  r| |||dk(  sJ  J y )Nza:d)r   r   r   rv   rv   r   rz   )r   r)   r+   r*   r,   todok)abcdm1m2m3m4s           r=   
test_todokr   {   s    JAq!Q	aVaV,	-B	1v1v.	/B	q!fq!f-	.B	AA/	0B88: 5rxxz 5RXXZ 5Aq!45 5 5 5 5r<   c                     t         j                  t         j                  t        t        z  t         j
                  gt        t        t        t        dz  gt        t         j                   t        t        z  dgg} t         j                  t         j                  t        t        z  t         j
                  t        t        t        t        dz  t        t         j                   t        t        z  dg}t        dd|      }|j                         | k(  sJ y )Nrt   ru   rw   )	r   OneHalfr2   r3   Zeror4   r6   tolist)lstflat_lstr   s      r=   test_tolistr      s    EE1661Q3'!Q1a41quufac1:M
NCqvvqsAFFAq!QT1quufac1MH!Q)A88:r<   c                      t        ddt        j                  dgdt        j                  gt        dgg      } dt        j                  idt        j                  idt        id}| j                         |k(  sJ y )Nru   rt   r   rv   r   rv   rt   )r6   r   r   r   r2   todod)r   dicts     r=   
test_tododr      s_    !Q!%%a[1a& ABA155zq!&&kq!f5D779r<   c                      t        ddg d       t        t         fd       t        t         fd       t        t         fd       t        t         fd        j                  d       j                  d      cxk(  rt	        g d	g d
g      k(  sJ  J  j                  d       j                  d      cxk(  rt	        ddgddgddgg      k(  sJ  J  j                  d       j                  d      cxk(  rt	        g d	g dg      k(  sJ  J  j                  d       j                  d      cxk(  rt	        ddgddgddgg      k(  sJ  J y )Nru   	rv   rt   ru   rw   rx   ry         	   c                  &     j                  d      S Nrx   row_deles   r=   rG   z"test_row_col_del.<locals>.<lambda>       qyy| r<   c                  &     j                  d      S Nr   r   s   r=   rG   z"test_row_col_del.<locals>.<lambda>       qyy} r<   c                  &     j                  d      S r   col_delr   s   r=   rG   z"test_row_col_del.<locals>.<lambda>   r   r<   c                  &     j                  d      S r   r   r   s   r=   rG   z"test_row_col_del.<locals>.<lambda>   r   r<   rt   r|   r{   rv   rw   rx   r   r   r   r   r   ry   r   )r6   r/   
IndexErrorr   r!   r   r   s   @r=   test_row_col_delr      s&   !Q ;<A
:+,
:,-
:+,
:,-99Q<199R=JFIy3I,JJJJJJ99Q<199R=LFQFQFQF3K,LLLLLL99Q<199R=JFIy3I,JJJJJJ99Q<199R=LFQFQFQF3K,LLLLLLr<   c                  :   t        ddgddgg      } t        dt        gt        dgg      }t        dt        dgt        dt        gt        t        t        gg      }| j	                         | gk(  sJ |j	                         |gk(  sJ |j	                         |gk(  sJ y Nrv   rt   ru   )r!   r2   r3   r4   get_diag_blocks)r   r   r   s      r=   test_get_diag_blocks1r      s    AA AAA AAq	Aq!9q!Qi01A1#%%%1#%%%1#%%%r<   c                     t        ddgddgg      } t        dt        gt        dgg      }t        dt        dgt        dt        gt        t        t        gg      }t	        | ||      t	        | ||      t	        | ||      t	        |||      f\  }}}}t        |j                  |j                  |      }t        |j                  |j                  |      }t        |j                  |j                  |      }t        |j                  |j                  |      }|j                         | ||gk(  sJ |j                         | ||gk(  sJ |j                         | ||gk(  sJ |j                         |||gk(  sJ y r   )	r!   r2   r3   r4   r"   r6   r}   r~   r   )r   r   r   ABCDs          r=   test_get_diag_blocks2r      sU   AA AAA AAq	Aq!9q!Qi01AaAQ1tAq!}d1amKJAq!Q!&&!&&!,A!&&!&&!,A!&&!&&!,A!&&!&&!,A1a)+++1a)+++1a)+++1a)+++r<   c                  D    t        ddddg      } | j                  dk(  sJ y )Nrv   rt   r   rv   rt   )r6   shaper   s    r=   
test_shaper      s&    !QA'A77fr<   c                      t        d      } | j                  dd      t        ddd      k(  sJ t        ddd       }|j                  dd      t        d      k(  sJ |j                  dd	      t        d
      k(  sJ y )Nru   rv   r   )	rv   r   r   r   rv   r   r   r   rv   rw   c                     | |z   S rA   r;   rD   s     r=   rG   ztest_reshape.<locals>.<lambda>   s
    a!e r<   )r   ru   rv   rt   )ru   rw   rt   ru   rw   rx   rt   ry   ))r   rv   rt   ru   rv   rt   )ru   rw   rt   ru   rw   rx   )rK   reshaper!   r6   m0r   s     r=   test_reshaper      s    	QB::ava,GHHHH	1a!3	4B::	1DEF F F::av&NOOOOr<   c                      t        ddg d      } | j                  d      t        ddg d      k(  sJ | j                  d      t        ddg d      k(  sJ y )Nru   r   r   rv   r|   )rv   rw   r   )r6   rowr!   colr   s    r=   test_row_colr      sO    !Q ;<A558vaI....558vaI....r<   c                  |    t        d      j                  t        g d            t        g dg dg dg      k(  sJ y )Nru   r   r   r   )rv   r   r   r   )r   rv   r   r   )r   r   rv   r   )rK   row_joinr!   r;   r<   r=   test_row_joinr      s=    q>""6)#45<! "" " "r<   c                      t        d      j                  t        g dg            t        g dg dg dg dg      k(  sJ y )Nru   r   rv   r   r   )r   rv   r   )r   r   rv   )rK   col_joinr!   r;   r<   r=   test_col_joinr      sB    q>""69+#679   r<   c                      t        g dg      } t        dd      D ]^  }g d}|j                  |d       t        t	        d      j                  ||       j                  d      j                               |k(  r^J  y )Nrw   rw   rw   rx   r   rw   ru   r   )r!   r   insertr.   rK   
row_insertr   r   )r4rE   ls      r=   test_row_insertr      so    		B2q\ N	A{1~00B7;;A>EEGHAMMMNr<   c                     t        g d      } t        dd      D ]^  }g d}|j                  |d       t        t	        d      j                  ||       j                  d      j                               |k(  r^J  t        d      j                  dt        d	d	gd	d	gd	d	gd	d	gd	d	gd	d	gg            t        g d
g dg dg dg dg dg      k(  sJ y )Nr   r   rx   r   r   r   rw   ru   r   ry   rt   )rv   r   r   rt   rt   r   r   r   )r   rv   r   rt   rt   r   r   r   )r   r   rv   rt   rt   r   r   r   )r   r   r   rt   rt   rv   r   r   )r   r   r   rt   rt   r   rv   r   )r   r   r   rt   rt   r   r   rv   )	r!   r   r   r.   rP   
col_insertr   r   rK   )c4rE   r   s      r=   test_col_insertr      s    			B2q\ P	A}Q'221b9==a@GGIJaOOOP
 q>$$QAAAAQRTUPVYZ\]X^/_(`a++++++- .. . .r<   c                  `    t        ddd         j                  g dddg      t        ddg d      k(  sJ  j                  ddgg d	      t        ddg d
      k(  sJ  j                  t        d      t        d             k(  sJ t	        t
         fd       t	        t
         fd       y )Nrw   ru   c                     | dz  |z   S Nru   r;   rD   s     r=   rG   ztest_extract.<locals>.<lambda>       QqS1W r<   )r   rv   ru   r   rv   rt   )r   rv   ru   rw   r   
   r   r   rt   )r   r   rt   r   r      c                  ,     j                  dgdg      S )Nrw   r   extractr   s   r=   rG   ztest_extract.<locals>.<lambda>       qyy!qc2 r<   c                  ,     j                  dgdg      S )Nr   ru   r   r   s   r=   rG   ztest_extract.<locals>.<lambda>   r   r<   )r6   r   r!   r   r/   r   r   s   @r=   test_extractr      s    !Q 45A99YA'6!Q8K+LLLL99aVY'6!Q8K+LLLL99U1XuQx(A---
:23
:23r<   c                     t        ddd       t        ddd       j                        k(  sJ j                        t         j                        cxk(  rt        g dg dg dg dg      k(  sJ  J t        t        fd	       t        j                         t               k(  sJ t        j
                  d
d
      } t        j
                  d
d      }t        j
                  d
d      }t        j
                  d
d      }t         j                  | |||      j                  d
k(  rj                  dk(  sJ y )Nrw   ru   c                     | dz  |z   S r   r;   rD   s     r=   rG   ztest_hstack.<locals>.<lambda>   r   r<   c                     | dz  |z   S r   r;   rD   s     r=   rG   ztest_hstack.<locals>.<lambda>       acAg r<   )	r   rv   rt   r   rv   rt   r   rv   rt   )	ru   rw   rx   ru   rw   rx   ru   rw   rx   )	ry   r   r   ry   r   r   ry   r   r   )	r   r   r   r   r   r   r   r   r   c                  (     j                         S rA   )hstackr   r   s   r=   rG   ztest_hstack.<locals>.<lambda>      qxx2 r<   r   rv   rt   ry   )r6   r  r!   r/   r   r&   r}   r~   )M1M2M3M4r   r   s       @@r=   test_hstackr     s)   !Q 45A	1a!5	6B88Aq! 1 8 8Aq A 4V1111	M3 F4 4 4 4 4 4
 :./==?fh&&& 
a	B	a	B	a	B	a	B  RR0A66Q;166Q;&&;r<   c                      t        ddd        t        ddd         j                         k(  sJ  j                           t         j                           cxk(  r3t        g dg dg dg dg dg dg dg dg dg dg dg dg      k(  sJ  J t        t         fd	       t        j                         t               k(  sJ y )
Nrw   ru   c                     | dz  |z   S r   r;   rD   s     r=   rG   ztest_vstack.<locals>.<lambda>  r   r<   c                     | dz  |z   S r   r;   rD   s     r=   rG   ztest_vstack.<locals>.<lambda>  r   r<   r   r   )ry   r   r   )r   r   r   c                  (     j                         S rA   )vstackr  s   r=   rG   ztest_vstack.<locals>.<lambda>!  r  r<   )r6   r  r!   r/   r   r  s   @@r=   test_vstackr    s    !Q 45A	1a!5	6B88Aq! 1 8 8Aq A .V + + + + + + + + + + + +M- F. . . . . . :./==?fh&&&r<   c            
         t        ddddt        ddt        z  z
  g      } | j                         t        j                  t        d      t        j
                  t        hk(  sJ | j                  t              t        hk(  sJ y Nrt   rv   )rR   r2   atomsr   r   NegativeOner   r   s    r=   
test_atomsr  &  sb    QAq!Q1W#56A779!ammQ7777776?qc!!!r<   c                  R    t        t        gdgg      j                  t        hk(  sJ y rN   )rR   r2   free_symbolsr;   r<   r=   test_free_symbolsr  ,  s%    !qc
+88QC???r<   c                     t        t        t        fdf      } | j                  t              sJ | j                  t              rJ | j                  t
              sJ t        dt        fdf      } | j                  t              rJ y )N)rt   ru   rt   )rR   r2   r3   hasr4   r   r   s    r=   test_hasr  0  si    q!ff-.A558O8uuQx<55==q!ff-.AuuQx<xr<   c                     t        d      } t        ddddg      j                         du sJ t        ddd| dz  d| z  z   dz   t        | dz   dz   d| t        z  t         |  t        z  dg	      }|j                         du sJ |j                  d      du sJ |j                  d	       du sJ t        dd|D  cg c]  }  | j                          c}       }|j                  d      du sJ t        ddt
        j                  gt        |      dd  z   D  cg c]  }  | j                          c}       }|j                         du sJ y c c} w c c} w )
Nr2   rt   rv   Fru   r   Tsimplifyc                     | S rA   r;   r   s    r=   rG   z(test_is_anti_symmetric.<locals>.<lambda>@  s    ! r<   )r   rR   is_anti_symmetricr3   expandr   r   r   )r2   r   s     r=   test_is_anti_symmetricr!  :  s]   A1q!f-??AUJJJQAq!taczA~qAEA:+q!A#PQrTUSUVWSWYZ#[\A D(((.%7774===Q#:1HAHHJ#:;A.$666Q$q'!"+8M#N1HAHHJ#NOA E))) $;#Ns   :EEc                     t        ddg d      } | j                         rJ | j                         sJ | j                  d      sJ t        ddg d      } | j                         sJ t        ddt        ddd            } | j                         sJ | j                         sJ t        ddg d      } | t        ddd      k(  sJ t        ddt	        dd            } | j                         rJ | j                         sJ t        d	      } | j                         sJ t        d
      } | j                         sJ t        dddt        dz  dt        z  z   dz   t        t        dz   dz  ddt        ddg	      } | j                         sJ | j                  d      rJ | j                         j                  d      sJ y )Nrt   r   rv   rv   r   Fr  rv   r   r   rv   ru   rv   )	rv   r   r   r   rt   r   r   r   ru   ))rx   r   r   ry   r   ))rx   r   r   )r   ry   r   r   )	rR   is_diagonalis_symmetricr"   r&   r!   r2   r3   r   r   s    r=   test_diagonal_symmetricalr(  H  s   Q<0A}}>>>>5>)))Q<0A==??Q41a=1A==??>>Q#>?AQ1Q5A;/A~~==??56A==??34A==??q!aA!aQUQJ1aAFGA>>~~u~---88:""E"222r<   c                  b   t        dt        gt         dgg      } | j                  sJ t        dt        z  t        gt         dgg      } | j                  du sJ t        t        t        gt         dgg      } | j                  J t        t        dgt         dgg      } | j                  du sJ y )Nrv   rt   F)rR   r	   is_hermitianr2   r   s    r=   test_is_hermitianr,  h  s    q!fr1g./A>>>qsAh!Q01A>>U"""q!fr1g./A>>!!!q!fr1g./A>>U"""r<   c                      t        d      j                  sJ t        t        d            j                  rJ t        t	        d            j                  rJ t        g dg      j                  rJ y )Nru   r   )rW   is_IdentityrR   r&   r%   r;   r<   r=   test_is_Identityr/  s  s_    !((((#E!H-9999#DG,8888#YK0<<<<<r<   c                  <   t        t        t        gt        t        gg      } | j                         du sJ t        g dg dg      } | j                         du sJ t        g dddt        dgg      } | j                         du sJ t        dt        d	gg      } | j                         du sJ t        g d
g      } | j                         du sJ t        dgt        gd	gg      } | j                         du sJ t        dgdgd	gg      } | j                         du sJ y )NTrv   rt   ru   rw   rx   ry   r   r   Frx   ry   r   rv   ru   r|   rt   )rR   r2   is_symbolicr+  s    r=   test_is_symbolicr4  {  s   q!fq!f-.A==?d"""lL9:A==?e###lQ1aL9:A==?d"""q!Qi[)A==?d"""i[)A==?e###qcA3_-A==?d"""qcA3_-A==?e###r<   c                      t        g dg      } | j                  du sJ t        dgdgdgg      } | j                  du sJ y )Nr|   Trv   rt   ru   F)rR   is_upperr+  s    r=   test_is_upperr7    sH    i[)A::qcA3_-A::r<   c                      t        g dg      } | j                  du sJ t        dgdgdgg      } | j                  du sJ y )Nr|   Frv   rt   ru   T)rR   is_lowerr+  s    r=   test_is_lowerr:    sH    i[)A::qcA3_-A::r<   c                  |    t        dgdgg      } t        ddgddgg      }| j                  rJ |j                  sJ y Nrv   rt   )rR   	is_squarer  s     r=   test_is_squarer>    sC    qcA3Z(A	1v1v.	/B{{?<<<r<   c                      t        ddg d      } | j                         sJ t        ddg d      } | j                         rJ y )Nrt   r#  )r   rv   r   rv   )rR   r'  r   s    r=   test_is_symmetricr@    sA    Q<0A>>Q<0A~~r<   c                  $   t        g dg dg dg      } | j                  sJ t        ddg d      } | j                  sJ t        ddg d      } | j                  du sJ | j                  du sJ t        g dg dg dg      } | j                  rJ y )	N)ru   rw   rv   )rt   rw   rx   r   ru   )	ru   rt   r   rw   rw   rv   rv   rx   rt   )	ru   rt   r   rw   rw   rv   rv   rx   rt   Fr   )rR   is_upper_hessenbergis_lower_hessenbergr  s    r=   test_is_hessenbergrD    s    iI>?A    Q#>?A    Q#?@A  E)))  E)))iI>?A$$$$$r<   c                     t        ddg       j                  sJ t        ddgddgg      j                  sJ t        t        dd            j                  sJ t        t        d            j                  rJ t        t        dgddgg      j                  d k(  sJ t        t        dgddgg      j                  dk(  sJ t        dd      } t        | dgddgg      j                  dk(  sJ y )	Nr   ru   rw   rv   Fr   T)nonzero)rR   is_zero_matrixr&   r#   r2   r   r+  s    r=   test_is_zerorH    s    1b)8888!Q!Q 01@@@@a,;;;;#CF+::::!Q!Q 01@@DHHH!Q!Q 01@@EIIIsD!A!Q!Q 01@@EIIIr<   c            
          t        t        ddg d      j                               h dk(  sJ t        dd      } t        t        dd| dddg      j                               | dhk(  sJ y )	Nrt   )r   rv   rt   ru   >   rv   rt   ru   r2   Trealr   rv   )setrR   valuesr   r   s    r=   test_valuesrN    sx    #Aq, 

&( ! ! !sA#Aq1aA, 

&(1v  r<   c                      t        t        d            } | j                  d       t        d      dz  k(  sJ | j                  d       t        d      k(  sJ | j                  d       t	        d      k(  sJ y )Nru   c                     d| z  S Nrt   r;   r   s    r=   rG   z test_applyfunc.<locals>.<lambda>  s
    !A# r<   rt   c                      yrN   r;   r   s    r=   rG   z test_applyfunc.<locals>.<lambda>  rO   r<   c                      yNrv   r;   r   s    r=   rG   z test_applyfunc.<locals>.<lambda>  rO   r<   )r^   r#   	applyfuncr&   r%   )r   s    r=   test_applyfuncrV    se    	c!f	%B<<&#a&(222<<$a000<<$Q///r<   c                      dt         gddgg} t        ddgt          dgg      }|j                         t        |       k(  sJ y )Nr   rv   )r	   r^   adjointr!   )datanss     r=   test_adjointr[    sE    q6Aq6
C
A!Q0
1C;;=F3K'''r<   c            
          t        ddg d      } t        dddt        j                  z   ddt        j                  z  z   ddt        j                  z  z   ddt        j                  z  z   g      }|j                         \  }}|| k(  sJ || k(  sJ y )Nrt   r1  rv   ru   rw   )r^   r   ImaginaryUnitas_real_imag)r   r   r   r   s       r=   test_as_real_imagr_    s    	aL	1B	a	
Q__	a!AOO"33	Aaooq1Q__#44	6
7B ??DAq7N77N7r<   c                     t        dt        dgg dg      } | j                  t        ddgt        dgddgg      k(  sJ | j                  t        dt         dgg dg      k(  sJ | j                  | j                         k(  sJ | j                  | j                  j                  k(  sJ | j                  t        ddgt         dgddgg      k(  sJ y )Nr   rx   rv   rt   r   rv   rt   )r^   r	   Tr!   r   	conjugateHMs    r=   test_conjugaterg    s    q!Qi 	A 33&1a&a&a&" # # # # 33&1qb!*$& ' ' ' '33!++-33!##%%<<33&Aq'2q'q'# $ $ $ $r<   c                      t        t        t        t        d      gg      } | d   dt        z  k7  sJ | j                         t	        dt        z  gg      k(  sJ y )NF)evaluater   rt   )r^   r   r2   doitr!   r+  s    r=   	test_doitrk    sO    s1a%89:;AQ41Q3;;668v!ug&&&r<   c                       t        ddt        d      dg       t         fdt        d      D              sJ t         fdt        d      D              sJ t         fdt        d      D              sJ y )Nrt   rv   rx   ry   c              3   l   K   | ]+  }j                         |   |   j                         k(   - y wrA   evalf.0rE   r   s     r=   	<genexpr>ztest_evalf.<locals>.<genexpr>  s*     >qwwy|qtzz|+>s   14c              3   p   K   | ]-  }j                  d       |   |   j                  d       k(   / ywrt   Nrn  rp  s     r=   rr  ztest_evalf.<locals>.<genexpr>  s.     @!qwwqz!}!

1-@   36c              3   p   K   | ]-  }j                  d       |   |   j                  d       k(   / ywrt  rI   rp  s     r=   rr  ztest_evalf.<locals>.<genexpr>  s.     8!qss1vayAaDFF1I%8ru  )r^   r   allr   r+  s   @r=   
test_evalfrx    sa    QDGQ<0A>U1X>>>>@uQx@@@@8uQx8888r<   c            	         t        t        t        t        z   z  dgt        t        z   t        z  t        z  t        t        t        t        t        z   z  z   z  gg      } | j                         }|t	        t        t        z  t        dz  z   dgt        t        dz  z  t        t        dz  z  z   t        t        z  t        t        dz  z  z   t        dz  z   gg      k(  sJ t        dd      }t        ddt        t        |z        g      j                  d      t	        t        |      t        t        |      z  z   g      k(  sJ y )Nrt   ru   r   TrJ  rv   )complex)
r^   r2   r3   r   r!   r   r   r	   r   r   )r   r   r   s      r=   test_expandr{     s   	1q5	1~!a%Aq!aQi-?P/QR	SB	B
A#1*a1QT6AadF?AaC!AqD&L1a4,?@AC C C C 	sA1s1Q3xj1888F3q6Ac!fH$%&' ' 'r<   c            	      (   t        t        t              dz  t        t        dz        gt        t        dz        t        t              dz  z  t        t        dz        t        t              dz  z  gg      } | j                  t        j                  t              t        j                  t              z        }|t        t        dz  t        t              gt        dz  t        t              z  t        dz  t        t              z  gg      k(  sJ | j                  t        j                  t              t        j                  t              z        }|t        t        dz  t        gt        t        dz  z  t        dz  t        z  gg      k(  sJ | j                  t        j                  t              t        j                  t              z        }|t        t        dz  t         gt         t        dz  z  t        dz   t        z  gg      k(  sJ y rQ  )r^   r   r2   r   r3   refiner   rK  r!   positivenegativer   s     r=   test_refiner    su   	A	41:6q!t*SVQY&QT
3q619(<=? 
@B	166!9qvvay(	)B!Q$A!Q$s1v+q!tCF{)CDEEEE	1::a=1::a=0	1B!Q$Qq!tVQT!V$456666	1::a=1::a=0	1B!Q$qbAg1uQw%789999r<   c                      t        dt              \  t        ddfd      } t        ddfd      }|j                        }|| k(  sJ y )NF, Gclsrt   c                      | |z         S rA   r;   )rE   rF   Gs     r=   rG   ztest_replace.<locals>.<lambda>      !A# r<   c                      | |z         S rA   r;   rE   rF   Fs     r=   rG   ztest_replace.<locals>.<lambda>  r  r<   r   r   r^   replace)Krf  Nr  r  s      @@r=   test_replacer    sK    6x(DAqQ#67AQ#67A			!QA6M6r<   c                  T   t        dt              \  } t        dd | d       d       | d      if | d       d       | d      if | d       d       | d      if | d       d       | d      ifg      }t        ddfd      }|j                  | d      }||k(  sJ y )Nr  r  rt   r   rv   c                      | |z         S rA   r;   r  s     r=   rG   z"test_replace_map.<locals>.<lambda>&  r  r<   Tr  )r  r  rf  r  r  s       @r=   test_replace_mapr  "  s    6x(DAqQQqTAaD!A$<$81Q4!A$!:NQRSTQUXYZ[X\PQRSPTXV QWYZ[\Y]`abc`dfghifj_kXl$n 	oAQ#67A			!QA6M6r<   c                  H   t        ddgddgg      } | | j                  d      cxk(  r| j                  d      k(  sJ  J | j                  d      | j                  d      cxk(  r$| j                  d      cxk(  rt        d      k(  sJ  J | j                  d      | j                  d	      cxk(  r$| j                  d
      cxk(  rt        d      k(  sJ  J | j                         | j                  d      cxk(  r$| j                  d      cxk(  rt        d      k(  sJ  J y )Nrv   rt   ru   rw   r   r   ry   ))rw   ru   rt   rv   r   r   ))rt   rw   rv   ru   i)ru   rv   )rw   rt   )r!   rot90r  s    r=   
test_rot90r  +  s    AA A
(aggaj(((((771:N
Nf=M6NNNNNN771:N
Nf=M6NNNNNN779Nqwwr{Nf=M6NNNNNNr<   c                     t        d      } t        d      }t        dt        z  dt        z  z   t        t        t        z  z   t        z  g |t              t         |t              z  z    |t              z  dd| z  t        | t        z        | z  z
  z  t        z  gg      }|j                         t        t        t        z   t        t        z  z  dt        z   gdt        z   dddt        t        | z        z  z
  t        | z  z  z  gg      k(  sJ dt        z   dz  }t        |gg      }|j                         t        |gg      k(  sJ |j                  t              t        |j                  t              gg      k(  sJ t        ddgddgg      }d|j                         z  j                         t        dd	      k(  sJ y )
NrJ   frv   rt   )ratio   ru   rw   "   )r   r   r^   r2   r3   r   r   r  r!   r   tracer   )rJ   r  rf  eqr   s        r=   test_simplifyr  2  s   sAA1Q319q1Q3wRSmVQ4!AaD&=!A$&QqS3q2v;q=-@(AB(FHJ 	KA::<6a!ea!e_QQRU#T$%E1q1SAY;A.F+GI#K L L L L
a%!BrdV$A::<6B4&>)))::B:6BKKbK,A+B*C#DDDD 	Q!Q !AqwwyM##%!R888r<   c                  0   t        dt        gt        dgg      j                  t        d      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dgt        dgg      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dft        dfg      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dt        di      t        ddgddgg      k(  sJ t        t        t        z  gg      j                  t        t        dz
  t        t        dz
  id	      t        t        dz
  t        dz
  z  gg      k(  sJ y )
Nrv   rw   rx   rt   r   r   r  T)simultaneous)r^   r2   subsr!   r3   r;   r<   r=   	test_subsr  D  s   !Q!Q 0166q!<AQRTUPVGW@XXXX!Q!a% 45::QGaW;MNB7RG$%& & &!Q!a% 45::QGaW;MNB7RG$%& & &!Q!a% 45::Ar1b>JB7RG$%& & &!A#(--q!a%AE.BQU-VQUQUO$%&' ' 'r<   c                  V    t        g dg dg dg      } | j                         dk(  sJ y )Nr   )r   rx   r   )r   r   r      )r^   r  re  s    r=   
test_tracer  P  s-    i 	A 779??r<   c                  &   t        dt        gt        dgg      j                  t        di      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dt        di      t        ddgddgg      k(  sJ y )Nrv   rw   rx   rt   r   r   r  )r^   r2   xreplacer!   r3   r;   r<   r=   test_xreplacer  W  s    !Q!Q 01::Aq6BAq6Aq6"#$ $ $!Q!a% 45>>2q"~NB7RG$%& & &r<   c                     t        ddg d      t        t        fd       t        t        fd       j	                  ddgddgg      } j                  ddgddgg      | cxk(  rt        g d	g d
g dg      k(  sJ  J j                  ddgddgg      } j                  ddgddggd      | cxk(  rt        g dg dg dg      k(  sJ  J j                  ddgddggd      } j                  ddgddggdd      | cxk(  rt        g dg dg dg      k(  sJ  J j                  g d      t        g d	g d
g dg      k(  sJ ddlm	} j                   |g d            t        g d	g d
g dg      k(  sJ y )Nru   rw   )rv   rt   ru   rw   rx   ry   r   r   r   r   r      c                  ,     j                  ddgg      S )Nr   rx   )permuter+  s   r=   rG   ztest_permute.<locals>.<lambda>a  s    qyy1a&2 r<   c                  8     j                  t        d            S )Nr2   )r  r   r+  s   r=   rG   ztest_permute.<locals>.<lambda>b  s    qyy5 r<   r   rt   rv   r2  )r   r   r   r  r1  r~   )orientation)rt   ru   rv   rw   )ry   r   rx   r   )r   r   r   r  backward)	direction)r  r  )ru   rv   rt   rw   )r   rx   ry   r   )r   r   r   r  )rv   rt   r   ru   )Permutation)
r^   r/   r   
ValueErrorpermute_rowsr  r!   permute_colssympy.combinatoricsr  )r   r  r   s     @r=   test_permuter  ^  s   Q#JKA
:23
:56	AA'(A99q!fq!f%&! >v,;,;,;7= 0> > > > > >
 	
AA'(A99q!fq!f%69:a ."+++$- .. . . . . 	
AA':>A99q!fq!f%6Z9PTU ."+++$- .. . . . . 99\"f,;,;,;.= '> > > >
 099[./6,;,;,;;= 4> > > >r<   c                  >   t        g dg dg dg dg      } | j                  d      }|t        g dg dg dg dg      k(  sJ | j                  d      }|t        g dg dg dg dg      k(  sJ | j                         }|t        g dg dg dg dg      k(  sJ y )Nrv   rv   rv   rv   rt   )r   r   rv   rv   )r   r   r   rv   r   r   r   r   r   )r   rv   rv   rv   )r^   upper_triangular)r   Rs     r=   test_upper_triangularr    s    	 	A 	
1A$$$$$	&     	
2A$$$$$	&     	
A$$$$$	&    r<   c                  >   t        g dg dg dg dg      } | j                         }|t        g dg dg dg dg      k(  sJ | j                  d      }|t        g dg dg dg dg      k(  sJ | j                  d      }|t        g dg dg dg dg      k(  sJ y )Nr  )rv   r   r   r   )rv   rv   r   r   )rv   rv   rv   r   rt   r   r  )r^   lower_triangularrg   )r   Ls     r=   test_lower_triangularr    s    $$$$	 	A 	
A$$$$$	&& ' ' ' ' 	
1A$$$$$	&     	
2A$$$$$	&    r<   c                      t        ddgt        t        gg      } t        |       t        ddgt	        t              t	        t              gg      k(  sJ y )Nrv   r   rt   )rg   r2   r3   absr   r   s    r=   test_absr    sG    q"g1v./Aq6)Aq6CFCF3C*DEEEEr<   c            	      F    t        g dt        t        t        gdt        z  dt        t        z  gg         z   t        g ddt        z  dt        z  dt        z  gdt        z  ddt        z  t        z  gg      k(  sJ t        ddddg      t	        t
         fd       y )	Nr|   rt   i)rt   rw   ry   rw   irv   c                       z   S rA   r;   r   rJ   s   r=   rG   ztest_add.<locals>.<lambda>  s    q1u r<   )rg   r2   r3   r4   r/   r   r  s   @@r=   test_addr    s    i!QQqS#qsODEAq5()ac1Q3!_qsDRSTURUVWRWFX)YZZZZQAq6*A
:}%r<   c                  >   t        d      t        d      t        t        fd       t        t        fd       z  } | d   dk(  sJ | d   dk(  sJ | d	   d
k(  sJ | d   d
k(  sJ | d   dk(  sJ | d   dk(  sJ 	 t	        d       | d   dk(  sJ | d   dk(  sJ | d	   d
k(  sJ | d   d
k(  sJ | d   dk(  sJ | d   dk(  sJ j                  |       }|t        |       k(  sJ |d   dk(  sJ |d   dk(  sJ |d	   dk(  sJ |d   d
k(  sJ |d   dk(  sJ |d   dk(  sJ t        t        fd       t        d      z  } t        | t               sJ | d   t        k(  sJ | d   dt        z  k(  sJ | d	   dt        z  k(  sJ | d   dk(  sJ t        z  }| |k(  sJ dz  } t        | t               sJ | d   dk(  sJ | d   dk(  sJ | d	   dk(  sJ | d   dk(  sJ 	 t	        d       t        | t               sJ | d   dk(  sJ | d   dk(  sJ | d	   dk(  sJ | d   dk(  sJ t        t        dd            }t        dd       }t        |||g      }|j                  |      t        |g|g|gg      k(  sJ y # t
        $ r Y w xY w# t
        $ r Y qw xY w)N)r   r  r%  )r   )ru   r   c                       z  S rA   r;   r   r   s   r=   rG   z%test_multiplication.<locals>.<lambda>  s    qs r<   c                       i z  S rA   r;   r+  s   r=   rG   z%test_multiplication.<locals>.<lambda>  s    ad r<   r   r   r   rt   r   ry   rz   )rt   r      r  r   z	c = a @ brw   c                  &     j                        S rA   )multiply_elementwiser  s   r=   rG   z%test_multiplication.<locals>.<lambda>  s    q55a8 r<   r2   ru   rx   r      z	c = 5 @ brv   )rg   r/   r   	TypeErrorevalSyntaxErrorr  r$   r   
isinstancer2   r!   r%   r   )r   hc2r   _hr   r   r   s         @@r=   test_multiplicationr    sf     	A 	  	A
 :{#
9l#	!AT7a<<T7a<<T7a<<T7a<<T7b==T7a<<
[ w!||w!||w!||w!||w"}}w!||	q!A+Aq1111T7a<<T7a<<T7b==T7a<<T7a<<T7a<<
:89	F3KAa-...T7a<<T7ac>>T7ac>>T7a<<	
QB7N7	AAa-...T7a<<T7c>>T7c>>T7a<<	[ !1222w!||w#~~w#~~w!|| 	tAqzA
1a.BB|A!!!$			0 )   i  N  s$   J  %J  	JJ	JJc                  "   t        ddgddgg      } | j                  d      t        k(  sJ | j                  d      t        k(  sJ 	 t	        d       	 t	        d       y # t
        $ r Y t        $ r Y "w xY w# t
        $ r Y y t        $ r Y y w xY w)Nrv   rt   ru   rw   z2 @ aza @ 2)r!   
__matmul__NotImplemented__rmatmul__r  r  r  r+  s    r=   test_matmulr  #  s    AA A<<?n,,,==~---WW      s0   A A8 	A5*A54A58	BBBc                       G d dt               } t        ddgddgg      } |        }||z  t        |d|z  gd|z  d|z  gg      k(  sJ ||z  t        |d|z  gd|z  d|z  gg      k(  sJ y)zd
    Test that if explicitly specified as non-matrix, mul reverts
    to scalar multiplication.
    c                       e Zd ZdZdZdZy)test_non_matmul.<locals>.fooFrz   N)r8   r9   r:   	is_Matrixis_MatrixLiker   r;   r<   r=   foor  A  s    	r<   r  rv   rt   ru   rw   N)r   r!   )r  r   r   s      r=   test_non_matmulr  <  s    
d 
 	AA AAQ3&1ac(QqS!A#J/0000Q3&1ac(QqS!A#J/0000r<   c                     t        t        d        t        ddgddgg      } | dz  d d  dk(  sJ t        g dg dg d	g      } | dz  d d  d
k(  sJ | dz  t        d      k(  sJ | dz  | k(  sJ t        dgg      dz  d   ddz  k(  sJ t        ddgddgg      t	        d      z  t        ddgddgg      k(  sJ t        ddgddgg      } | j                  dd      | j                  dd      k(  sJ y )Nc                      t        d      dz  S )Nr   rt   r!   r;   r<   r=   rG   ztest_power.<locals>.<lambda>M  s    ): r<   rt   ru   rw   rx   )i  i  i,*  i7  )rt   rv   ru   )rw   rt   rw   )ry   r  rv   )	i"  i     i  i  ip  i  i  i  r   rv   d   r   r   r   r        cayley)methodmultiply)r/   r   rg   r#   r
   r!   powr  s    r=   
test_powerr  L  s-   
!:;q!fq!f-.AqD!92222iJ?@AqD!9EEEEa43q6>>a4199 1#'3.5C???!Q!Q 0171:=AUXY[]W^aceg`hViAjjjj1qe}A55H5%r*)EEEEr<   c                  L    t        ddddg      } |  t        ddddg      k(  sJ y )Nrv   rt   r   r   rj   rI   s    r=   test_negr  Z  s2    QAq6*A2%aRH5555r<   c                  P    t        ddddg      } | | z
  t        ddddg      k(  sJ y )Nrv   rt   r   rj   rI   s    r=   test_subr  _  s4    QAq6*Aq5(A1v6666r<   c            	          t        ddddg      } | dz  t        ddt        j                  t        d      dz  g      k(  sJ y r<  )rg   r   r   rI   s    r=   test_divr  d  sA    QAq6*AQ3&q!affad1f-=>>>>r<   c                  B   t        t        j                  dd            g dk(  sJ t        t        j                  d            g dk(  sJ t        t        j                  d            t        k(  sJ t        t        j                  dt                    t        k(  sJ y )Nrt   r$  r  )r   rp   r#   typer!   r;   r<   r=   test_eyer  i  s    !%%a+,<<<!%%a()\999!%%a()->>>>!%%aV%45???r<   c                     t        t        j                  dd            g dk(  sJ t        t        j                  d            g dk(  sJ t        j                  dd      t        g dg dg      k(  sJ t	        t        j                  d            t        k(  sJ t	        t        j                  dt                    t        k(  sJ y )Nrt   r  ru   rv   rv   rv   r  )r   rp   r%   r!   r  r;   r<   r=   	test_onesr  p  s    !&&q!,-===!&&q)*l:::!!!Q'69i2H+IIII!&&q)*.????!&&qf&56&@@@r<   c                     t        t        j                  dd            g dk(  sJ t        t        j                  d            g dk(  sJ t        j                  dd      t        g dg dg      k(  sJ t	        t        j                  d            t        k(  sJ t	        t        j                  dt                    t        k(  sJ y )Nrt   r  ru   r   r  )r   rp   r&   r!   r  r;   r<   r=   
test_zerosr   x  s    !''1-.,>>>!''*+|;;;""1a(FIy3I,JJJJ!''*+/@@@@!''v'676AAAr<   c                  	    t         j                  t        ddgddgg       t        dt        gt        dgg      t        dt        dgt        dt
        gt        t        t
        gg              t        g dg ddddt        ddgddt        dddgdddddt        gddddt        dgg      k(  sJ         t        g dg ddddt        dddgddt        ddddgdddddt        dgddddt        dt
        gddddt        t        t
        gg      k(  sJ         t        g dg ddddt        dddgddt        dt
        ddgddt        t        t
        ddgddddddt        gdddddt        dgg      k(  sJ t        t        t        t
        g       t        ddgdd	gg      t        d
dgg        d      t        t        dddddgt        dddddgt
        dddddgg dg dg dg dg      k(  sJ t        t         fd        d      t        dgg      k(  sJ  dd      t        ddgddgg      k(  sJ  dd      t        ddgddgg      k(  sJ  ddd      t        ddgddgddgg      k(  sJ  ddg t        ddgddgg      k(  sJ  t        ddg            t        dgdgg      k(  sJ  dddgd	gd       dgddgd	ggd      cxk(  rt        ddgddgd	dgg      k(  sJ  J t         d            t         k(  sJ t         dt                    t        k(  sJ t        j                  g d      t        j                  ddd      k(  sJ t        j                  g dd      j                  dk(  sJ t        j                  g dg      j                  dk(  sJ t        j                  g dgd      j                  dk(  sJ t        j                  g dgg      j                  dk(  sJ t        j                  t        dd      dd      t        g dg dg      k(  sJ t        j                  t        dd      dd      t        ddgddgddgddgg      k(  sJ y )Nrv   rt   ru   )rv   rt   r   r   r   r   )rt   ru   r   r   r   r   r   )rv   rt   r   r   r   r   r   )rt   ru   r   r   r   r   r   rw   rx   ry   r   )r   r   r   r   r   r   )r   r   rv   rt   r   r   )r   r   ru   rw   r   r   )r   r   r   r   rx   ry   c                        dd      S )Nr   rx   r}   r;   r   r   r   r"   s   r=   rG   z test_diag_make.<locals>.<lambda>  s    tAq!QQ7 r<   r  )r~   )r}   r~   F)unpackr  r|   r  r  )r   r   rv   r   )r   r   r   rt   )rp   r"   r!   r2   r3   r4   r/   r  r  r   r%   r  s   @@@@r=   test_diag_maker    sT   !!DAA AAA AAq	Aq!9q!Qi01A1a=F	
Aq!Q	
Aq!Q	
Aq!Q	
Aq!Q$     1a=F	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1$     1a=F	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1$     	1ayAAA AAxA 1av	
Aq!Q	
Aq!Q	
Aq!Q'      :787fqcUm###?fq!fq!f%56666?fq!fq!f%56666"fq!fq!fq!f-E&FFFF!Q=F	
A	
A$     1v6	
	
+ $    QFAu-1#1vs#E26<	
A	
A	
A> 7    
 Q=----QF#$...;;y!V[[Aq%9999;;y/55???;;	{#))V333;;	{51776AAA;;}%++v555;;tAqz1a(F4 -    ;;tAqz1a(F	
A	
A	
A	
A	4 -   r<   c                     t        ddt        d            j                         } | j                  d      k(  sJ t        |       dk(  sJ t        j                  d            dk(  sJ t        j                  d            dk(  sJ t        j                  d	            d
k(  sJ t	        j                               t	              k(  sJ t        ddddi      }t	        |j                               t	        |      k(  sJ t	              t	        |      k7  sJ t        t        fd       t        t        fd       t        t        fd       t        d	d      }t        t        d|j                  z
  |j                        D ci c]  }|t        |j                  |             c}      |k(  sJ y c c}w )Nru   r   r   )r   rw   r   rv   )rv   rx   r   )ru   r   rt   )rt   rz   c                  &     j                  d      S r   diagonalr   s   r=   rG   ztest_diagonal.<locals>.<lambda>  s    qzz!} r<   c                  &     j                  d      S )Nr  r	  r   s   r=   rG   ztest_diagonal.<locals>.<lambda>  s    qzz"~ r<   c                  .     j                  t              S rA   )r
  r   r   s   r=   rG   ztest_diagonal.<locals>.<lambda>  s    qzz"~ r<   )r!   r   r
  tupler  r'   r/   r  r%   r(   r}   r~   r   )r   srf  rE   r   s       @r=   test_diagonalr    s   q!U1XA	

A

18y   A6)))B F***A4'''

a(((QFA;'A

a(((7d1g
:,-
:-.
:-.Q
Aqx(* d1::a=)) * +./0 0 0 *s   "F?c                     t         j                  dd      t         j                  dd      cxk(  rkt         j                  dd      cxk(  rPt         j                  ddd      cxk(  r4t         j                  ddd      cxk(  rt        g dg d	g d
g      k(  sJ  J t         j                  ddd      t        g dg dg dg      k(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t         j                  dd      t         j                  dd      k(  sJ y )Nru   rt   
eigenvalue)sizer  upper)band)r  eigenvalr  )rt   rv   r   )r   rt   rv   r   lower)rt   r   r   ra  r   c                  ,    t         j                  d      S rQ  rp   jordan_blockr;   r<   r=   rG   z#test_jordan_block.<locals>.<lambda>  s    0==a@ r<   c                  .    t         j                  dd      S )Ng      @rt   r  r;   r<   r=   rG   z#test_jordan_block.<locals>.<lambda>  s    0==c1E r<   c                  .    t         j                  d      S )Nrt   r  r  r;   r<   r=   rG   z#test_jordan_block.<locals>.<lambda>  s    0===K r<   c                  0    t         j                  dd      S )Nrt   rw   )r  r  r  r;   r<   r=   rG   z#test_jordan_block.<locals>.<lambda>  s    **q + " r<   )r  r  )rp   r  r!   r/   r  r;   r<   r=   test_jordan_blockr    sV   ))!Q/3D3Q3QRS`a3Q3b  --1-C --a-A !--q . 2
       ))!QW)=I B       
 :@A
:EF
:KL
:"#
 ))qQ)?&&A&:; ; ;r<   c            	         t        ddgddgg      } | j                  t        dgdgg            t        dgdgg      gk(  sJ | j                  t        dgdgg      d      t        dt        d      z  dz  gt        d      dz  gg      gk(  sJ | j                  t        dgdgg      t        dgdgg            t        dgdgg      t        t        d	d      gt        d
d      gg      gk(  sJ | j                  t        dgdgg      t        dgdgg            t        dgdgg      gk(  sJ | j                  t        dgdgg            g k(  sJ t        g dg dg dg      }t        dgdgg      t        dgdgg      t        dgdgg      g |j                   t        dgdgg      t        t        dd      gt        dd      gg      gk(  sJ t        g d      t        g d      t        g d      gt	        t
        fd       t        g d      t        g d      t        g d      gt	        t
        fd       y )Nrv   rt   ru   rw   T)	normalizerx   r   iry   r   )r   rv   r   )ru   ry   r   )r   rx   rt   r   r         r   r|   )rv   rw   rx   c                  .    t        j                   ddiS N	rankcheckTr!   orthogonalizevecss   r=   rG   z$test_orthogonalize.<locals>.<lambda>      v33TJTJ r<   r{   r   c                  .    t        j                   ddiS r$  r&  r(  s   r=   rG   z$test_orthogonalize.<locals>.<lambda>  r*  r<   )r!   r'  r   r   r/   r  )r   rJ   r)  s     @r=   test_orthogonalizer,    s`   AA A??6A3*-.6A3*3E2FFFF??6A3*-?>	!DG)A+a,	-./ / /??6A3*-vtaSk/BC	!qc
	VhsA&6%7(1a.9I$JKLM M M??6A3*-vtaSk/BC	"s	  ??6A3*-."444	:y12ARD1#;"s!4frdRD\6JKD1??D!	"s	fx2&7(2r:J9K%LMNO O O 9vi0&2CDD
:JK9vi0&2CDD
:JKr<   c                  \   t        j                  d      \  } }| t        g dg dg dg      k(  sJ |t        g dg dg dg      k(  sJ t        j                  d      \  } }| t        g dg dg d	g d
g dg dg dg      k(  sJ |t        g dg dg dg d
g dg dg dg      k(  sJ y )Nrv   )r   rv   r   )rv   r   rv   )r   rv   rv   )rv   rv   r   ru   )r  rv   r   r   r   r   r   )rv   r   rv   r   r   r   r   )r   rv   r   rv   r   r   r   )r   r   rv   r   rv   r   r   )r   r   r   rv   rv   rv   r   )r   r   r   r   rv   rt   rv   )r   r   r   r   r   rv   ru   )ru   rv   r   r   r   r   r   )rv   rt   rv   r   r   r   r   )r   rv   rv   rv   r   r   r   )r!   	wilkinson)wminuswpluss     r=   test_wilkinsonr1    s    $$Q'MFEV * ) )+ , , , , F%%%' ( ( ( (
 $$Q'MFEV 8 7 7 7 7 7         F11111113 4 4 4 4r<   c                      t        d      \  } }t        dd| |g      }|j                  |       t        ddddg      k(  sJ y )Nx yrt   rv   r   )r   rr   diffr!   r2   r3   r   s      r=   	test_diffr6  :  sD    5>DAq1a!Q(A66!9q!aV,,,,r<   c                      t        d      \  } }t        dd| |g      }|j                  |       t        dd| dz  dz  || z  g      k(  sJ y )Nr3  rt   rv   )r   rr   	integrater!   r5  s      r=   test_integrater9  B  sP    5>DAq1a!Q(A;;q>VAq1a461Q3-8888r<   c            	         t        d      \  } }t        dd| t        |      z  | t        |      z  | dz  g      }t        dd| |g      }t	        t        |      |  t        |      z  gt        |      | t        |      z  gd| z  dgg      }|j                  |      |k(  sJ t        ddg d      t        ddg d      t        t        fd       t        t        fd	       y )
Nzrho,phiru   rv   rt   r   r1  rw   c                  <     j                  t        ddg            S r<  )jacobianr!   r   s   r=   rG   z test_jacobian2.<locals>.<lambda>U  s    ajjA8 r<   c                  &    j                         S rA   )r<  r  s   r=   rG   z test_jacobian2.<locals>.<lambda>V  s    bkk!n r<   )r   rr   r   r   r!   r<  r/   r  )rhophiXYJr   r   s        @@r=   test_jacobian2rC  H  s    y!HC1a#c#h,CHc1f!EFA1a#s,A	SC4C=!	SCCL!cEq! 	A
 ::a=A1a.A	Aq,	/B
989
9,-r<   c            	          t        d      \  } }t        ddd| z  |g      }|j                  | d      t        ddt	        dd      |g      k(  sJ y )Nr3  rt   rv   rx   )r   rr   limitr!   r   r5  s      r=   
test_limitrF  Y  sQ    5>DAq1a!A#q*A771a=F1a(1a.!)<====r<   c                       t        g dg dg dg       g dt        t         fd       t        t         fd       y )Nr|   r{   r   r  c                       z  S rA   r;   rf  vs   r=   rG   z"test_issue_13774.<locals>.<lambda>b      ac r<   c                       z  S rA   r;   rI  s   r=   rG   z"test_issue_13774.<locals>.<lambda>c  rK  r<   )r!   r/   r  rI  s   @@r=   test_issue_13774rM  _  s-    	9i01AA
9k"
9k"r<   c                  :   t        d      t        d      t        t        d        t        t        fd       t        t        fd       t        t        fd       t        d      \  } }}t	        j
                  t        d| g            t	        |  g      k(  sJ t	        j
                  t        d|| g            t	        d	|  gd| gg      k(  sJ t	        j
                  t        d||| g            t	        d	d	|  gdd	| gd	d| gg      k(  sJ y )
Nr2   r3   c                  ,    t        j                  d      S rT  )r!   	companionr;   r<   r=   rG   z test_companion.<locals>.<lambda>h  s    v//2 r<   c                  D    t        j                  t        dg             S rT  r!   rP  r-   r   s   r=   rG   z test_companion.<locals>.<lambda>i  s    v//aS!= r<   c                  F    t        j                  t        ddg             S r  rR  r   s   r=   rG   z test_companion.<locals>.<lambda>j  s    v//aVQ@ r<   c                  L    t        j                  t         z   g            S rA   rR  )r2   r3   s   r=   rG   z test_companion.<locals>.<lambda>k  s!    v//QqS1a&0AB r<   zc0:3rv   r   )r   r/   r  r   r!   rP  r-   )c0c1r  r2   r3   s      @@r=   test_companionrW  e  s   sAsA
:23
:=>
:@A
:BCJBBD!R!,-">>>D!Ra01RC1rc(#$% % %D!RR!45AsaRC[1a"+678 8 8r<   c            	      P   t        d      \  } }}t        | ||g      }|j                  t        | ||gg d            }|t        dgdgdgg      k(  sJ t        | | | | | g| | | | | g| | | | | gg      }|j                  t        | gdg            }|t        g dg dg dg      k(  sJ y )Nzx, y zr|   rv   rt   ru   )rv   rv   rv   rv   rv   )r   r!   r  zip)r2   r3   r4   r  r  s        r=   test_issue_10589rZ  t  s    hGAq!	Aq		B	aAY	*	+B!qcA3((((	!Q1a1aAq/Aq!Q?C	DB	aS1#	B/?KLLLLr<   c                       G d dt               } t        ddg d      } | ddg d      }||z  }t        ||       sJ |t        ddgddgg      k(  sJ y )	Nc                   *    e Zd Zej                  dz   Zy)test_rmul_pr19860.<locals>.Foog{Gz?N)r8   r9   r:   r)   _op_priorityr;   r<   r=   Foor]    s    )66=r<   r_  rt   r1  r   r   r  r  )r+   r!   r  )r_  r   r   r   s       r=   test_rmul_pr19860r`  ~  sh    >" > 	q!\"AAq,A 	
!AaB"b*++++r<   c                       t        ddgddgg       t        ddgddgg      t        t         fd       t        t         fd       y )Nrv   rt   ru   rw   c                       z   S rA   r;   r   r   s   r=   rG   z"test_issue_18956.<locals>.<lambda>      a!e r<   c                       z   S rA   r;   rc  s   r=   rG   z"test_issue_18956.<locals>.<lambda>  rd  r<   )Arrayr!   r/   r  rc  s   @@r=   test_issue_18956rg    sD    1v1vA1qe}A
9m$
9m$r<   c                       G d dt               } t        ddddg      }| |        k7  sJ  G d d|       }| |       k(  sJ y )Nc                       e Zd Zd Zd Zy)test__eq__.<locals>.Myc              3      K   d d y wr<  r;   selfs    r=   __iter__ztest__eq__.<locals>.My.__iter__  s     GGs   
c                     t        |       |   S rA   )r   )rm  rE   s     r=   __getitem__z"test__eq__.<locals>.My.__getitem__  s    :a= r<   N)r8   r9   r:   rn  rp  r;   r<   r=   Myrj    s    		!r<   rq  rt   rv   c                       e Zd Zd Zy)test__eq__.<locals>.My_sympyc                     t        |       S rA   r  rl  s    r=   _sympy_z$test__eq__.<locals>.My_sympy._sympy_  s    $<r<   N)r8   r9   r:   ru  r;   r<   r=   My_sympyrs    s    	 r<   rv  )objectr!   )rq  r   rv  s      r=   
test__eq__rx    sL    !V ! 	q!aVA99 2   
??r<   N)sympy.assumptionsr   sympy.core.exprr   sympy.core.addr   sympy.core.functionr   sympy.core.kindr   r   sympy.core.numbersr	   r
   r   r   r   sympy.core.singletonr   sympy.core.symbolr   r   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   (sympy.functions.elementary.miscellaneousr   (sympy.functions.elementary.trigonometricr   r   sympy.matrices.commonr   r   r   r   r   r   r   r   r   r   sympy.matrices.matricesr    sympy.matricesr!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   sympy.polys.polytoolsr-   sympy.utilities.iterablesr.   sympy.testing.pytestr/   r0   #sympy.tensor.array.dense_ndim_arrayr1   rf  	sympy.abcr2   r3   r4   r6   rK   rP   rR   rW   r[   r^   rb   re   rg   rk   rn   rp   rr   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/  r4  r7  r:  r>  r@  rD  rH  rN  rV  r[  r_  rg  rk  rx  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,  r1  r6  r9  rC  rF  rM  rW  rZ  r`  rg  rx  r;   r<   r=   <module>r     s       ( 5 ; ; " - 4 6 9 =C C C 3    ' - . P  	 	=3	>?<L 	@6	>?<L 	@6	>?<L 	@6	 		. 	?&P!5
M&, 
P/"N. 4'*',"@*3@#=$" 
%J0($$'9
'
:O9$	'&">HBBF
&Pf21 F6
7
?
@ABL^0(;>L,4D - -9.">#8M,%r<   