
    Rie                     H   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 ZdxS )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dS )ShapingOnlyMatrixN__name__
__module____qualname__     Flib/python3.11/site-packages/sympy/matrices/tests/test_commonmatrix.pyr6   r6              Dr<   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                     dS Nr   r;   rD   s     r=   rG   zzeros_Shaping.<locals>.<lambda>&   s     r<   rH   rI   s    r=   zeros_ShapingrO   %   s    Q>>222r<   c                       e Zd ZdS )PropertiesOnlyMatrixNr7   r;   r<   r=   rQ   rQ   )   r>   r<   rQ   c                 &    t          | | d           S )Nc                 (    t          | |k              S rA   rB   rD   s     r=   rG   z eye_Properties.<locals>.<lambda>.       3qAv;; r<   rQ   rI   s    r=   eye_PropertiesrV   -       1&>&>???r<   c                 &    t          | | d           S )Nc                     dS rN   r;   rD   s     r=   rG   z"zeros_Properties.<locals>.<lambda>2       1 r<   rU   rI   s    r=   zeros_Propertiesr[   1       1nn555r<   c                       e Zd ZdS )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>:   rT   r<   r^   rI   s    r=   eye_Operationsrb   9   rW   r<   c                 &    t          | | d           S )Nc                     dS rN   r;   rD   s     r=   rG   z"zeros_Operations.<locals>.<lambda>>   rZ   r<   ra   rI   s    r=   zeros_Operationsre   =   r\   r<   c                       e Zd ZdS )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   rT   r<   rg   rI   s    r=   eye_Arithmeticrk   E   rW   r<   c                 &    t          | | d           S )Nc                     dS rN   r;   rD   s     r=   rG   z"zeros_Arithmetic.<locals>.<lambda>J   rZ   r<   rj   rI   s    r=   zeros_Arithmeticrn   I   r\   r<   c                       e Zd ZdS )SpecialOnlyMatrixNr7   r;   r<   r=   rp   rp   M   r>   r<   rp   c                       e Zd ZdS )CalculusOnlyMatrixNr7   r;   r<   r=   rr   rr   Q   r>   r<   rr   c                     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 d S )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   s   q!///00A6Q;;;;6Q;;;;Q419999T7a<<<<77(((((((!QQQ$==III%%%%!!!Q$==QF""""!!!QQQ$==DGG####QQQT7a<<<<!!!!!999iii011Q6666999iii011Q66669i011Q6666011Q6666AAA78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 d S )Nrv   rt   ru   rw   r   )r!   kindr   r   r2   r   r'   r;   r<   r=   	test_kindr   h   sL   Aq6Aq6"##(Jz,B,BBBBBAq6Aq6"##(Jz,B,BBBBB!Q Jz$:$:::::A3%==J!7!77777Avse}}%&'',
=0I0IIIII!#z*'='=====!VaSE]]+,--2j6O6OOOOOOOr<   c                      t          ddg d          } |                                 }|j        dk    sJ t          d          D ]}||         |dz   k    sJ d S )Nrt   )rv   ru   rt   rw   rv   rw   )r6   vecr~   range)mm_vecrE   s      r=   test_vecr   s   sn    !Q--AEEGGE:????1XX ! !Qx1q5     ! !r<   c                     t          d          \  } }}}t          | |g||gg          }t          | |g||gg          }t          | |g||gg          }t	          | |g||gg          }|                                |                                cxk    r=|                                cxk    r$|                                cxk    r| |||dk    sn J d S )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/	0	0B88:: 5 5 5 5rxxzz 5 5 5 5RXXZZ 5 5 5 5Aq!445 5 5 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|          }|                                | k    sJ d S )Nrt   ru   rw   )	r   OneHalfr2   r3   Zeror4   r6   tolist)lstflat_lstr   s      r=   test_tolistr      s    E161Q3'!Q1a41qufac1:M
NCqvqsAFAq!QT1qufa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}|                                 |k    sJ d S )Nru   rt   r   rv   r   rv   rt   )r6   r   r   r   r2   todod)r   dicts     r=   
test_tododr      sh    !Q!%a[1a& ABBA15zq!&kq!f55D7799r<   c                  J    t          ddg d           t          t           fd           t          t           fd           t          t           fd           t          t           fd                                d                               d          cxk    rt	          g d	g d
g          k    sn J                      d                               d          cxk    rt	          ddgddgddgg          k    sn J                      d                               d          cxk    rt	          g d	g dg          k    sn J                      d                               d          cxk    rt	          ddgddgddgg          k    sn J d S )Nru   	rv   rt   ru   rw   rx   ry         	   c                  .                          d          S Nrx   row_deles   r=   rG   z"test_row_col_del.<locals>.<lambda>       qyy|| r<   c                  .                          d          S Nr   r   s   r=   rG   z"test_row_col_del.<locals>.<lambda>       qyy}} r<   c                  .                          d          S r   col_delr   s   r=   rG   z"test_row_col_del.<locals>.<lambda>   r   r<   c                  .                          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==JJJJFIIIyyy3I,J,JJJJJJJ99Q<<199R==LLLLFQFQFQF3K,L,LLLLLLL99Q<<199R==JJJJFIIIyyy3I,J,JJJJJJJ99Q<<199R==LLLLFQFQFQF3K,L,LLL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          }|                                 | gk    sJ |                                |gk    sJ |                                |gk    sJ d S 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1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        |          }|                                | ||gk    sJ |                                | ||gk    sJ |                                | ||gk    sJ |                                |||gk    sJ d S r   )	r!   r2   r3   r4   r"   r6   r}   r~   r   )r   r   r   ABCDs          r=   test_get_diag_blocks2r      s   AA  AAA  AAq	Aq!9q!Qi011AaAQ1tAq!}}d1ammKJAq!Q!&!&!,,A!&!&!,,A!&!&!,,A!&!&!,,A1a)++++1a)++++1a)++++1a)++++++r<   c                  F    t          ddddg          } | j        dk    sJ d S )Nrv   rt   r   rv   rt   )r6   shaper   s    r=   
test_shaper      s0    !QA''A7fr<   c                  B   t          d          } |                     dd          t          ddd          k    sJ t          ddd           }|                    dd          t          d          k    sJ |                    dd	          t          d
          k    sJ d S )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HH	1a!3!3	4	4B::	1 DEEF F F F::av&NOOOOOOOOr<   c                      t          ddg d          } |                     d          t          ddg d          k    sJ |                     d          t          ddg d          k    sJ d S )Nru   r   r   rv   r|   )rv   rw   r   )r6   rowr!   colr   s    r=   test_row_colr      sv    !Q ; ; ;<<A5588vaIII......5588vaIII........r<   c                      t          d                              t          g d                    t          g dg dg dg          k    sJ d S )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      si    q>>""6)))#4#455<<<<<<<! " "" " " " " "r<   c                      t          d                              t          g dg                    t          g dg dg dg dg          k    sJ d S )Nru   r   rv   r   r   )r   rv   r   )r   r   rv   )rK   col_joinr!   r;   r<   r=   test_col_joinr      sr    q>>""6999+#6#677999999999       r<   c                  :   t          g dg          } t          dd          D ]w}g d}|                    |d           t          t	          d                              ||                               d                                                    |k    sJ xd S )Nrw   rw   rw   rx   r   rw   ru   r   )r!   r   insertr.   rK   
row_insertr   r   )r4rE   ls      r=   test_row_insertr      s    			B2q\\ N NII	A{1~~00B77;;A>>EEGGHHAMMMMMN Nr<   c                     t          g d          } t          dd          D ]w}g d}|                    |d           t          t	          d                              ||                               d                                                    |k    sJ xt          d                              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 d S )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.   rO   
col_insertr   r   rK   )c4rE   r   s      r=   test_col_insertr      sF   						B2q\\ P PII	A}Q''221b99==a@@GGIIJJaOOOOOq>>$$QAAAAQRTUPVYZ\]X^/_(`(`aa++++++++++++++++++- . .. . . . . .r<   c                      t          ddd                                 g dddg          t          ddg d          k    sJ                      ddgg d	          t          ddg d
          k    sJ                      t          d          t          d                     k    sJ t	          t
           fd           t	          t
           fd           d S )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                  4                          dgdg          S )Nrw   r   extractr   s   r=   rG   ztest_extract.<locals>.<lambda>       qyy!qc22 r<   c                  4                          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 455A99YYYA''6!Q8K8K8K+L+LLLLL99aVYYY''6!Q8K8K8K+L+LLLLL99U1XXuQxx((A----
:2222333
:222233333r<   c                     t          ddd           t          ddd                                         k    sJ                               t                                         cxk    rt          g dg dg dg dg          k    sn 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        d
k    rj        dk    sJ d S )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                  0                                     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 455A	1a!5!5	6	6B88Aq! 1 8 8Aq A A 4 4 4 4V111111111111	M3 F4 F4 4 4 4 4 4 4
 :.....///=??fhh&&&& 
a		B	a		B	a		B	a		B  RR00A6Q;;16Q;;;;;;r<   c                      t          ddd            t          ddd                                            k    sJ                                   t                                            cxk    r7t          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n J t          t           fd	           t          j                    t                      k    sJ d S )
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                  0                                     S rA   )vstackr  s   r=   rG   ztest_vstack.<locals>.<lambda>!  r  r<   )r6   r  r!   r/   r   r  s   @@r=   test_vstackr    sK   !Q 4 455A	1a!5!5	6	6B88Aq! 1 8 8Aq A A . . . .V + + + + + + + + + + + +M- F. F. . . . . . . :.....///=??fhh&&&&&&r<   c            
      $   t          ddddt          ddt          z  z
  g          } |                                 t          j        t          d          t          j        t          hk    sJ |                     t                    t          hk    sJ d S Nrt   rv   )rQ   r2   atomsr   r   NegativeOner   r   s    r=   
test_atomsr  &  ss    QAq!Q1W#566A7799!amQ77777776??qc!!!!!!r<   c                  X    t          t          gdgg          j        t          hk    sJ d S rN   )rQ   r2   free_symbolsr;   r<   r=   test_free_symbolsr  ,  s.    !qc
++8QC??????r<   c                  P   t          t          t          fdf          } |                     t                    sJ |                     t                    rJ |                     t
                    sJ t          dt          fdf          } |                     t                    rJ d S )N)rt   ru   rt   )rQ   r2   r3   hasr4   r   r   s    r=   test_hasr  0  s    q!ff-..A5588OOOuuQxx55==q!ff-..AuuQxxr<   c                     t          d          } t          ddddg                                          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	          }|                                du sJ |                    d          du sJ |                    d	           du sJ t          ddd
 |D                       }|                    d          du sJ t          ddd t          j        gt          |          dd          z   D                       }|                                du sJ d S )Nr2   rt   rv   Fru   r   Tsimplifyc                     | S rA   r;   r   s    r=   rG   z(test_is_anti_symmetric.<locals>.<lambda>@  s    ! r<   c                 ,    g | ]} |j                     S r;   expand.0r2   s     r=   
<listcomp>z*test_is_anti_symmetric.<locals>.<listcomp>B  s     #:#:#:1HAHJJ#:#:#:r<   c                 ,    g | ]} |j                     S r;   r   r"  s     r=   r$  z*test_is_anti_symmetric.<locals>.<listcomp>D  s     #N#N#N1HAHJJ#N#N#Nr<   )r   rQ   is_anti_symmetricr3   r   r   r   )r2   r   s     r=   test_is_anti_symmetricr'  :  s   A1q!f--??AAUJJJJQAq!taczA~qAEA:+q!A#PQrTUSUVWSWYZ#[\\A  D((((..%777744====Q#:#:#:#:#:;;A..$6666Q#N#N$q''!""+8M#N#N#NOOA  E))))))r<   c                  V   t          ddg d          } |                                 rJ |                                 sJ |                     d          sJ t          ddg d          } |                                 sJ t          ddt          ddd                    } |                                 sJ |                                 sJ t          ddg d          } | t          ddd          k    sJ t          ddt	          dd                    } |                                 rJ |                                 sJ t          d	          } |                                 sJ t          d
          } |                                 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	          } |                                 sJ |                     d          rJ |                                                     d          sJ d S )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   )	rQ   is_diagonalis_symmetricr"   r&   r!   r2   r3   r!  r   s    r=   test_diagonal_symmetricalr.  H  s   Q<<<00A}}>>>>5>)))))Q<<<00A==??Q41a==11A==??>>Q#>#>#>??AQ1Q5A;;//A~~==??566A==??344A==??q!aA!aQUQJ1aAFGGA>>~~u~-----88::""E"2222222r<   c                  p   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 d S )Nrv   rt   F)rQ   r	   is_hermitianr2   r   s    r=   test_is_hermitianr2  h  s    q!fr1g.//A>qsAh!Q01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 d S )Nru   r   )rV   is_IdentityrQ   r&   r%   r;   r<   r=   test_is_Identityr5  s  sv    !((((#E!HH--9999#DGG,,8888#YYYK00<<<<<<r<   c                     t          t          t          gt          t          gg          } |                                 du sJ t          g dg dg          } |                                 du sJ t          g dddt          dgg          } |                                 du sJ t          dt          d	gg          } |                                 du sJ t          g d
g          } |                                 du sJ t          dgt          gd	gg          } |                                 du sJ t          dgdgd	gg          } |                                 du sJ d S )NTrv   rt   ru   rw   rx   ry   r   r   Frx   ry   r   rv   ru   r|   rt   )rQ   r2   is_symbolicr1  s    r=   test_is_symbolicr:  {  sc   q!fq!f-..A==??d""""lllLLL9::A==??e####lllQ1aL9::A==??d""""q!Qi[))A==??d""""iii[))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 d S )Nr|   Trv   rt   ru   F)rQ   is_upperr1  s    r=   test_is_upperr=    sZ    iii[))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 d S )Nr|   Frv   rt   ru   T)rQ   is_lowerr1  s    r=   test_is_lowerr@    sZ    iii[))A:qcA3_--A:r<   c                  z    t          dgdgg          } t          ddgddgg          }| j        rJ |j        sJ d S Nrv   rt   )rQ   	is_squarer  s     r=   test_is_squarerD    sS    qcA3Z((A	1v1v.	/	/B{<r<   c                      t          ddg d          } |                                 sJ t          ddg d          } |                                 rJ d S )Nrt   r)  )r   rv   r   rv   )rQ   r-  r   s    r=   test_is_symmetricrF    s^    Q<<<00A>>Q<<<0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 d S )	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   )rQ   is_upper_hessenbergis_lower_hessenbergr  s    r=   test_is_hessenbergrJ    s    iiiIII>??A    Q#>#>#>??A    Q#?#?#?@@A E)))) E))))iiiIII>??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 d S )	Nr   ru   rw   rv   Fr   T)nonzero)rQ   is_zero_matrixr&   r#   r2   r   r1  s    r=   test_is_zerorN    s   1b))8888!Q!Q 011@@@@a,,;;;;#CFF++::::!Q!Q 011@DHHHH!Q!Q 011@EIIIIsD!!!A!Q!Q 011@EIIIIIIr<   c            
         t          t          ddg d                                                    h dk    sJ t          dd          } t          t          dd| dddg                                                    | dhk    sJ d S )	Nrt   )r   rv   rt   ru   >   rv   rt   ru   r2   Trealr   rv   )setrQ   valuesr   r   s    r=   test_valuesrT    s    #Aq,,, 
 

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

&(( 1v     r<   c                  :   t          t          d                    } |                     d           t          d          dz  k    sJ |                     d           t          d          k    sJ |                     d           t	          d          k    sJ d S )Nru   c                     d| z  S Nrt   r;   r   s    r=   rG   z test_applyfunc.<locals>.<lambda>  s
    !A# r<   rt   c                     dS rN   r;   r   s    r=   rG   z test_applyfunc.<locals>.<lambda>      ! r<   c                     dS Nrv   r;   r   s    r=   rG   z test_applyfunc.<locals>.<lambda>  rY  r<   )r^   r#   	applyfuncr&   r%   )r   s    r=   test_applyfuncr]    s    	c!ff	%	%B<<&&#a&&(2222<<$$a0000<<$$Q//////r<   c                      dt           gddgg} t          ddgt            dgg          }|                                t          |           k    sJ d S )Nr   rv   )r	   r^   adjointr!   )datanss     r=   test_adjointrb    sU    q6Aq6
C
A!Q0
1
1C;;==F3KK''''''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          }|                                \  }}|| k    sJ || k    sJ d S )Nrt   r7  rv   ru   rw   )r^   r   ImaginaryUnitas_real_imag)r   r   r   r   s       r=   test_as_real_imagrf    s    	aLLL	1	1B	a	
Q_	a!AO"33	Aaoq1Q_#44	6
7 
7B ??DAq7777777777r<   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        |                                 k    sJ | j        | j        j        k    sJ | j        t          ddgt           dgddgg          k    sJ d S )Nr   rx   rv   rt   r   rv   rt   )r^   r	   Tr!   r   	conjugateHMs    r=   test_conjugatern    s   q!Qi		 	 	A 3&1a&a&a&" # # # # # # 3&1qb!*$**& ' ' ' ' ' '3!++--3!#%<<<<3&Aq'2q'q'# $ $ $ $ $ $ $ $r<   c                      t          t          t          t          d          gg          } | d         dt          z  k    sJ |                                 t	          dt          z  gg          k    sJ d S )NF)evaluater   rt   )r^   r   r2   doitr!   r1  s    r=   	test_doitrr    sf    s1a%8889:;;AQ41Q3;;;;6688v!ug&&&&&&r<   c                  D    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 d S )Nrt   rv   rx   ry   c              3      K   | ]:}                                 |         |                                          k    V  ;d S rA   evalfr#  rE   r   s     r=   	<genexpr>ztest_evalf.<locals>.<genexpr>  s@      >>qwwyy|qtzz||+>>>>>>r<   c              3      K   | ]<}                     d           |         |                              d           k    V  =dS rt   Nru  rw  s     r=   rx  ztest_evalf.<locals>.<genexpr>  sD      @@!qwwqzz!}!

1-@@@@@@r<   c              3      K   | ]<}                     d           |         |                              d           k    V  =dS rz  rI   rw  s     r=   rx  ztest_evalf.<locals>.<genexpr>  sD      88!qss1vvayAaDFF1II%888888r<   )r^   r   allr   r1  s   @r=   
test_evalfr}    s    QDGGQ<00A>>>>U1XX>>>>>>>>@@@@uQxx@@@@@@@@8888uQxx888888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          } |                                 }|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                              d          t	          t          |          t          t          |          z  z   g          k    sJ d S )Nrt   ru   r   TrP  rv   )complex)
r^   r2   r3   r!  r!   r   r   r	   r   r   )r   r   r   s      r=   test_expandr     sC   	1q5	1~!a%Aq!aQi-?P/QR	S	SB	B
A#1*a1QT6AadF?AaC!AqD&L1a4,?@AC C C C C C 	sA1s1Q3xxj11888FF3q66Ac!ffH$%&&' ' ' ' ' '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          } |                     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 |                     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 |                     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 d S rW  )r^   r   r2   r   r3   refiner   rQ  r!   positivenegativer   s     r=   test_refiner    s   	A	41::6q!t**SVVQY&QT

3q6619(<=? 
@ 
@B	16!99qvayy(	)	)B!Q$A!Q$s1vv+q!tCFF{)CDEEEEEE	1:a==1:a==0	1	1B!Q$Qq!tVQT!V$45666666	1:a==1:a==0	1	1B!Q$qbAg1uQw%7899999999r<   c                      t          dt                    \  t          ddfd          } t          ddfd          }|                              }|| k    sJ d S )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)Krm  Nr  r  s      @@r=   test_replacer    sr    6x(((DAqQ#6#6#6#677AQ#6#6#6#677A			!QA666666r<   c                     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          }|                    | d          }||k    sJ d S )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  rm  r  r  s       @r=   test_replace_mapr  "  s)   6x(((DAqQQQqTTAAaDD!!A$$<$811Q44!!A$$!:NQRQRSTQUQUXYXYZ[X\X\PQPQRSPTPTXV QWYZYZ[\Y]Y]`a`abc`d`dfgfghifjfj_kXl$n 	o 	oAQ#6#6#6#677A			!QA666666r<   c                     t          ddgddgg          } | |                     d          cxk    r|                     d          k    sn J |                     d          |                     d          cxk    r-|                     d          cxk    rt          d          k    sn J |                     d          |                     d	          cxk    r-|                     d
          cxk    rt          d          k    sn J |                                 |                     d          cxk    r-|                     d          cxk    rt          d          k    sn J d S )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  +  sg   AA  A

((((aggajj((((((771::NNNN

NNNNf=M6N6NNNNNNN771::NNNN

NNNNf=M6N6NNNNNNN7799NNNNqwwr{{NNNNf=M6N6NNNNNNNNNr<   c                  X   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          }|                                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          }|                                t          |gg          k    sJ |                    t                    t          |                    t                    gg          k    sJ t          ddgddgg          }d|
                                z                                  t          dd	          k    sJ d S )
NrJ   frv   rt   )ratio   ru   rw   "   )r   r   r^   r2   r3   r   r   r  r!   r   tracer   )rJ   r  rm  eqr   s        r=   test_simplifyr  2  s   sAA1Q319q1Q3wRSmV1Q44!AAaDD&=!!A$$&QqS3q2v;;q=-@(AB(FHJ 	K 	KA::<<6a!ea!e_QQRU#T$%E1q1SAYY;A.F+GI#K L L L L L L
a%!BrdV$$A::<<6B4&>>))))::B:6BKKbK,A,A+B*C#D#DDDDD 	Q!Q !!AqwwyyM##%%!R888888r<   c                     t          dt          gt          dgg                              t          d          t          ddgddgg          k    sJ t          t          dgt          t          z   dgg                              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                              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                              t          dt          di          t          ddgddgg          k    sJ t          t          t          z  gg                              t          t          dz
  t          t          dz
  id	          t          t          dz
  t          dz
  z  gg          k    sJ d S )
Nrv   rw   rx   rt   r   r   r  T)simultaneous)r^   r2   subsr!   r3   r;   r<   r=   	test_subsr  D  s   !Q!Q 01166q!<<AQRTUPVGW@X@XXXXX!Q!a% 455::QGaW;MNNB7RG$%%& & & &!Q!a% 455::QGaW;MNNB7RG$%%& & & &!Q!a% 455::Ar1b>JJB7RG$%%& & & &!A#((--q!a%AE.BQU-VVQUQUO$%&&' ' ' ' ' 'r<   c                  j    t          g dg dg dg          } |                                 dk    sJ d S )Nr   )r   rx   r   )r   r   r      )r^   r  rl  s    r=   
test_tracer  P  sE    iii				 	 	A 7799??????r<   c                  l   t          dt          gt          dgg                              t          di          t          ddgddgg          k    sJ t          t          dgt          t          z   dgg                              t          dt          di          t          ddgddgg          k    sJ d S )Nrv   rw   rx   rt   r   r   r  )r^   r2   xreplacer!   r3   r;   r<   r=   test_xreplacer  W  s    !Q!Q 011::Aq6BBAq6Aq6"##$ $ $ $!Q!a% 455>>2q"~NNB7RG$%%& & & & & &r<   c                     t          ddg d          t          t          fd           t          t          fd                               ddgddgg          }                     ddgddgg          | cxk    rt          g d	g d
g dg          k    sn J                     ddgddgg          }                     ddgddggd          | cxk    rt          g dg dg dg          k    sn J                     ddgddggd          }                     ddgddggdd          | cxk    rt          g dg dg dg          k    sn J                     g d          t          g d	g d
g dg          k    sJ ddlm	}                      |g d                    t          g d	g d
g dg          k    sJ d S )Nru   rw   )rv   rt   ru   rw   rx   ry   r   r   r   r   r      c                  4                          ddgg          S )Nr   rx   )permuter1  s   r=   rG   ztest_permute.<locals>.<lambda>a  s    qyy1a&22 r<   c                  H                          t          d                    S )Nr2   )r  r   r1  s   r=   rG   ztest_permute.<locals>.<lambda>b  s    qyy55 r<   r   rt   rv   r8  )r   r   r   r  r7  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#J#JKKA
:2222333
:5555666	AA'((A99q!fq!f%&&! > > > >v,;OO,;OO,;OO7= 0> 0> > > > > > >
 	
AA'((A99q!fq!f%69::a . . . ."+OO+OO+OO$- . .. . . . . . 	
AA':>>A99q!fq!f%6Z9PPTU . . . ."+OO+OO+OO$- . .. . . . . . 99\\\""f,;OO,;OO,;OO.= '> '> > > > >
 0/////99[[..//6,;OO,;OO,;OO;= 4> 4> > > > > > >r<   c                  ~   t          g dg dg dg dg          } |                     d          }|t          g dg dg dg dg          k    sJ |                     d          }|t          g dg dg dg dg          k    sJ |                                 }|t          g dg dg dg dg          k    sJ d S )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    sH   	 	 	A 	
1A$$$$$	&       	
2A$$$$$	&       	
A$$$$$	&        r<   c                  ~   t          g dg dg dg dg          } |                                 }|t          g dg dg dg dg          k    sJ |                     d          }|t          g dg dg dg dg          k    sJ |                     d          }|t          g dg dg dg dg          k    sJ d S )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    sH   $$$$	 	 	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 d S )Nrv   r   rt   )rg   r2   r3   absr   r   s    r=   test_absr    s\    q"g1v.//Aq66)Aq6CFFCFF3C*DEEEEEEEEr<   c            	          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           d S )	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    iii!QQqS#qsODEEAq5()))ac1Q3!_qsDRSTURUVWRWFX)YZZ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 n# t
          $ r Y nw xY w                    |           }|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 n# t
          $ r Y nw xY wt          t          dd                    }t          dd           }t          |||g          }|                    |          t          |g|g|gg          k    sJ d S )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;   r1  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                  .                                    S rA   )multiply_elementwiser  s   r=   rG   z%test_multiplication.<locals>.<lambda>  s    q55a8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    s(     	 	A 	  	 	A
 :{{{{{###
9llll###	!AT7a<<<<T7a<<<<T7a<<<<T7a<<<<T7b====T7a<<<<
[ w!||||w!||||w!||||w!||||w"}}}}w!|||||     	
q!!A+Aq111111T7a<<<<T7a<<<<T7b====T7a<<<<T7a<<<<T7a<<<<
:88888999	F3KKAa-.....T7a<<<<T7ac>>>>T7ac>>>>T7a<<<<	
QB7777	AAa-.....T7a<<<<T7c>>>>T7c>>>>T7a<<<<	[ !122222w!||||w#~~~~w#~~~~w!|||||     	tAqzzA
1a..BB|A!!!$$			0 ) )      s$   ,D 
DDK4 4
L Lc                  b   t          ddgddgg          } |                     d          t          k    sJ |                     d          t          k    sJ 	 t	          d           n# t
          $ r Y nt          $ r Y nw xY w	 t	          d           d S # t
          $ r Y d S t          $ r Y d S w xY w)Nrv   rt   ru   rw   z2 @ aza @ 2)r!   
__matmul__NotImplemented__rmatmul__r  r  r  r1  s    r=   test_matmulr  #  s    AA  A<<??n,,,,==~----W      W      s0   A' '
A?3	A?>A?B 
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 dS )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dS )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00Q3&1ac(QqS!A#J/00000000r<   c                  n   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          } |                     dd          |                     dd          k    sJ d S )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2iiiJJJ?@@AqD!!!9EEEEEa43q66>>>>a419999 1#''3.5C????!Q!Q 01171::=AUXY[]W^aceg`hViAjAjjjjj1qe}A55H5%%r*)E)EEEEEEEr<   c                  `    t          ddddg          } |  t          ddddg          k    sJ d S )Nrv   rt   r   r   rj   rI   s    r=   test_negr  Z  sA    QAq6**A2%aRH55555555r<   c                  d    t          ddddg          } | | z
  t          ddddg          k    sJ d S )Nrv   rt   r   rj   rI   s    r=   test_subr  _  sC    QAq6**Aq5(A1v6666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 d S rB  )rg   r   r   rI   s    r=   test_divr  d  sP    QAq6**AQ3&q!afadd1f-=>>>>>>>>r<   c                     t          t                              dd                    g dk    sJ t          t                              d                    g dk    sJ t          t                              d                    t          k    sJ t          t                              dt                              t          k    sJ d S )Nrt   r*  r  )r   rp   r#   typer!   r;   r<   r=   test_eyer   i  s    !%%a++,,<<<<!%%a(())\\\9999!%%a(())->>>>>!%%aV%4455??????r<   c                     t          t                              dd                    g dk    sJ t          t                              d                    g dk    sJ t                              dd          t          g dg dg          k    sJ t	          t                              d                    t          k    sJ t	          t                              dt                              t          k    sJ d S )Nrt   r  ru   rv   rv   rv   r  )r   rp   r%   r!   r  r;   r<   r=   	test_onesr  p  s    !&&q!,,--====!&&q))**lll::::!!!Q''6999iii2H+I+IIIII!&&q))**.?????!&&qf&5566&@@@@@@r<   c                     t          t                              dd                    g dk    sJ t          t                              d                    g dk    sJ t                              dd          t          g dg dg          k    sJ t	          t                              d                    t          k    sJ t	          t                              dt                              t          k    sJ d S )Nrt   r  ru   r   r  )r   rp   r&   r!   r  r;   r<   r=   
test_zerosr  x  s    !''1--..,,,>>>>!''**++|||;;;;""1a((FIIIyyy3I,J,JJJJJ!''**++/@@@@@!''v'66776AAA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n 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 d S )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    ttAq!QQ77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    s   !DAA  AAA  AAq	Aq!9q!Qi011A41a==F	
Aq!Q	
Aq!Q	
Aq!Q	
Aq!Q$       41a==F	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1$       4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 41av	
Aq!Q	
Aq!Q	
Aq!Q'         :7777777888477fqcUmm####4???fq!fq!f%56666664???fq!fq!f%56666664"""fq!fq!fq!f-E&F&FFFFF4!Q=F	
A	
A$       41v6	
	
+ $ $     4QFAu---D1#1vs#E222   6<	
A	
A	
A> 7 7     
 Q==-----QF###$$....;yyy!!V[Aq%9%99999;yyy///5????;			{##)V3333;			{511176AAAA;}%%+v5555;tAqzz1a((F4 - -     ;tAqzz1a((F	
A	
A	
A	
A	4 - -      r<   c                      t          ddt          d                                                    } |                     d          k    sJ t          |           dk    sJ t                              d                    dk    sJ t                              d                    dk    sJ t                              d	                    d
k    sJ t	                                                    t	                    k    sJ t          ddddi          }t	          |                                          t	          |          k    sJ t	                    t	          |          k    sJ t          t          fd           t          t          fd           t          t          fd           t          d	d          t          fdt          dj
        z
  j                  D                       k    sJ d S )Nru   r   r   )r   rw   r   rv   )rv   rx   r   )ru   r   rt   )rt   rz   c                  .                          d          S r   diagonalr   s   r=   rG   ztest_diagonal.<locals>.<lambda>  s    qzz!}} r<   c                  .                          d          S )Nr  r  r   s   r=   rG   ztest_diagonal.<locals>.<lambda>  s    qzz"~~ r<   c                  8                          t                    S rA   )r  r   r   s   r=   rG   ztest_diagonal.<locals>.<lambda>  s    qzz"~~ r<   c                 V    i | ]%}|t                              |                    &S r;   )r   r  )r#  rE   rm  s     r=   
<dictcomp>z!test_diagonal.<locals>.<dictcomp>  s=     * * * d1::a==)) * * *r<   )r!   r   r  tupler  r'   r/   r  r%   r(   r}   r~   )r   srm  r   s     @@r=   test_diagonalr    s   q!U1XXA	

A

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

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

a((((77d1gg
:,,,,---
:----...
:----...Q

A * * * *qx((* * * + +./0 0 0 0 0 0r<   c                     t                               dd          t                               dd          cxk    rt                               dd          cxk    r`t                               ddd          cxk    r>t                               ddd          cxk    rt          g dg d	g d
g          k    sn J t                               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                               dd          t                               dd          k    sJ d S )Nru   rt   
eigenvalue)sizer  upper)band)r  eigenvalr  )rt   rv   r   )r   rt   rv   r   lower)rt   r   r   rh  r   c                  6    t                               d          S rW  rp   jordan_blockr;   r<   r=   rG   z#test_jordan_block.<locals>.<lambda>  s    0==a@@ r<   c                  8    t                               dd          S )Ng      @rt   r   r;   r<   r=   rG   z#test_jordan_block.<locals>.<lambda>  s    0==c1EE r<   c                  8    t                               d          S )Nrt   r  r   r;   r<   r=   rG   z#test_jordan_block.<locals>.<lambda>  s    0===KK r<   c                  :    t                               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%    s   ))!Q//3D3Q3QRS`a3Q3b3b     --1-CC    --a-AA    !--q . 2 2   
 						        ))!QW)==IIIIIII B  B         
 :@@AAA
:EEFFF
:KKLLL
:" "# # #
 ))qQ)??&&A&::; ; ; ; ; ;r<   c            	         t          ddgddgg          } |                     t          dgdgg                    t          dgdgg          gk    s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 |                     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 |                     t          dgdgg          t          dgdgg                    t          dgdgg          gk    s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           d S )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3TJTJJ r<   r{   r   c                  &    t          j         ddiS r+  r-  r/  s   r=   rG   z$test_orthogonalize.<locals>.<lambda>  r1  r<   )r!   r.  r   r   r/   r  )r   rJ   r0  s     @r=   test_orthogonalizer3    s*   AA  A??6A3*--..6A3*3E3E2FFFFF??6A3*--?>>	!DGG)A+a,	-	-./ / / /??6A3*--vtaSk/B/BCC	!qc
		VhsA&6&6%7(1a..9I$JKKLM M M M??6A3*--vtaSk/B/BCC	"s		   ??6A3*--.."4444			:::yyy122ARD1#;"s!4!4frdRD\6J6JKD1?D!	"s		fx2&7(2r:J:J9K%LMMNO O O O 999viii00&2C2CDD
:JJJJKKK999viii00&2C2CDD
:JJJJKKKK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 d S )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_wilkinsonr8    s   $Q''MFEV *

 )		 )		+ , , , , , , F%II%II%II' ( ( ( ( ( (
 $Q''MFEV 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7             F1111111111111111111113 4 4 4 4 4 4 4 4r<   c                      t          d          \  } }t          dd| |g          }|                    |           t          ddddg          k    sJ d S )Nx yrt   rv   r   )r   rr   diffr!   r2   r3   r   s      r=   	test_diffr=  :  sW    5>>DAq1a!Q((A66!99q!aV,,,,,,,,r<   c                      t          d          \  } }t          dd| |g          }|                    |           t          dd| dz  dz  || z  g          k    sJ d S )Nr:  rt   rv   )r   rr   	integrater!   r<  s      r=   test_integrater@  B  sc    5>>DAq1a!Q((A;;q>>VAq1a461Q3-88888888r<   c            	      R   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          }|                    |          |k    sJ t          ddg d          t          ddg d          t          t          fd           t          t          fd	           d S )
Nzrho,phiru   rv   rt   r   r7  rw   c                  L                          t          ddg                    S rB  )jacobianr!   r   s   r=   rG   z test_jacobian2.<locals>.<lambda>U  s    ajjA88 r<   c                  .                                    S rA   )rC  r  s   r=   rG   z test_jacobian2.<locals>.<lambda>V  s    bkk!nn r<   )r   rr   r   r   r!   rC  r/   r  )rhophiXYJr   r   s        @@r=   test_jacobian2rJ  H  s0   y!!HC1a#c#hh,CHHc1f!EFFA1a#s,,A	SC4C=!	SCCL!cEq! 	 	A
 ::a==A1a..A	Aq,,,	/	/B
98888999
9,,,,,-----r<   c            	          t          d          \  } }t          ddd| z  |g          }|                    | d          t          ddt	          dd          |g          k    sJ d S )Nr:  rt   rv   rx   )r   rr   limitr!   r   r<  s      r=   
test_limitrM  Y  sf    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           d S )Nr|   r{   r   r  c                       z  S rA   r;   rm  vs   r=   rG   z"test_issue_13774.<locals>.<lambda>b      ac r<   c                       z  S rA   r;   rP  s   r=   rG   z"test_issue_13774.<locals>.<lambda>c  rR  r<   )r!   r/   r  rP  s   @@r=   test_issue_13774rT  _  sc    			999iii011A		A
9kkkkk"""
9kkkkk"""""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 d S )
Nr2   r3   c                  *    t          j        d          S r[  )r!   	companionr;   r<   r=   rG   z test_companion.<locals>.<lambda>h  s    v/22 r<   c                  J    t          j        t          dg                     S r[  r!   rW  r-   r   s   r=   rG   z test_companion.<locals>.<lambda>i  s    v/aS!== r<   c                  L    t          j        t          ddg                     S r  rY  r   s   r=   rG   z test_companion.<locals>.<lambda>j  s    v/aVQ@@ r<   c                  R    t          j        t           z   g                    S rA   rY  )r2   r3   s   r=   rG   z test_companion.<locals>.<lambda>k  s$    v/QqS1a&0A0ABB r<   zc0:3rv   r   )r   r/   r  r   r!   rW  r-   )c0c1r  r2   r3   s      @@r=   test_companionr^  e  sz   sAsA
:22333
:====>>>
:@@@@AAA
:BBBBBCCCJBBD!R!,,--">>>>D!Ra0011RC1rc(#$$% % % %D!RR!4455AsaRC[1a"+6778 8 8 8 8 8r<   c            	         t          d          \  } }}t          | ||g          }|                    t          | ||gg d                    }|t          dgdgdgg          k    sJ t          | | | | | g| | | | | g| | | | | gg          }|                    t          | gdg                    }|t          g dg dg dg          k    sJ d S )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_10589ra  t  s    hGAq!	Aq			B	aAY			**	+	+B!qcA3((((((	!Q1a1aAq/Aq!Q?C	D	DB	aS1#		B///???KLLLL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 d S )	Nc                   "    e Zd Zej        dz   ZdS )test_rmul_pr19860.<locals>.Foog{Gz?N)r8   r9   r:   r)   _op_priorityr;   r<   r=   Foord    s        )6=r<   rf  rt   r7  r   r   r  r  )r+   r!   r  )rf  r   r   r   s       r=   test_rmul_pr19860rg  ~  s    > > > > >" > > > 	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           d S )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;   rj  s   r=   rG   z"test_issue_18956.<locals>.<lambda>  rk  r<   )Arrayr!   r/   r  rj  s   @@r=   test_issue_18956rn    sm    1v1vA1qe}A
9mmmmm$$$
9mmmmm$$$$$r<   c                       G d dt                     } t          ddddg          }| |             k    sJ  G d d|           }| |            k    sJ d S )Nc                       e Zd Zd Zd ZdS )test__eq__.<locals>.Myc              3      K   dV  dV  d S rB  r;   selfs    r=   __iter__ztest__eq__.<locals>.My.__iter__  s      GGGGGGFr<   c                 ,    t          |           |         S rA   )r   )rt  rE   s     r=   __getitem__z"test__eq__.<locals>.My.__getitem__  s    ::a= r<   N)r8   r9   r:   ru  rw  r;   r<   r=   Myrq    s2        	 	 		! 	! 	! 	! 	!r<   rx  rt   rv   c                       e Zd Zd ZdS )test__eq__.<locals>.My_sympyc                      t          |           S rA   r  rs  s    r=   _sympy_z$test__eq__.<locals>.My_sympy._sympy_  s    $<<r<   N)r8   r9   r:   r|  r;   r<   r=   My_sympyrz    s#        	  	  	  	  	 r<   r}  )objectr!   )rx  r   r}  s      r=   
test__eq__r    s    ! ! ! ! !V ! ! ! 	q!aVA9999         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   rm  	sympy.abcr2   r3   r4   r6   rK   rO   rQ   rV   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.  r2  r5  r:  r=  r@  rD  rF  rJ  rN  rT  r]  rb  rf  rn  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  r  r%  r3  r8  r=  r@  rJ  rM  rT  r^  ra  rg  rn  r  r;   r<   r=   <module>r     s+	                           ( ( ( ( ( ( 5 5 5 5 5 5 5 5 ; ; ; ; ; ; ; ; ; ; ; ; ; ; " " " " " " - - - - - - - - 4 4 4 4 4 4 6 6 6 6 6 6 9 9 9 9 9 9 = = = = = = = =C C C C C C C C C C C C C C C C C C C C C C C C 3 2 2 2 2 2                            ' & & & & & - - - - - - . . . . . . . . P P P P P P          	 	 	 	 	 	 	 	= = =3 3 3	 	 	 	 	>?<L 	 	 	@ @ @6 6 6	 	 	 	 	>?<L 	 	 	@ @ @6 6 6	 	 	 	 	>?<L 	 	 	@ @ @6 6 6	 	 	 	 	 	 	 		 	 	 	 	. 	 	 	? ? ?&P P P! ! !5 5 5    
M M M& & &, , ,   
P P P/ / /" " "  N N N. . . 4 4 4' ' '*' ' '," " "@ @ @  * * *3 3 3@# # #= = =$ $ $"           
% 
% 
%J J J  0 0 0( ( (  $ $ $$' ' '9 9 9
' 
' 
'
: 
: 
:    O O O9 9 9$	' 	' 	'  & & &"> "> ">H  B  BF F F
& & &P P Pf  21 1 1 F F F6 6 6
7 7 7
? ? ?
@ @ @A A AB B BL L L^0 0 0(; ; ;>L L L,4 4 4D - - -9 9 9. . ."> > ># # #8 8 8M M M, , ,% % %    r<   