
    gD                        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           n# 1 swxY w Y   d ZLd ZM e            5   G d de)e*e,          ZNddd           n# 1 swxY w Y   d ZOd  ZP e            5   G d! d"e)e*e-          ZQddd           n# 1 swxY w Y   d# ZRd$ ZS e            5   G d% d&e)e*e.          ZTddd           n# 1 swxY w Y   d' ZUd( ZV e            5   G d) d*e)e*e/          ZWddd           n# 1 swxY w Y    e            5   G d+ d,e)e*e1          ZXddd           n# 1 swxY w Y   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{ ZdS )|    )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 |D             }d}|D ]}}|D ]=}t)                      5  t+          ||          du sJ 	 d d d            n# 1 swxY w Y   >t)                      5  t+          ||          du sJ 	 d d d            n# 1 swxY w Y   ~d S )	Nr   )MatrixRequiredr   r"   r   r    r!   MatrixCommon)MatrixDeterminantMatrixReductionsMatrixSubspacesMatrixEigenr#   MatrixDeprecated)r$   ImmutableMatrixr*   r/   c                 0    g | ]} |d dgddgg          S              ).0Ms     b/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/tests/test_commonmatrix.py
<listcomp>z5test_matrix_deprecated_isinstance.<locals>.<listcomp>Y   s/    	4	4	4!!!aVaV

	4	4	4    rE   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MstmixinrG   s                          rH   !test_matrix_deprecated_isinstancerT   '   so   
                                            	J  		L 
5	4|	4	4	4B
A 1 1 	4 	4A')) 4 4!!U++t333334 4 4 4 4 4 4 4 4 4 4 4 4 4 4#%% 	1 	1a''500000	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1 	1	1 1s$   (B

BB$CC
	C
	c                       e Zd ZdS )ShapingOnlyMatrixN__name__
__module____qualname__rE   rJ   rH   rV   rV   i           rJ   rV   Nc                 &    t          | | d           S )Nc                 (    t          | |k              S Nintijs     rH   <lambda>zeye_Shaping.<locals>.<lambda>n   s    AF rJ   rV   ns    rH   eye_Shapingrh   m   s    Q#;#;<<<rJ   c                 &    t          | | d           S )Nc                     dS Nr   rE   ra   s     rH   rd   zzeros_Shaping.<locals>.<lambda>r   s     rJ   re   rf   s    rH   zeros_Shapingrl   q   s    Q>>222rJ   c                       e Zd ZdS )PropertiesOnlyMatrixNrW   rE   rJ   rH   rn   rn   v   r[   rJ   rn   c                 &    t          | | d           S )Nc                 (    t          | |k              S r^   r_   ra   s     rH   rd   z eye_Properties.<locals>.<lambda>{       3qAv;; rJ   rn   rf   s    rH   eye_Propertiesrs   z       1&>&>???rJ   c                 &    t          | | d           S )Nc                     dS rk   rE   ra   s     rH   rd   z"zeros_Properties.<locals>.<lambda>       1 rJ   rr   rf   s    rH   zeros_Propertiesrx   ~       1nn555rJ   c                       e Zd ZdS )OperationsOnlyMatrixNrW   rE   rJ   rH   r{   r{      r[   rJ   r{   c                 &    t          | | d           S )Nc                 (    t          | |k              S r^   r_   ra   s     rH   rd   z eye_Operations.<locals>.<lambda>   rq   rJ   r{   rf   s    rH   eye_Operationsr      rt   rJ   c                 &    t          | | d           S )Nc                     dS rk   rE   ra   s     rH   rd   z"zeros_Operations.<locals>.<lambda>   rw   rJ   r~   rf   s    rH   zeros_Operationsr      ry   rJ   c                       e Zd ZdS )ArithmeticOnlyMatrixNrW   rE   rJ   rH   r   r      r[   rJ   r   c                 &    t          | | d           S )Nc                 (    t          | |k              S r^   r_   ra   s     rH   rd   z eye_Arithmetic.<locals>.<lambda>   rq   rJ   r   rf   s    rH   eye_Arithmeticr      rt   rJ   c                 &    t          | | d           S )Nc                     dS rk   rE   ra   s     rH   rd   z"zeros_Arithmetic.<locals>.<lambda>   rw   rJ   r   rf   s    rH   zeros_Arithmeticr      ry   rJ   c                       e Zd ZdS )SpecialOnlyMatrixNrW   rE   rJ   rH   r   r      r[   rJ   r   c                       e Zd ZdS )CalculusOnlyMatrixNrW   rE   rJ   rH   r   r      r[   rJ   r   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 )NrB   rC   )rA   rB   rC   rD         rA   rA   r   rA   rD   r   r   rA   rB   rC   )r   r   rD   r   )r   rowscolslistr3   s    rH   test__MinimalMatrixr      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======rJ   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 )NrA   rB   rC   rD   r   )r$   kindr   r
   r3   r   r*   rE   rJ   rH   	test_kindr      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OrJ   c                      t          ddg d          } |                                 }|j        dk    sJ t          d          D ]}||         |dz   k    sJ d S )NrB   )rA   rC   rB   rD   rA   rD   )rV   vecr   range)mm_vecrb   s      rH   test_vecr      sn    !Q--AEEGGE:????1XX ! !Qx1q5     ! !rJ   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   rA   rA   r   r   )r   r,   r.   r-   r/   todok)abcdm1m2m3m4s           rH   
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 5rJ   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 )NrB   rC   rD   )	r   OneHalfr3   r4   Zeror5   rV   tolist)lstflat_lstr   s      rH   test_tolistr      s    E161Q3'!Q1a41qufac1:M
NCqvqsAFAq!QT1qufac1MH!Q))A88::rJ   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 )NrC   rB   r   rA   r   rA   rB   )rV   r   r   r   r3   todod)r   dicts     rH   
test_tododr      sh    !Q!%a[1a& ABBA15zq!&kq!f55D7799rJ   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 )NrC   	rA   rB   rC   rD   r   r         	   c                  .                          d          S Nr   row_deles   rH   rd   z"test_row_col_del.<locals>.<lambda>       qyy|| rJ   c                  .                          d          S Nr   r   s   rH   rd   z"test_row_col_del.<locals>.<lambda>       qyy}} rJ   c                  .                          d          S r   col_delr   s   rH   rd   z"test_row_col_del.<locals>.<lambda>   r   rJ   c                  .                          d          S r   r   r   s   rH   rd   z"test_row_col_del.<locals>.<lambda>   r   rJ   rB   r   r   rA   rD   r   r   r   r   r   r   r   r   )rV   r   
IndexErrorr   r$   r   r   s   @rH   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LrJ   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 NrA   rB   rC   )r$   r3   r4   r5   get_diag_blocks)r   r   r   s      rH   test_get_diag_blocks1r      s    AA  AAA  AAq	Aq!9q!Qi011A1#%%%%1#%%%%1#%%%%%%rJ   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$   r3   r4   r5   r%   rV   r   r   r   )r   r   r   ABCDs          rH   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)++++++rJ   c                  F    t          ddddg          } | j        dk    sJ d S )NrA   rB   r   rA   rB   )rV   shaper   s    rH   
test_shaper     s0    !QA''A7frJ   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 )NrC   rA   r   )	rA   r   r   r   rA   r   r   r   rA   rD   c                     | |z   S r^   rE   ra   s     rH   rd   ztest_reshape.<locals>.<lambda>  s
    a!e rJ   )r   rC   rA   rB   )rC   rD   rB   rC   rD   r   rB   r   ))r   rA   rB   rC   rA   rB   )rC   rD   rB   rC   rD   r   )rh   reshaper$   rV   m0r   s     rH   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OrJ   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 )NrC   r   r   rA   r   )rA   rD   r   )rV   rowr$   colr   s    rH   test_row_colr     sv    !Q ; ; ;<<A5588vaIII......5588vaIII........rJ   c                      t          d                              t          g d                    t          g dg dg dg          k    sJ d S )NrC   r   r   r   )rA   r   r   r   )r   rA   r   r   )r   r   rA   r   )rh   row_joinr$   rE   rJ   rH   test_row_joinr     si    q>>""6)))#4#455<<<<<<<! " "" " " " " "rJ   c                      t          d                              t          g dg                    t          g dg dg dg dg          k    sJ d S )NrC   r   rA   r   r   )r   rA   r   )r   r   rA   )rh   col_joinr$   rE   rJ   rH   test_col_joinr   #  sr    q>>""6999+#6#677999999999       rJ   c                  :   t          g dg          } t          dd          D ]w}g d}|                    |d           t          t	          d                              ||                               d                                                    |k    sJ xd S )NrD   rD   rD   r   r   rD   rC   r   )r$   r   insertr1   rh   
row_insertr   r   )r4rb   ls      rH   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rJ   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   r   r   r   r   rD   rC   r   r   rB   )rA   r   r   rB   rB   r   r   r   )r   rA   r   rB   rB   r   r   r   )r   r   rA   rB   rB   r   r   r   )r   r   r   rB   rB   rA   r   r   )r   r   r   rB   rB   r   rA   r   )r   r   r   rB   rB   r   r   rA   )	r$   r   r   r1   rl   
col_insertr   r   rh   )c4rb   r  s      rH   test_col_insertr  3  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++++++++++++++++++- . .. . . . . .rJ   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 )NrD   rC   c                     | dz  |z   S NrC   rE   ra   s     rH   rd   ztest_extract.<locals>.<lambda>D      QqS1W rJ   )r   rA   rC   r   rA   rB   )r   rA   rC   rD   r   
   r   r   rB   )r   r   rB   r   r      c                  4                          dgdg          S )NrD   r   extractr   s   rH   rd   ztest_extract.<locals>.<lambda>H      qyy!qc22 rJ   c                  4                          dgdg          S )Nr   rC   r  r   s   rH   rd   ztest_extract.<locals>.<lambda>I  r  rJ   )rV   r  r$   r   r   r   r   s   @rH   test_extractr  C  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3rJ   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 )NrD   rC   c                     | dz  |z   S r
  rE   ra   s     rH   rd   ztest_hstack.<locals>.<lambda>M  r  rJ   c                     | dz  |z   S r
  rE   ra   s     rH   rd   ztest_hstack.<locals>.<lambda>N      acAg rJ   )	r   rA   rB   r   rA   rB   r   rA   rB   )	rC   rD   r   rC   rD   r   rC   rD   r   )	r   r   r   r   r   r   r   r   r   )	r   r  r  r   r  r  r   r  r  c                  0                                     S r^   )hstackr   r   s   rH   rd   ztest_hstack.<locals>.<lambda>U      qxx2 rJ   r   rA   rB   r   )rV   r  r$   r   r   r)   r   r   )M1M2M3M4r   r   s       @@rH   test_hstackr!  L  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;;;;;;rJ   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 )
NrD   rC   c                     | dz  |z   S r
  rE   ra   s     rH   rd   ztest_vstack.<locals>.<lambda>b  r  rJ   c                     | dz  |z   S r
  rE   ra   s     rH   rd   ztest_vstack.<locals>.<lambda>c  r  rJ   r   r   )r   r   r   )r   r  r  c                  0                                     S r^   )vstackr  s   rH   rd   ztest_vstack.<locals>.<lambda>r  r  rJ   )rV   r&  r$   r   r   r  s   @@rH   test_vstackr'  a  sK   !Q 4 455A	1a!5!5	6	6B88Aq! 1 8 8Aq A A . . . .V + + + + + + + + + + + +M- F. F. . . . . . . :.....///=??fhh&&&&&&rJ   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 NrB   rA   )rn   r3   atomsr   r   NegativeOner   r   s    rH   
test_atomsr,  w  ss    QAq!Q1W#566A7799!amQ77777776??qc!!!!!!rJ   c                  X    t          t          gdgg          j        t          hk    sJ d S rk   )rn   r3   free_symbolsrE   rJ   rH   test_free_symbolsr/  }  s.    !qc
++8QC??????rJ   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)rB   rC   rB   )rn   r3   r4   hasr5   r   r   s    rH   test_hasr3    s    q!ff-..A5588OOOuuQxx55==q!ff-..AuuQxxrJ   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 )Nr3   rB   rA   FrC   r   Tsimplifyc                     | S r^   rE   r   s    rH   rd   z(test_is_anti_symmetric.<locals>.<lambda>  s    ! rJ   c                 ,    g | ]} |j                     S rE   expandrF   r3   s     rH   rI   z*test_is_anti_symmetric.<locals>.<listcomp>  s     #:#:#:1HAHJJ#:#:#:rJ   c                 ,    g | ]} |j                     S rE   r9  r;  s     rH   rI   z*test_is_anti_symmetric.<locals>.<listcomp>  s     #N#N#N1HAHJJ#N#N#NrJ   )r   rn   is_anti_symmetricr4   r   r   r   )r3   r   s     rH   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))))))rJ   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 )NrB   r   rA   rA   r   Fr5  rA   r   r   rA   rC   rA   )	rA   r   r   r   rB   r   r   r   rC   ))r   r   r   r   r   ))r   r   r   )r   r   r   r   )	rn   is_diagonalis_symmetricr%   r)   r$   r3   r4   r:  r   s    rH   test_diagonal_symmetricalrE    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2rJ   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 )NrA   rB   F)rn   r   is_hermitianr3   r   s    rH   test_is_hermitianrI    s    q!fr1g.//A>qsAh!Q011A>U""""q!fr1g.//A>!!!q!fr1g.//A>U""""""rJ   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 )NrC   r   )rs   is_Identityrn   r)   r(   rE   rJ   rH   test_is_IdentityrL    sv    !((((#E!HH--9999#DGG,,8888#YYYK00<<<<<<rJ   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 )NTr@   r   r   r   r   Fr   r   r   rA   rC   r   rB   )rn   r3   is_symbolicrH  s    rH   test_is_symbolicrP    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######rJ   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   TrA   rB   rC   F)rn   is_upperrH  s    rH   test_is_upperrS    sZ    iii[))A:qcA3_--A:rJ   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   FrA   rB   rC   T)rn   is_lowerrH  s    rH   test_is_lowerrV    sZ    iii[))A:qcA3_--A:rJ   c                  z    t          dgdgg          } t          ddgddgg          }| j        rJ |j        sJ d S NrA   rB   )rn   	is_squarer  s     rH   test_is_squarerZ    sS    qcA3Z((A	1v1v.	/	/B{<rJ   c                      t          ddg d          } |                                 sJ t          ddg d          } |                                 rJ d S )NrB   r@  )r   rA   r   rA   )rn   rD  r   s    rH   test_is_symmetricr\    s^    Q<<<00A>>Q<<<00A~~rJ   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)rC   rD   rA   )rB   rD   r   r   rC   )	rC   rB   r   rD   rD   rA   rA   r   rB   )	rC   rB   r   rD   rD   rA   rA   r   rB   Fr   )rn   is_upper_hessenbergis_lower_hessenbergr2  s    rH   test_is_hessenbergr`    s    iiiIII>??A    Q#>#>#>??A    Q#?#?#?@@A E)))) E))))iiiIII>??A$$$$$$rJ   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   rC   rD   rA   Fr   T)nonzero)rn   is_zero_matrixr)   r&   r3   r   rH  s    rH   test_is_zerord    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IrJ   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 )	NrB   )r   rA   rB   rC   >   rA   rB   rC   r3   Trealr   rA   )setrn   valuesr   r   s    rH   test_valuesrj    s    #Aq,,, 
 

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

&(( 1v     rJ   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 )NrC   c                     d| z  S NrB   rE   r   s    rH   rd   z test_applyfunc.<locals>.<lambda>  s
    !A# rJ   rB   c                     dS rk   rE   r   s    rH   rd   z test_applyfunc.<locals>.<lambda>      ! rJ   c                     dS NrA   rE   r   s    rH   rd   z test_applyfunc.<locals>.<lambda>  ro  rJ   )r{   r&   	applyfuncr)   r(   )r   s    rH   test_applyfuncrs    s    	c!ff	%	%B<<&&#a&&(2222<<$$a0000<<$$Q//////rJ   c                      dt           gddgg} t          ddgt            dgg          }|                                t          |           k    sJ d S )Nr   rA   )r   r{   adjointr$   )datanss     rH   test_adjointrx  !  sU    q6Aq6
C
A!Q0
1
1C;;==F3KK''''''rJ   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 )NrB   r@   rA   rC   rD   )r{   r   ImaginaryUnitas_real_imag)r   r   r   r   s       rH   test_as_real_imagr|  '  s    	aLLL	1	1B	a	
Q_	a!AO"33	Aaoq1Q_#44	6
7 
7B ??DAq7777777777rJ   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   r   rA   rB   r   rA   rB   )r{   r   Tr$   r   	conjugateHrG   s    rH   test_conjugater  2  s   q!Qi		 	 	A 3&1a&a&a&" # # # # # # 3&1qb!*$**& ' ' ' ' ' '3!++--3!#%<<<<3&Aq'2q'q'# $ $ $ $ $ $ $ $rJ   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   rB   )r{   r   r3   doitr$   rH  s    rH   	test_doitr  D  sf    s1a%8889:;;AQ41Q3;;;;6688v!ug&&&&&&rJ   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 )NrB   rA   r   r   c              3      K   | ]:}                                 |         |                                          k    V  ;d S r^   evalfrF   rb   r   s     rH   	<genexpr>ztest_evalf.<locals>.<genexpr>L  s@      >>qwwyy|qtzz||+>>>>>>rJ   c              3      K   | ]<}                     d           |         |                              d           k    V  =dS rB   Nr  r  s     rH   r  ztest_evalf.<locals>.<genexpr>M  sD      @@!qwwqzz!}!

1-@@@@@@rJ   c              3      K   | ]<}                     d           |         |                              d           k    V  =dS r  rf   r  s     rH   r  ztest_evalf.<locals>.<genexpr>N  sD      88!qss1vvayAaDFF1II%888888rJ   )r{   r   allr   rH  s   @rH   
test_evalfr  J  s    QDGGQ<00A>>>>U1XX>>>>>>>>@@@@uQxx@@@@@@@@8888uQxx8888888888rJ   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 )NrB   rC   r   Trf  rA   )complex)
r{   r3   r4   r:  r$   r   r   r   r   r   )r   r   r   s      rH   test_expandr  Q  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$%&&' ' ' ' ' 'rJ   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 rm  )r{   r   r3   r   r4   refiner   rg  r$   positivenegativer   s     rH   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9rJ   c                      t          dt                    \  t          ddfd          } t          ddfd          }|                              }|| k    sJ d S )NF, GclsrB   c                       | |z             S r^   rE   )rb   rc   Gs     rH   rd   ztest_replace.<locals>.<lambda>m      !A# rJ   c                       | |z             S r^   rE   rb   rc   Fs     rH   rd   ztest_replace.<locals>.<lambda>n  r  rJ   r   r	   r{   replace)KrG   Nr  r  s      @@rH   test_replacer  k  sr    6x(((DAqQ#6#6#6#677AQ#6#6#6#677A			!QA666666rJ   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  rB   r   rA   c                       | |z             S r^   rE   r  s     rH   rd   z"test_replace_map.<locals>.<lambda>w  r  rJ   Tr  )r  r  rG   r  r  s       @rH   test_replace_mapr  s  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666666rJ   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 )NrA   rB   rC   rD   r   r   r   ))rD   rC   rB   rA   r   r   ))rB   rD   rA   rC   i)rC   rA   )rD   rB   )r$   rot90r2  s    rH   
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NrJ   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 )
Nrg   frA   rB   )ratio   rC   rD   "   )r   r	   r{   r3   r4   r   r   r6  r$   r   tracer   )rg   r  rG   eqr   s        rH   test_simplifyr    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8rJ   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 )
NrA   rD   r   rB   r   r   r  T)simultaneous)r{   r3   subsr$   r4   rE   rJ   rH   	test_subsr    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$%&&' ' ' ' ' 'rJ   c                  j    t          g dg dg dg          } |                                 dk    sJ d S )Nr   )r   r   r   )r   r   r      )r{   r  r  s    rH   
test_tracer    sE    iii				 	 	A 7799??????rJ   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 )NrA   rD   r   rB   r   r   r  )r{   r3   xreplacer$   r4   rE   rJ   rH   test_xreplacer    s    !Q!Q 011::Aq6BBAq6Aq6"##$ $ $ $!Q!a% 455>>2q"~NNB7RG$%%& & & & & &rJ   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 )NrC   rD   )rA   rB   rC   rD   r   r   r   r   r   r  r     c                  4                          ddgg          S )Nr   r   )permuterH  s   rH   rd   ztest_permute.<locals>.<lambda>  s    qyy1a&22 rJ   c                  H                          t          d                    S )Nr3   )r  r   rH  s   rH   rd   ztest_permute.<locals>.<lambda>  s    qyy55 rJ   r   rB   rA   rN  )r   r  r  r  r@   r   )orientation)rB   rC   rA   rD   )r   r   r   r   )r  r  r   r  backward)	direction)r  r  )rC   rA   rB   rD   )r   r   r   r   )r  r   r  r  )rA   rB   r   rC   )Permutation)
r{   r   r   
ValueErrorpermute_rowsr  r$   permute_colssympy.combinatoricsr  )r   r  r   s     @rH   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> > > > > > >rJ   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rA   rA   rA   rA   rB   )r   r   rA   rA   )r   r   r   rA   r   r   r   r   r   )r   rA   rA   rA   )r{   upper_triangular)r   Rs     rH   test_upper_triangularr    sH   	 	 	A 	
1A$$$$$	&       	
2A$$$$$	&       	
A$$$$$	&        rJ   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  )rA   r   r   r   )rA   rA   r   r   )rA   rA   rA   r   rB   r   r  )r{   lower_triangularr   )r   Ls     rH   test_lower_triangularr    sH   $$$$	 	 	A 	
A$$$$$	&& ' ' ' ' ' ' 	
1A$$$$$	&       	
2A$$$$$	&        rJ   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 )NrA   r   rB   )r   r3   r4   absr   r   s    rH   test_absr    s\    q"g1v.//Aq66)Aq6CFFCFF3C*DEEEEEEEErJ   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   rB   i)rB   rD   r   rD   irA   c                       z   S r^   rE   r   rg   s   rH   rd   ztest_add.<locals>.<lambda>  s    q1u rJ   )r   r3   r4   r5   r   r   r  s   @@rH   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
:}}}}}%%%%%rJ   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  rB  )r   )rC   r   c                       z  S r^   rE   r   r   s   rH   rd   z%test_multiplication.<locals>.<lambda>-  s    qs rJ   c                       i z  S r^   rE   rH  s   rH   rd   z%test_multiplication.<locals>.<lambda>.  s    ad rJ   r   r   r   rB   r   r   r   )rB   r      r  r   z	c = a @ brD   c                  .                                    S r^   )multiply_elementwiser  s   rH   rd   z%test_multiplication.<locals>.<lambda>L  s    q55a88 rJ   r3   rC   r   r     z	c = 5 @ brA   )r   r   r   	TypeErrorevalSyntaxErrorr  r'   r   rN   r3   r$   r(   r   )r   hc2r   _hr   r   r   s         @@rH   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)NrA   rB   rC   rD   z2 @ aza @ 2)r$   
__matmul__NotImplemented__rmatmul__r  r  r  rH  s    rH   test_matmulr  t  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>.fooFr   N)rX   rY   rZ   	is_Matrixis_MatrixLiker   rE   rJ   rH   foor    s        	rJ   r  rA   rB   rC   rD   N)r   r$   )r  r   r   s      rH   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0rJ   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   rB   r$   rE   rJ   rH   rd   ztest_power.<locals>.<lambda>  s    ): rJ   rB   rC   rD   r   )i  i  i,*  i7  )rB   rA   rC   )rD   rB   rD   )r   r  rA   )	i"  i     i  i  ip  i  i  i  r   rA   d   r   r   r  r        cayley)methodmultiply)r   r   r   r&   r   r$   powr2  s    rH   
test_powerr    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ErJ   c                  `    t          ddddg          } |  t          ddddg          k    sJ d S )NrA   rB   r   r   r   rf   s    rH   test_negr    sA    QAq6**A2%aRH55555555rJ   c                  d    t          ddddg          } | | z
  t          ddddg          k    sJ d S )NrA   rB   r   r   rf   s    rH   test_subr    sC    QAq6**Aq5(A1v66666666rJ   c            	          t          ddddg          } | dz  t          ddt          j        t          d          dz  g          k    sJ d S rX  )r   r   r   rf   s    rH   test_divr    sP    QAq6**AQ3&q!afadd1f-=>>>>>>>>rJ   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 )NrB   rA  r  )r   r   r&   typer$   rE   rJ   rH   test_eyer    s    !%%a++,,<<<<!%%a(())\\\9999!%%a(())->>>>>!%%aV%4455??????rJ   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 )NrB   r  rC   rA   rA   rA   r  )r   r   r(   r$   r  rE   rJ   rH   	test_onesr    s    !&&q!,,--====!&&q))**lll::::!!!Q''6999iii2H+I+IIIII!&&q))**.?????!&&qf&5566&@@@@@@rJ   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 )NrB   r  rC   r  r  )r   r   r)   r$   r  rE   rJ   rH   
test_zerosr    s    !''1--..,,,>>>>!''**++|||;;;;""1a((FIIIyyy3I,J,JJJJJ!''**++/@@@@@!''v'66776AAAAAArJ   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 )NrA   rB   rC   )rA   rB   r   r   r   r   )rB   rC   r   r   r   r   r   )rA   rB   r   r   r   r   r   )rB   rC   r   r   r   r   r   rD   r   r   r   )r   r   r   r   r   r   )r   r   rA   rB   r   r   )r   r   rC   rD   r   r   )r   r   r   r   r   r   c                  $      dd          S )Nr   r   r   rE   r   r   r   r%   s   rH   rd   z test_diag_make.<locals>.<lambda>  s    ttAq!QQ777 rJ   r  )r   )r   r   F)unpackr  r   r  r  )r   r   rA   r   )r   r   r   rB   )r   r%   r$   r3   r4   r5   r   r  r  r   r(   r  s   @@@@rH   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 - -      rJ   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 )NrC   r   r   )r   rD   r   rA   )rA   r   r   )rC   r   rB   )rB   r   c                  .                          d          S r
  diagonalr   s   rH   rd   ztest_diagonal.<locals>.<lambda>,  s    qzz!}} rJ   c                  .                          d          S )Nr  r"  r   s   rH   rd   ztest_diagonal.<locals>.<lambda>-  s    qzz"~~ rJ   c                  8                          t                    S r^   )r#  r   r   s   rH   rd   ztest_diagonal.<locals>.<lambda>.  s    qzz"~~ rJ   c                 V    i | ]%}|t                              |                    &S rE   )r   r#  )rF   rb   rG   s     rH   
<dictcomp>z!test_diagonal.<locals>.<dictcomp>0  s=     * * * d1::a==)) * * *rJ   )r$   r   r#  tupler  r*   r   r  r(   r+   r   r   )r   srG   r   s     @@rH   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 0rJ   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 )NrC   rB   
eigenvalue)sizer-  upper)band)r.  eigenvalr-  )rB   rA   r   )r   rB   rA   r  lower)rB   r   r   r~  r   c                  6    t                               d          S rm  r   jordan_blockrE   rJ   rH   rd   z#test_jordan_block.<locals>.<lambda>D  s    0==a@@ rJ   c                  8    t                               dd          S )Ng      @rB   r4  rE   rJ   rH   rd   z#test_jordan_block.<locals>.<lambda>F  s    0==c1EE rJ   c                  8    t                               d          S )NrB   r,  r4  rE   rJ   rH   rd   z#test_jordan_block.<locals>.<lambda>H  s    0===KK rJ   c                  :    t                               dd          S )NrB   rD   )r-  r1  r4  rE   rJ   rH   rd   z#test_jordan_block.<locals>.<lambda>K  s!    **q + " " rJ   )r.  r1  )r   r5  r$   r   r  rE   rJ   rH   test_jordan_blockr9  4  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&::; ; ; ; ; ;rJ   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 )NrA   rB   rC   rD   T)	normalizer   r   ir   r   )r   rA   r   )rC   r   r  )r   r   rB   r   r         r  r   )rA   rD   r   c                  &    t          j         ddiS N	rankcheckTr$   orthogonalizevecss   rH   rd   z$test_orthogonalize.<locals>.<lambda>d      v3TJTJJ rJ   r   r   c                  &    t          j         ddiS r?  rA  rC  s   rH   rd   z$test_orthogonalize.<locals>.<lambda>g  rE  rJ   )r$   rB  r   r   r   r  )r   rg   rD  s     @rH   test_orthogonalizerG  S  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KrJ   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 )NrA   )r   rA   r   )rA   r   rA   )r   rA   rA   )rA   rA   r   rC   )r  rA   r   r   r   r   r   )rA   r   rA   r   r   r   r   )r   rA   r   rA   r   r   r   )r   r   rA   r   rA   r   r   )r   r   r   rA   rA   rA   r   )r   r   r   r   rA   rB   rA   )r   r   r   r   r   rA   rC   )rC   rA   r   r   r   r   r   )rA   rB   rA   r   r   r   r   )r   rA   rA   rA   r   r   r   )r$   	wilkinson)wminuswpluss     rH   test_wilkinsonrL  i  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 4rJ   c                      t          d          \  } }t          dd| |g          }|                    |           t          ddddg          k    sJ d S )Nx yrB   rA   r   )r   r   diffr$   r3   r4   r   s      rH   	test_diffrQ    sW    5>>DAq1a!Q((A66!99q!aV,,,,,,,,rJ   c                      t          d          \  } }t          dd| |g          }|                    |           t          dd| dz  dz  || z  g          k    sJ d S )NrN  rB   rA   )r   r   	integrater$   rP  s      rH   test_integraterT    sc    5>>DAq1a!Q((A;;q>>VAq1a461Q3-88888888rJ   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,phirC   rA   rB   r   r@   rD   c                  L                          t          ddg                    S rX  )jacobianr$   r   s   rH   rd   z test_jacobian2.<locals>.<lambda>  s    ajjA88 rJ   c                  .                                    S r^   )rW  r  s   rH   rd   z test_jacobian2.<locals>.<lambda>  s    bkk!nn rJ   )r   r   r   r   r$   rW  r   r  )rhophiXYJr   r   s        @@rH   test_jacobian2r^    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,,,,,-----rJ   c            	          t          d          \  } }t          ddd| z  |g          }|                    | d          t          ddt	          dd          |g          k    sJ d S )NrN  rB   rA   r   )r   r   limitr$   r   rP  s      rH   
test_limitra    sf    5>>DAq1a!A#q**A771a==F1a(1a..!)<========rJ   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 r^   rE   rG   vs   rH   rd   z"test_issue_13774.<locals>.<lambda>      ac rJ   c                       z  S r^   rE   rd  s   rH   rd   z"test_issue_13774.<locals>.<lambda>  rf  rJ   )r$   r   r  rd  s   @@rH   test_issue_13774rh    sc    			999iii011A		A
9kkkkk"""
9kkkkk"""""rJ   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 )
Nr3   r4   c                  *    t          j        d          S rq  )r$   	companionrE   rJ   rH   rd   z test_companion.<locals>.<lambda>  s    v/22 rJ   c                  J    t          j        t          dg                     S rq  r$   rk  r0   r   s   rH   rd   z test_companion.<locals>.<lambda>  s    v/aS!== rJ   c                  L    t          j        t          ddg                     S r)  rm  r   s   rH   rd   z test_companion.<locals>.<lambda>  s    v/aVQ@@ rJ   c                  R    t          j        t           z   g                    S r^   rm  )r3   r4   s   rH   rd   z test_companion.<locals>.<lambda>  s$    v/QqS1a&0A0ABB rJ   zc0:3rA   r   )r   r   r  r   r$   rk  r0   )c0c1r  r3   r4   s      @@rH   test_companionrr    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 8rJ   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   rA   rB   rC   )rA   rA   rA   rA   rA   )r   r$   r  zip)r3   r4   r5   r  r  s        rH   test_issue_10589ru    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LrJ   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)rX   rY   rZ   r,   _op_priorityrE   rJ   rH   Foorx    s        )6=rJ   rz  rB   r@   r   r  r  r  )r.   r$   rN   )rz  r   r   r   s       rH   test_rmul_pr19860r{    s    > > > > >" > > > 	q!\\\""AAq,,,A 	
!AaB"b*++++++++rJ   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 )NrA   rB   rC   rD   c                       z   S r^   rE   r   r   s   rH   rd   z"test_issue_18956.<locals>.<lambda>      a!e rJ   c                       z   S r^   rE   r~  s   rH   rd   z"test_issue_18956.<locals>.<lambda>  r  rJ   )Arrayr$   r   r  r~  s   @@rH   test_issue_18956r    sm    1v1vA1qe}A
9mmmmm$$$
9mmmmm$$$$$rJ   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 rX  rE   selfs    rH   __iter__ztest__eq__.<locals>.My.__iter__  s      GGGGGGFrJ   c                 ,    t          |           |         S r^   )r   )r  rb   s     rH   __getitem__z"test__eq__.<locals>.My.__getitem__  s    ::a= rJ   N)rX   rY   rZ   r  r  rE   rJ   rH   Myr    s2        	 	 		! 	! 	! 	! 	!rJ   r  rB   rA   c                       e Zd Zd ZdS )test__eq__.<locals>.My_sympyc                      t          |           S r^   r  r  s    rH   _sympy_z$test__eq__.<locals>.My_sympy._sympy_  s    $<<rJ   N)rX   rY   rZ   r  rE   rJ   rH   My_sympyr    s#        	  	  	  	  	 rJ   r  )objectr$   )r  r   r  s      rH   
test__eq__r    s    ! ! ! ! !V ! ! ! 	q!aVA9999         2       

??????rJ   )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   rK   r   r   r   r   r    r!   r"   rL   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   r  	sympy.abcr3   r4   r5   rT   rV   rh   rl   rn   rs   rx   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r!  r'  r,  r/  r3  r>  rE  rI  rL  rP  rS  rV  rZ  r\  r`  rd  rj  rs  rx  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r*  r9  rG  rL  rQ  rT  r^  ra  rh  rr  ru  r{  r  r  rE   rJ   rH   <module>r     s   G F F F F F F F F F                         ( ( ( ( ( ( 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 = = = = = = = = F F F F F F F F * * * * * *7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7 3 2 2 2 2 2                            ' & & & & & - - - - - - P P P P P P          :1 :1 :1B       NO]                 
= = =3 3 3       ~@P                 
@ @ @6 6 6       ~@P                 
@ @ @6 6 6       ~@P                 
@ @ @6 6 6       NO]                 
       ^_n                 
? ? ?&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, , ,% % %    sl   C))C-0C-D!!D%(D%<EE E4FFF,G		GGG;;G?G?