
    sgD                        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 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% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZE d dlFmGZGmHZHmIZI d ZJ e       5   G d de)e*e+      ZKddd       d ZLd ZM e       5   G d de)e*e,      ZNddd       d ZOd  ZP e       5   G d! d"e)e*e-      ZQddd       d# ZRd$ ZS e       5   G d% d&e)e*e.      ZTddd       d' ZUd( ZV e       5   G d) d*e)e*e/      ZWddd        e       5   G d+ d,e)e*e1      ZXddd       d- 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 Zdn Zdo Zdp Zdq Zedr        Zds Zdt Zdu Zdv Zdw Zdx Zdy Zdz Zd{ Zy# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   zxY w# 1 sw Y   dxY w# 1 sw Y   NxY w# 1 sw Y   >xY w)|    )raisesXFAILwarns_deprecated_sympy)Q)Expr)Add)Function)
NumberKindUndefinedKind)IIntegeroopiRational)S)Symbolsymbols)Abs)exp)sqrt)cossin)
ShapeErrorNonSquareMatrixError)
MatrixKind)_MinimalMatrix_CastableMatrixMatrixShapingMatrixPropertiesMatrixOperationsMatrixArithmeticMatrixSpecial)MatrixCalculus)Matrixdiageyematrix_multiply_elementwiseoneszerosSparseMatrixbandedMutableDenseMatrixMutableSparseMatrixImmutableDenseMatrixImmutableSparseMatrix)Poly)flatten)ImmutableDenseNDimArray)xyzc                     ddl m} m}m}m}m}m}m} ddlm	}m
}m}	m}
m}m} ddlm}m}m}m} | |||||||||	|
||f}||||f}|D cg c]  } |ddgddgg       }}d	}|D ]Q  }|D ]&  }t)               5  t+        ||      d
u sJ 	 d d d        ( t)               5  t+        ||      du sJ 	 d d d        S y c c}w # 1 sw Y   ^xY w# 1 sw Y   oxY w)Nr   )MatrixRequiredr   r"   r   r    r!   MatrixCommon)MatrixDeterminantMatrixReductionsMatrixSubspacesMatrixEigenr#   MatrixDeprecated)r$   ImmutableMatrixr*   r/                TF)sympy.matrices.commonr7   r   r"   r   r    r!   r8   sympy.matrices.matricesr9   r:   r;   r<   r#   r=   sympyr$   r>   r*   r/   r   
isinstance)r7   r   r"   r   r    r!   r8   r9   r:   r;   r<   r#   r=   r$   r>   r*   r/   
all_mixinsall_matricesMMstmixins                          Y/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/tests/test_commonmatrix.py!test_matrix_deprecated_isinstancerO   '   s%   
     	J  		L (4	4!!aVaV
	4B	4
A 1 	4A') 4!!U+t3334 4	4 $% 	1a'5000	1 	1	1 
5
4 4	1 	1s   B85B=C	=C	C	c                       e Zd Zy)ShapingOnlyMatrixN__name__
__module____qualname__rC       rN   rQ   rQ   i       rV   rQ   Nc                     t        | | d       S )Nc                     t        | |k(        S Nintijs     rN   <lambda>zeye_Shaping.<locals>.<lambda>n   s    AF rV   rQ   ns    rN   eye_Shapingrd   m   s    Q#;<<rV   c                     t        | | d       S )Nc                      yNr   rC   r]   s     rN   r`   zzeros_Shaping.<locals>.<lambda>r       rV   ra   rb   s    rN   zeros_Shapingri   q   s    Q>22rV   c                       e Zd Zy)PropertiesOnlyMatrixNrR   rC   rV   rN   rk   rk   v   rW   rV   rk   c                     t        | | d       S )Nc                     t        | |k(        S rZ   r[   r]   s     rN   r`   z eye_Properties.<locals>.<lambda>{       3qAv; rV   rk   rb   s    rN   eye_Propertiesrp   z       1&>??rV   c                     t        | | d       S )Nc                      yrg   rC   r]   s     rN   r`   z"zeros_Properties.<locals>.<lambda>   rh   rV   ro   rb   s    rN   zeros_Propertiesrt   ~       1n55rV   c                       e Zd Zy)OperationsOnlyMatrixNrR   rC   rV   rN   rw   rw      rW   rV   rw   c                     t        | | d       S )Nc                     t        | |k(        S rZ   r[   r]   s     rN   r`   z eye_Operations.<locals>.<lambda>   rn   rV   rw   rb   s    rN   eye_Operationsr{      rq   rV   c                     t        | | d       S )Nc                      yrg   rC   r]   s     rN   r`   z"zeros_Operations.<locals>.<lambda>   rh   rV   rz   rb   s    rN   zeros_Operationsr~      ru   rV   c                       e Zd Zy)ArithmeticOnlyMatrixNrR   rC   rV   rN   r   r      rW   rV   r   c                     t        | | d       S )Nc                     t        | |k(        S rZ   r[   r]   s     rN   r`   z eye_Arithmetic.<locals>.<lambda>   rn   rV   r   rb   s    rN   eye_Arithmeticr      rq   rV   c                     t        | | d       S )Nc                      yrg   rC   r]   s     rN   r`   z"zeros_Arithmetic.<locals>.<lambda>   rh   rV   r   rb   s    rN   zeros_Arithmeticr      ru   rV   c                       e Zd Zy)SpecialOnlyMatrixNrR   rC   rV   rN   r   r      rW   rV   r   c                       e Zd Zy)CalculusOnlyMatrixNrR   rC   rV   rN   r   r      rW   rV   r   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 )Nr@   rA   )r?   r@   rA   rB         r?   r?   r   r?   rB   r   r   r?   r@   rA   )r   r   rB   r   )r   rowscolslistr3   s    rN   test__MinimalMatrixr      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=>>=rV   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 )Nr?   r@   rA   rB   r   )r$   kindr   r
   r3   r   r*   rC   rV   rN   	test_kindr      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OrV   c                      t        ddg d      } | j                         }|j                  dk(  sJ t        d      D ]  }||   |dz   k(  rJ  y )Nr@   )r?   rA   r@   rB   r?   rB   )rQ   vecr   range)mm_vecr^   s      rN   test_vecr      sT    !Q-AEEGE::??1X !Qx1q5   !rV   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   r?   r?   r   r   )r   r,   r.   r-   r/   todok)abcdm1m2m3m4s           rN   
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 5rV   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 )Nr@   rA   rB   )	r   OneHalfr3   r4   Zeror5   rQ   tolist)lstflat_lstr   s      rN   test_tolistr      s    EE1661Q3'!Q1a41quufac1:M
NCqvvqsAFFAq!QT1quufac1MH!Q)A88:rV   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 )NrA   r@   r   r?   r   r?   r@   )rQ   r   r   r   r3   todod)r   dicts     rN   
test_tododr      s_    !Q!%%a[1a& ABA155zq!&&kq!f5D779rV   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 )NrA   	r?   r@   rA   rB   r   r         	   c                  &     j                  d      S Nr   row_deles   rN   r`   z"test_row_col_del.<locals>.<lambda>       qyy| rV   c                  &     j                  d      S Nr   r   s   rN   r`   z"test_row_col_del.<locals>.<lambda>       qyy} rV   c                  &     j                  d      S r   col_delr   s   rN   r`   z"test_row_col_del.<locals>.<lambda>   r   rV   c                  &     j                  d      S r   r   r   s   rN   r`   z"test_row_col_del.<locals>.<lambda>   r   rV   r@   r   r   r?   rB   r   r   r   r   r   r   r   r   )rQ   r   
IndexErrorr   r$   r   r   s   @rN   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LrV   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 Nr?   r@   rA   )r$   r3   r4   r5   get_diag_blocks)r   r   r   s      rN   test_get_diag_blocks1r      s    AA AAA AAq	Aq!9q!Qi01A1#%%%1#%%%1#%%%rV   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$   r3   r4   r5   r%   rQ   r   r   r   )r   r   r   ABCDs          rN   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)+++rV   c                  D    t        ddddg      } | j                  dk(  sJ y )Nr?   r@   r   r?   r@   )rQ   shaper   s    rN   
test_shaper     s&    !QA'A77frV   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 )NrA   r?   r   )	r?   r   r   r   r?   r   r   r   r?   rB   c                     | |z   S rZ   rC   r]   s     rN   r`   ztest_reshape.<locals>.<lambda>  s
    a!e rV   )r   rA   r?   r@   )rA   rB   r@   rA   rB   r   r@   r   ))r   r?   r@   rA   r?   r@   )rA   rB   r@   rA   rB   r   )rd   reshaper$   rQ   m0r   s     rN   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OrV   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 )NrA   r   r   r?   r   )r?   rB   r   )rQ   rowr$   colr   s    rN   test_row_colr     sO    !Q ;<A558vaI....558vaI....rV   c                  |    t        d      j                  t        g d            t        g dg dg dg      k(  sJ y )NrA   r   r   r   )r?   r   r   r   )r   r?   r   r   )r   r   r?   r   )rd   row_joinr$   rC   rV   rN   test_row_joinr     s=    q>""6)#45<! "" " "rV   c                      t        d      j                  t        g dg            t        g dg dg dg dg      k(  sJ y )NrA   r   r?   r   r   )r   r?   r   )r   r   r?   )rd   col_joinr$   rC   rV   rN   test_col_joinr   #  sB    q>""69+#679   rV   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rB   rB   rB   r   r   rB   rA   r   )r$   r   insertr1   rd   
row_insertr   r   )r4r^   ls      rN   test_row_insertr   +  so    		B2q\ N	A{1~00B7;;A>EEGHAMMMNrV   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   r   r   r   r   rB   rA   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   r@   r@   r   r?   r   )r   r   r   r@   r@   r   r   r?   )	r$   r   r   r1   ri   
col_insertr   r   rd   )c4r^   r   s      rN   test_col_insertr  3  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++++++- .. . .rV   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 )NrB   rA   c                     | dz  |z   S NrA   rC   r]   s     rN   r`   ztest_extract.<locals>.<lambda>D      QqS1W rV   )r   r?   rA   r   r?   r@   )r   r?   rA   rB   r   
   r   r   r@   )r   r   r@   r   r      c                  ,     j                  dgdg      S )NrB   r   extractr   s   rN   r`   ztest_extract.<locals>.<lambda>H      qyy!qc2 rV   c                  ,     j                  dgdg      S )Nr   rA   r  r   s   rN   r`   ztest_extract.<locals>.<lambda>I  r  rV   )rQ   r  r$   r   r   r   r   s   @rN   test_extractr  C  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3rV   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 )NrB   rA   c                     | dz  |z   S r  rC   r]   s     rN   r`   ztest_hstack.<locals>.<lambda>M  r  rV   c                     | dz  |z   S r  rC   r]   s     rN   r`   ztest_hstack.<locals>.<lambda>N      acAg rV   )	r   r?   r@   r   r?   r@   r   r?   r@   )	rA   rB   r   rA   rB   r   rA   rB   r   )	r   r   r   r   r   r   r   r   r   )	r   r  r
  r   r  r
  r   r  r
  c                  (     j                         S rZ   )hstackr   r   s   rN   r`   ztest_hstack.<locals>.<lambda>U      qxx2 rV   r   r?   r@   r   )rQ   r  r$   r   r   r)   r   r   )M1M2M3M4r   r   s       @@rN   test_hstackr  L  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;&&;rV   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 )
NrB   rA   c                     | dz  |z   S r  rC   r]   s     rN   r`   ztest_vstack.<locals>.<lambda>b  r  rV   c                     | dz  |z   S r  rC   r]   s     rN   r`   ztest_vstack.<locals>.<lambda>c  r  rV   r   r   )r   r   r   )r   r  r
  c                  (     j                         S rZ   )vstackr  s   rN   r`   ztest_vstack.<locals>.<lambda>r  r  rV   )rQ   r"  r$   r   r   r  s   @@rN   test_vstackr#  a  s    !Q 45A	1a!5	6B88Aq! 1 8 8Aq A .V + + + + + + + + + + + +M- F. . . . . . :./==?fh&&&rV   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 Nr@   r?   )rk   r3   atomsr   r   NegativeOner   r   s    rN   
test_atomsr(  w  sb    QAq!Q1W#56A779!ammQ7777776?qc!!!rV   c                  R    t        t        gdgg      j                  t        hk(  sJ y rg   )rk   r3   free_symbolsrC   rV   rN   test_free_symbolsr+  }  s%    !qc
+88QC???rV   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)r@   rA   r@   )rk   r3   r4   hasr5   r   r   s    rN   test_hasr/    si    q!ff-.A558O8uuQx<55==q!ff-.AuuQx<xrV   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 )
Nr3   r@   r?   FrA   r   Tsimplifyc                     | S rZ   rC   r   s    rN   r`   z(test_is_anti_symmetric.<locals>.<lambda>  s    ! rV   )r   rk   is_anti_symmetricr4   expandr   r   r   )r3   r   s     rN   test_is_anti_symmetricr6    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 )Nr@   r   r?   r?   r   Fr1  r?   r   r   r?   rA   r?   )	r?   r   r   r   r@   r   r   r   rA   ))r   r   r   r   r   ))r   r   r   )r   r   r   r   )	rk   is_diagonalis_symmetricr%   r)   r$   r3   r4   r5  r   s    rN   test_diagonal_symmetricalr=    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2rV   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 )Nr?   r@   F)rk   r   is_hermitianr3   r   s    rN   test_is_hermitianrA    s    q!fr1g./A>>>qsAh!Q01A>>U"""q!fr1g./A>>!!!q!fr1g./A>>U"""rV   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 )NrA   r   )rp   is_Identityrk   r)   r(   rC   rV   rN   test_is_IdentityrD    s_    !((((#E!H-9999#DG,8888#YK0<<<<<rV   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r?   r@   rA   rB   r   r   r   r   Fr   r   r   r?   rA   r   r@   )rk   r3   is_symbolicr@  s    rN   test_is_symbolicrI    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###rV   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   Tr?   r@   rA   F)rk   is_upperr@  s    rN   test_is_upperrL    sH    i[)A::qcA3_-A::rV   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   Fr?   r@   rA   T)rk   is_lowerr@  s    rN   test_is_lowerrO    sH    i[)A::qcA3_-A::rV   c                  |    t        dgdgg      } t        ddgddgg      }| j                  rJ |j                  sJ y Nr?   r@   )rk   	is_squarer  s     rN   test_is_squarerS    sC    qcA3Z(A	1v1v.	/B{{?<<<rV   c                      t        ddg d      } | j                         sJ t        ddg d      } | j                         rJ y )Nr@   r8  )r   r?   r   r?   )rk   r<  r   s    rN   test_is_symmetricrU    sA    Q<0A>>Q<0A~~rV   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)rA   rB   r?   )r@   rB   r   r   rA   )	rA   r@   r   rB   rB   r?   r?   r   r@   )	rA   r@   r   rB   rB   r?   r?   r   r@   Fr   )rk   is_upper_hessenbergis_lower_hessenbergr.  s    rN   test_is_hessenbergrY    s    iI>?A    Q#>?A    Q#?@A  E)))  E)))iI>?A$$$$$rV   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   rA   rB   r?   Fr   T)nonzero)rk   is_zero_matrixr)   r&   r3   r   r@  s    rN   test_is_zeror]    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IrV   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 )	Nr@   )r   r?   r@   rA   >   r?   r@   rA   r3   Trealr   r?   )setrk   valuesr   r   s    rN   test_valuesrc    sx    #Aq, 

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

&(1v  rV   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 )NrA   c                     d| z  S Nr@   rC   r   s    rN   r`   z test_applyfunc.<locals>.<lambda>  s
    !A# rV   r@   c                      yrg   rC   r   s    rN   r`   z test_applyfunc.<locals>.<lambda>  rh   rV   c                      yNr?   rC   r   s    rN   r`   z test_applyfunc.<locals>.<lambda>  rh   rV   )rw   r&   	applyfuncr)   r(   )r   s    rN   test_applyfuncrk    se    	c!f	%B<<&#a&(222<<$a000<<$Q///rV   c                      dt         gddgg} t        ddgt          dgg      }|j                         t        |       k(  sJ y )Nr   r?   )r   rw   adjointr$   )datanss     rN   test_adjointrp  !  sE    q6Aq6
C
A!Q0
1C;;=F3K'''rV   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 )Nr@   rF  r?   rA   rB   )rw   r   ImaginaryUnitas_real_imag)r   r   r   r   s       rN   test_as_real_imagrt  '  s    	aL	1B	a	
Q__	a!AOO"33	Aaooq1Q__#44	6
7B ??DAq7N77N7rV   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   r   r?   r@   r   r?   r@   )rw   r   Tr$   r   	conjugateHrJ   s    rN   test_conjugater{  2  s    q!Qi 	A 33&1a&a&a&" # # # # 33&1qb!*$& ' ' ' '33!++-33!##%%<<33&Aq'2q'q'# $ $ $ $rV   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   r@   )rw   r   r3   doitr$   r@  s    rN   	test_doitr  D  sO    s1a%89:;AQ41Q3;;668v!ug&&&rV   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 )Nr@   r?   r   r   c              3   l   K   | ]+  }j                         |   |   j                         k(   - y wrZ   evalf.0r^   r   s     rN   	<genexpr>ztest_evalf.<locals>.<genexpr>L  s*     >qwwy|qtzz|+>s   14c              3   p   K   | ]-  }j                  d       |   |   j                  d       k(   / ywr@   Nr  r  s     rN   r  ztest_evalf.<locals>.<genexpr>M  s.     @!qwwqz!}!

1-@   36c              3   p   K   | ]-  }j                  d       |   |   j                  d       k(   / ywr  rb   r  s     rN   r  ztest_evalf.<locals>.<genexpr>N  s.     8!qss1vayAaDFF1I%8r  )rw   r   allr   r@  s   @rN   
test_evalfr  J  sa    QDGQ<0A>U1X>>>>@uQx@@@@8uQx8888rV   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 )Nr@   rA   r   Tr_  r?   )complex)
rw   r3   r4   r5  r$   r   r   r   r   r   )r   r   r   s      rN   test_expandr  Q  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$%&' ' 'rV   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 rf  )rw   r   r3   r   r4   refiner   r`  r$   positivenegativer   s     rN   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9rV   c                      t        dt              \  t        ddfd      } t        ddfd      }|j                        }|| k(  sJ y )NF, Gclsr@   c                      | |z         S rZ   rC   )r^   r_   Gs     rN   r`   ztest_replace.<locals>.<lambda>m      !A# rV   c                      | |z         S rZ   rC   r^   r_   Fs     rN   r`   ztest_replace.<locals>.<lambda>n  r  rV   r   r	   rw   replace)KrJ   Nr  r  s      @@rN   test_replacer  k  sK    6x(DAqQ#67AQ#67A			!QA6M6rV   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  r@   r   r?   c                      | |z         S rZ   rC   r  s     rN   r`   z"test_replace_map.<locals>.<lambda>w  r  rV   Tr  )r  r  rJ   r  r  s       @rN   test_replace_mapr  s  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6M6rV   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 )Nr?   r@   rA   rB   r   r   r   ))rB   rA   r@   r?   r   r   ))r@   rB   r?   rA   i)rA   r?   )rB   r@   )r$   rot90r.  s    rN   
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NrV   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 )
Nrc   fr?   r@   )ratio   rA   rB   "   )r   r	   rw   r3   r4   r   r   r2  r$   r   tracer   )rc   r  rJ   eqr   s        rN   test_simplifyr    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8rV   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 )
Nr?   rB   r   r@   r   r   r  T)simultaneous)rw   r3   subsr$   r4   rC   rV   rN   	test_subsr    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$%&' ' 'rV   c                  V    t        g dg dg dg      } | j                         dk(  sJ y )Nr   )r   r   r   )r   r   r      )rw   r  rz  s    rN   
test_tracer    s-    i 	A 779??rV   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 )Nr?   rB   r   r@   r   r   r  )rw   r3   xreplacer$   r4   rC   rV   rN   test_xreplacer    s    !Q!Q 01::Aq6BAq6Aq6"#$ $ $!Q!a% 45>>2q"~NB7RG$%& & &rV   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 )NrA   rB   )r?   r@   rA   rB   r   r   r   r   r   r  r
     c                  ,     j                  ddgg      S )Nr   r   )permuter@  s   rN   r`   ztest_permute.<locals>.<lambda>  s    qyy1a&2 rV   c                  8     j                  t        d            S )Nr3   )r  r   r@  s   rN   r`   ztest_permute.<locals>.<lambda>  s    qyy5 rV   r   r@   r?   rG  )r   r  r
  r  rF  r   )orientation)r@   rA   r?   rB   )r   r   r   r   )r  r
  r   r  backward)	direction)r  r  )rA   r?   r@   rB   )r   r   r   r   )r
  r   r  r  )r?   r@   r   rA   )Permutation)
rw   r   r   
ValueErrorpermute_rowsr  r$   permute_colssympy.combinatoricsr  )r   r  r   s     @rN   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> > > >rV   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r?   r?   r?   r?   r@   )r   r   r?   r?   )r   r   r   r?   r   r   r   r   r   )r   r?   r?   r?   )rw   upper_triangular)r   Rs     rN   test_upper_triangularr    s    	 	A 	
1A$$$$$	&     	
2A$$$$$	&     	
A$$$$$	&    rV   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  )r?   r   r   r   )r?   r?   r   r   )r?   r?   r?   r   r@   r   r  )rw   lower_triangularr   )r   Ls     rN   test_lower_triangularr    s    $$$$	 	A 	
A$$$$$	&& ' ' ' ' 	
1A$$$$$	&     	
2A$$$$$	&    rV   c                      t        ddgt        t        gg      } t        |       t        ddgt	        t              t	        t              gg      k(  sJ y )Nr?   r   r@   )r   r3   r4   absr   r   s    rN   test_absr    sG    q"g1v./Aq6)Aq6CFCF3C*DEEEErV   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   r@   i)r@   rB   r   rB   ir?   c                       z   S rZ   rC   r   rc   s   rN   r`   ztest_add.<locals>.<lambda>  s    q1u rV   )r   r3   r4   r5   r   r   r  s   @@rN   test_addr    s    i!QQqS#qsODEAq5()ac1Q3!_qsDRSTURUVWRWFX)YZZZZQAq6*A
:}%rV   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   )rA   r   c                       z  S rZ   rC   r   r   s   rN   r`   z%test_multiplication.<locals>.<lambda>-  s    qs rV   c                       i z  S rZ   rC   r@  s   rN   r`   z%test_multiplication.<locals>.<lambda>.  s    ad rV   r   r   r   r@   r   r   r   )r@   r      r  r   z	c = a @ brB   c                  &     j                        S rZ   )multiply_elementwiser  s   rN   r`   z%test_multiplication.<locals>.<lambda>L  s    q55a8 rV   r3   rA   r   r     z	c = 5 @ br?   )r   r   r   	TypeErrorevalSyntaxErrorr  r'   r   rG   r3   r$   r(   r   )r   hc2r   _hr   r   r   s         @@rN   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)Nr?   r@   rA   rB   z2 @ aza @ 2)r$   
__matmul__NotImplemented__rmatmul__r  r  r  r@  s    rN   test_matmulr  t  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>.fooFr   N)rS   rT   rU   	is_Matrixis_MatrixLiker   rC   rV   rN   foor    s    	rV   r  r?   r@   rA   rB   N)r   r$   )r  r   r   s      rN   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0rV   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   r@   r$   rC   rV   rN   r`   ztest_power.<locals>.<lambda>  s    ): rV   r@   rA   rB   r   )i  i  i,*  i7  )r@   r?   rA   )rB   r@   rB   )r   r  r?   )	i"  i     i  i  ip  i  i  i  r   r?   d   r   r   r  r        cayley)methodmultiply)r   r   r   r&   r   r$   powr.  s    rN   
test_powerr    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ErV   c                  L    t        ddddg      } |  t        ddddg      k(  sJ y )Nr?   r@   r   r   r   rb   s    rN   test_negr    s2    QAq6*A2%aRH5555rV   c                  P    t        ddddg      } | | z
  t        ddddg      k(  sJ y )Nr?   r@   r   r   rb   s    rN   test_subr	    s4    QAq6*Aq5(A1v6666rV   c            	          t        ddddg      } | dz  t        ddt        j                  t        d      dz  g      k(  sJ y rQ  )r   r   r   rb   s    rN   test_divr    sA    QAq6*AQ3&q!affad1f-=>>>>rV   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 )Nr@   r9  r  )r   r   r&   typer$   rC   rV   rN   test_eyer    s    !%%a+,<<<!%%a()\999!%%a()->>>>!%%aV%45???rV   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 )Nr@   r  rA   r?   r?   r?   r  )r   r   r(   r$   r  rC   rV   rN   	test_onesr    s    !&&q!,-===!&&q)*l:::!!!Q'69i2H+IIII!&&q)*.????!&&qf&56&@@@rV   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 )Nr@   r  rA   r   r  )r   r   r)   r$   r  rC   rV   rN   
test_zerosr    s    !''1-.,>>>!''*+|;;;""1a(FIy3I,JJJJ!''*+/@@@@!''v'676AAArV   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 )Nr?   r@   rA   )r?   r@   r   r   r   r   )r@   rA   r   r   r   r   r   )r?   r@   r   r   r   r   r   )r@   rA   r   r   r   r   r   rB   r   r   r   )r   r   r   r   r   r   )r   r   r?   r@   r   r   )r   r   rA   rB   r   r   )r   r   r   r   r   r   c                        dd      S )Nr   r   r   rC   r   r   r   r%   s   rN   r`   z test_diag_make.<locals>.<lambda>  s    tAq!QQ7 rV   r  )r   )r   r   F)unpackr  r   r  r  )r   r   r?   r   )r   r   r   r@   )r   r%   r$   r3   r4   r5   r   r  r  r   r(   r  s   @@@@rN   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 -   rV   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 )NrA   r   r   )r   rB   r   r?   )r?   r   r   )rA   r   r@   )r@   r   c                  &     j                  d      S r  diagonalr   s   rN   r`   ztest_diagonal.<locals>.<lambda>,  s    qzz!} rV   c                  &     j                  d      S )Nr  r  r   s   rN   r`   ztest_diagonal.<locals>.<lambda>-  s    qzz"~ rV   c                  .     j                  t              S rZ   )r  r   r   s   rN   r`   ztest_diagonal.<locals>.<lambda>.  s    qzz"~ rV   )r$   r   r  tupler  r*   r   r  r(   r+   r   r   r   )r   srJ   r^   r   s       @rN   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 )NrA   r@   
eigenvalue)sizer%  upper)band)r&  eigenvalr%  )r@   r?   r   )r   r@   r?   r	  lower)r@   r   r   rv  r   c                  ,    t         j                  d      S rf  r   jordan_blockrC   rV   rN   r`   z#test_jordan_block.<locals>.<lambda>D  s    0==a@ rV   c                  .    t         j                  dd      S )Ng      @r@   r,  rC   rV   rN   r`   z#test_jordan_block.<locals>.<lambda>F  s    0==c1E rV   c                  .    t         j                  d      S )Nr@   r$  r,  rC   rV   rN   r`   z#test_jordan_block.<locals>.<lambda>H  s    0===K rV   c                  0    t         j                  dd      S )Nr@   rB   )r%  r)  r,  rC   rV   rN   r`   z#test_jordan_block.<locals>.<lambda>K  s    **q + " rV   )r&  r)  )r   r-  r$   r   r  rC   rV   rN   test_jordan_blockr1  4  sV   ))!Q/3D3Q3QRS`a3Q3b  --1-C --a-A !--q . 2
       ))!QW)=I B       
 :@A
:EF
:KL
:"#
 ))qQ)?&&A&:; ; ;rV   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 )Nr?   r@   rA   rB   T)	normalizer   r   ir   r   )r   r?   r   )rA   r   r  )r   r   r@   r   r         r   r   )r?   rB   r   c                  .    t        j                   ddiS N	rankcheckTr$   orthogonalizevecss   rN   r`   z$test_orthogonalize.<locals>.<lambda>d      v33TJTJ rV   r   r   c                  .    t        j                   ddiS r7  r9  r;  s   rN   r`   z$test_orthogonalize.<locals>.<lambda>g  r=  rV   )r$   r:  r   r   r   r  )r   rc   r<  s     @rN   test_orthogonalizer?  S  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KrV   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 )Nr?   )r   r?   r   )r?   r   r?   )r   r?   r?   )r?   r?   r   rA   )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   r   r?   r@   r?   )r   r   r   r   r   r?   rA   )rA   r?   r   r   r   r   r   )r?   r@   r?   r   r   r   r   )r   r?   r?   r?   r   r   r   )r$   	wilkinson)wminuswpluss     rN   test_wilkinsonrD  i  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 4rV   c                      t        d      \  } }t        dd| |g      }|j                  |       t        ddddg      k(  sJ y )Nx yr@   r?   r   )r   r   diffr$   r3   r4   r   s      rN   	test_diffrI    sD    5>DAq1a!Q(A66!9q!aV,,,,rV   c                      t        d      \  } }t        dd| |g      }|j                  |       t        dd| dz  dz  || z  g      k(  sJ y )NrF  r@   r?   )r   r   	integrater$   rH  s      rN   test_integraterL    sP    5>DAq1a!Q(A;;q>VAq1a461Q3-8888rV   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,phirA   r?   r@   r   rF  rB   c                  <     j                  t        ddg            S rQ  )jacobianr$   r   s   rN   r`   z test_jacobian2.<locals>.<lambda>  s    ajjA8 rV   c                  &    j                         S rZ   )rO  r  s   rN   r`   z test_jacobian2.<locals>.<lambda>  s    bkk!n rV   )r   r   r   r   r$   rO  r   r  )rhophiXYJr   r   s        @@rN   test_jacobian2rV    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,-rV   c            	          t        d      \  } }t        ddd| z  |g      }|j                  | d      t        ddt	        dd      |g      k(  sJ y )NrF  r@   r?   r   )r   r   limitr$   r   rH  s      rN   
test_limitrY    sQ    5>DAq1a!A#q*A771a=F1a(1a.!)<====rV   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 rZ   rC   rJ   vs   rN   r`   z"test_issue_13774.<locals>.<lambda>      ac rV   c                       z  S rZ   rC   r\  s   rN   r`   z"test_issue_13774.<locals>.<lambda>  r^  rV   )r$   r   r  r\  s   @@rN   test_issue_13774r`    s-    	9i01AA
9k"
9k"rV   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 )
Nr3   r4   c                  ,    t        j                  d      S ri  )r$   	companionrC   rV   rN   r`   z test_companion.<locals>.<lambda>  s    v//2 rV   c                  D    t        j                  t        dg             S ri  r$   rc  r0   r   s   rN   r`   z test_companion.<locals>.<lambda>  s    v//aS!= rV   c                  F    t        j                  t        ddg             S r%  re  r   s   rN   r`   z test_companion.<locals>.<lambda>  s    v//aVQ@ rV   c                  L    t        j                  t         z   g            S rZ   re  )r3   r4   s   rN   r`   z test_companion.<locals>.<lambda>  s!    v//QqS1a&0AB rV   zc0:3r?   r   )r   r   r  r   r$   rc  r0   )c0c1r  r3   r4   s      @@rN   test_companionrj    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 8rV   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   r?   r@   rA   )r?   r?   r?   r?   r?   )r   r$   r  zip)r3   r4   r5   r  r  s        rN   test_issue_10589rm    s    hGAq!	Aq		B	aAY	*	+B!qcA3((((	!Q1a1aAq/Aq!Q?C	DB	aS1#	B/?KLLLLrV   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)rS   rT   rU   r,   _op_priorityrC   rV   rN   Foorp    s    )66=rV   rr  r@   rF  r   r  r  r  )r.   r$   rG   )rr  r   r   r   s       rN   test_rmul_pr19860rs    sh    >" > 	q!\"AAq,A 	
!AaB"b*++++rV   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 )Nr?   r@   rA   rB   c                       z   S rZ   rC   r   r   s   rN   r`   z"test_issue_18956.<locals>.<lambda>      a!e rV   c                       z   S rZ   rC   rv  s   rN   r`   z"test_issue_18956.<locals>.<lambda>  rw  rV   )Arrayr$   r   r  rv  s   @@rN   test_issue_18956rz    sD    1v1vA1qe}A
9m$
9m$rV   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rQ  rC   selfs    rN   __iter__ztest__eq__.<locals>.My.__iter__  s     GGs   
c                     t        |       |   S rZ   )r   )r  r^   s     rN   __getitem__z"test__eq__.<locals>.My.__getitem__  s    :a= rV   N)rS   rT   rU   r  r  rC   rV   rN   Myr}    s    		!rV   r  r@   r?   c                       e Zd Zd Zy)test__eq__.<locals>.My_sympyc                     t        |       S rZ   r  r  s    rN   _sympy_z$test__eq__.<locals>.My_sympy._sympy_  s    $<rV   N)rS   rT   rU   r  rC   rV   rN   My_sympyr    s    	 rV   r  )objectr$   )r  r   r  s      rN   
test__eq__r    sL    !V ! 	q!aVA99 2   
??rV   )sympy.testing.pytestr   r   r   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.exceptionsr   r   sympy.matrices.kindr   rD   r   r   r   r   r    r!   r"   rE   r#   sympy.matricesr$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   sympy.polys.polytoolsr0   sympy.utilities.iterablesr1   #sympy.tensor.array.dense_ndim_arrayr2   ry  	sympy.abcr3   r4   r5   rO   rQ   rd   ri   rk   rp   rt   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/  r6  r=  rA  rD  rI  rL  rO  rS  rU  rY  r]  rc  rk  rp  rt  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"  r1  r?  rD  rI  rL  rV  rY  r`  rj  rm  rs  rz  r  rC   rV   rN   <module>r     sh   G F     ( 5 ; ; " - 4 6 9 = F *7 7 7 3    ' - P  :1B  NO] 
=3  ~@P 
@6  ~@P 
@6  ~@P 
@6  NO] 
  ^_n 
?&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,%{#     
 sH   	I;,JJ2J"J/2J<;JJJ"J,/J9<K