
    sg                       d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZVmWZW d dlXmYZY d dlZm[Z[m\Z\m]Z] d dl^m_Z_ d d	l`maZambZbmcZc d d
ldmeZe d dlfmgZgmhZhmiZimjZjmkZkmlZl d dlmmnZnmoZo d dlpmqZq ee%eefZree%fZseefZtd Zud Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd& Zd' Zd( Zd) Zd* Zd+ Zd, Zd- Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zd> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT 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 Zdr Zds Zdt Zdu Zdv Zdw Zekdx        Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)dÄ Z*dĄ Z+dń Z,dƄ Z-dǄ Z.dȄ Z/dɄ Z0dʄ Z1d˄ Z2d̄ Z3d̈́ Z4d΄ Z5dτ Z6ekdЄ        Z7dф Z8d҄ Z9dӄ Z:dԄ Z;dՄ Z<dք Z=dׄ Z>d؄ Z?dل Z@dڄ ZAdۄ ZBd܄ ZCd݄ ZDdބ ZEd߄ ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZO ejd      d        ZPd ZQy)    N)Hashable)FAbsAddArrayDeferredVectorEExpr	FiniteSetFloatFunctionGramSchmidtIImmutableDenseMatrixImmutableMatrixImmutableSparseMatrixIntegerKroneckerDeltaMatPowMatrixMatrixSymbolMaxMinMutableDenseMatrixMutableSparseMatrixPolyPowPurePolyQ
QuaternionRationalRootOfSSparseMatrixSymbolTupleWildbanded
casoratiancosdiagdiffexpexpandeyehessian	integratelogmatrix_multiply_elementwisenanonesoopi
randMatrix	rot_axis1	rot_axis2	rot_axis3rot_ccw_axis1rot_ccw_axis2rot_ccw_axis3signsimpsimplifysinsqrtsstrsymbolssympifytantrigsimp	wronskianzeroscancel)abcdtxyz)
NumberKindUndefinedKind)_find_reasonable_pivot_naive)MatrixErrorNonSquareMatrixError
ShapeError)
MatrixKind)_dotprodsimp_state	_simplifydotprodsimp)ArrayDerivative)ignore_warningsraisesskipskip_under_pyodideslowwarns_deprecated_sympy)captureiterable)versionc                  h   t        ddg d      } | j                  dk(  sJ | j                  dk(  sJ | d   dk(  sJ | d   dk(  sJ t        |       g dk(  sJ t        | dd d f         g dk(  sJ t        | d d df         ddgk(  sJ t        | d d d d f         t        |       k(  sJ | d d d d f   | k(  sJ t        |       | k(  sJ t        g dg dg      | k(  sJ t        g dg df      | k(  sJ t        ddg      | k(  sJ t        d	      | k(  sJ t        ddgdd
gddgg      | k(  rJ y )N      )   rg   rh            ri   ri   rk   ri   rj   rk   rl   ri   rg   rh   )ro   rn   rj   rl   )r   rowscolslistrO   s    W/var/www/html/venv/lib/python3.12/site-packages/sympy/matrices/tests/test_matrixbase.pytest__MinimalMatrixru   #   sc   q!'(A66Q;;66Q;;Q4199T7a<<7((((!Q$=I%%%!Q$=QF"""!Q$=DG###QT7a<<!9>>9i()Q...9i()Q...9i()Q...()Q...AAA/0A5665    c                     t        ddgddgg      j                  t        t              k(  sJ t        ddgddgg      j                  t        t              k(  sJ t        ddg       j                  t        t              k(  sJ t        t        gg      j                  t        t              k(  sJ t        dt        dgg      gg      j                  t        t
              k(  sJ t        dgg      j                  t        t              k(  sJ t        dt        dgg      gg      j                  t        t
              k(  sJ y Nri   rg   rh   rj   r   )r   kindrX   rR   rO   rS   r#    rv   rt   	test_kindr{   6   s   Aq6Aq6"#((Jz,BBBBAq6Aq6"#((Jz,BBBB!Q  Jz$::::A3%=J!7777Avse}%&',,
=0IIII!##z*'====!VaSE]+,-22j6OOOOrv   c                  ^   t        d      \  } }}}t        | |g||gg      }t        | |g||gg      }t        | |g||gg      }t	        | |g||gg      }|j                         |j                         cxk(  r3|j                         cxk(  r|j                         cxk(  r| |||dk(  sJ  J y )Nza:d)r   r   r   ri   ri   r   rm   )rC   r   r   r   r   todok)rJ   rK   rL   rM   m1m2m3m4s           rt   
test_todokr   @   s    JAq!Q	aVaV,	-B	1v1v.	/B	q!fq!f-	.B	AA/	0B88: 5rxxz 5RXXZ 5Aq!45 5 5 5 5rv   c                     t         j                  t         j                  t        t        z  t         j
                  gt        t        t        t        dz  gt        t         j                   t        t        z  dgg} t         j                  t         j                  t        t        z  t         j
                  t        t        t        t        dz  t        t         j                   t        t        z  dg}t        dd|      }|j                         | k(  sJ y )Nrg   rh   rj   )	r"   OneHalfrO   rP   ZerorQ   r   tolist)lstflat_lstms      rt   test_tolistr   J   s    EE1661Q3'!Q1a41quufac1:M
NCqvvqsAFFAq!QT1quufac1MHq!XA88:rv   c                      t        t        j                  dgdt        j                  gt        dgg      } dt        j                  idt        j                  idt        id}| j                         |k(  sJ y )Nr   ri   r   ri   rg   )r   r"   r   r   rO   todod)r   dicts     rt   
test_tododr   Q   s[    
QK!Q01A155zq!&&kq!f5D779rv   c                      t        ddg d       t        t         fd       t        t         fd       t        t         fd       t        t         fd        j                  d       j                  d      cxk(  rt	        g d	g d
g      k(  sJ  J  j                  d       j                  d      cxk(  rt	        ddgddgddgg      k(  sJ  J  j                  d       j                  d      cxk(  rt	        g d	g dg      k(  sJ  J  j                  d       j                  d      cxk(  rt	        ddgddgddgg      k(  sJ  J y )Nrh   	ri   rg   rh   rj   rk   rl         	   c                  &     j                  d      S Nrk   row_deles   rt   <lambda>z"test_row_col_del.<locals>.<lambda>Y       qyy| rv   c                  &     j                  d      S Nr   r   s   rt   r   z"test_row_col_del.<locals>.<lambda>Z       qyy} rv   c                  &     j                  d      S r   col_delr   s   rt   r   z"test_row_col_del.<locals>.<lambda>[   r   rv   c                  &     j                  d      S r   r   r   s   rt   r   z"test_row_col_del.<locals>.<lambda>\   r   rv   rg   ro   rn   ri   rj   rk   r   r   r   r   r   rl   r   )r   r^   
IndexErrorr   r   r   r   s   @rt   test_row_col_delr   W   s&   19:A
:+,
:,-
:+,
:,-99Q<199R=JFIy3I,JJJJJJ99Q<199R=LFQFQFQF3K,LLLLLL99Q<199R=JFIy3I,JJJJJJ99Q<199R=LFQFQFQF3K,LLLLLLrv   c                  @   t        ddgddgg      } t        dt        gt        dgg      }t        dt        dgt        dt        gt        t        t        gg      } | j                         | gk(  sJ  |j                         |gk(  sJ  |j                         |gk(  sJ y Nri   rg   rh   )r   rO   rP   rQ   get_diag_blocks)rJ   rK   rL   s      rt   test_get_diag_blocks1r   e   s    AA AAA AAq	Aq!9q!Qi01A11#%%%11#%%%11#%%%rv   c                     t        ddgddgg      } t        dt        gt        dgg      }t        dt        dgt        dt        gt        t        t        gg      }t	        | ||      t	        | ||      t	        | ||      t	        |||      f\  }}}}t        |j
                  |j                  |      }t        |j
                  |j                  |      }t        |j
                  |j                  |      }t        |j
                  |j                  |      }|j                         | ||gk(  sJ |j                         | ||gk(  sJ |j                         | ||gk(  sJ |j                         |||gk(  sJ y r   )r   rO   rP   rQ   r*   rp   rq   r   )rJ   rK   rL   ABCDs          rt   test_get_diag_blocks2r   n   sU   AA AAA AAq	Aq!9q!Qi01AaAQ1tAq!}d1amKJAq!Qqvvqvvq!Aqvvqvvq!Aqvvqvvq!Aqvvqvvq!A1a)+++1a)+++1a)+++1a)+++rv   c                      t        ddg d      } | j                  d      t        ddg d      k(  sJ | j                  d      t        ddg d      k(  sJ y )Nrh   r   r   ri   ro   ri   rj   r   )r   rowcolr   s    rt   test_row_colr   ~   sO    q!01A558vaI....558vaI....rv   c                  |    t        d      j                  t        g d            t        g dg dg dg      k(  sJ y )Nrh   r   r   r   )ri   r   r   r   )r   ri   r   r   )r   r   ri   r   )r.   row_joinr   rz   rv   rt   test_row_joinr      s;    q6??6),-<! "" " "rv   c                      t        d      j                  t        g dg            t        g dg dg dg dg      k(  sJ y )Nrh   r   ri   r   r   r   ri   r   r   r   ri   )r.   col_joinr   rz   rv   rt   test_col_joinr      s@    q6??69+./9   rv   c                      t        g dg      } t        dd      D ]U  }g d}|j                  |d       t        d      j	                  ||       j                  d      j                         |k(  rUJ  y )Nrj   rj   rj   rk   r   rj   rh   r   )r   rangeinsertr.   
row_insertr   flat)r4ils      rt   test_row_insertr      sh    		B2q\ ;	A1v  B'++A.335:::;rv   c                     t        g d      } t        dd      D ]U  }g d}|j                  |d       t        d      j	                  ||       j                  d      j                         |k(  rUJ  t        d      j	                  dt        d	d	gd	d	gd	d	gd	d	gd	d	gd	d	gg            t        g d
g dg dg dg dg dg      k(  sJ y )Nr   r   rk   r   r   r   rj   rh   r   rl   rg   )ri   r   r   rg   rg   r   r   r   )r   ri   r   rg   rg   r   r   r   )r   r   ri   rg   rg   r   r   r   )r   r   r   rg   rg   ri   r   r   )r   r   r   rg   rg   r   ri   r   )r   r   r   rg   rg   r   r   ri   )r   r   r   rH   
col_insertr   r   r.   )c4r   r   s      rt   test_col_insertr      s    			B2q\ =	AQx""1b)--a05571<<<=
 q6QAAAAAQRTUPV'W XY++++++- .. . .rv   c                  `    t        ddd         j                  g dddg      t        ddg d      k(  sJ  j                  ddgg d	      t        ddg d
      k(  sJ  j                  t        d      t        d             k(  sJ t        t         fd       t        t         fd       y )Nrj   rh   c                     | dz  |z   S Nrh   rz   r   js     rt   r   ztest_extract.<locals>.<lambda>       !A#' rv   )r   ri   rh   r   ri   rg   )r   ri   rh   rj   r   
   r   r   rg   )r   r   rg   r   r      c                  ,     j                  dgdg      S )Nrj   r   extractr   s   rt   r   ztest_extract.<locals>.<lambda>       qyy!qc2 rv   c                  ,     j                  dgdg      S )Nr   rh   r   r   s   rt   r   ztest_extract.<locals>.<lambda>   r   rv   )r   r   r   r^   r   r   s   @rt   test_extractr      s    q!)*A99YA'6!Q8K+LLLL99aVY'6!Q8K+LLLL99U1XuQx(A---
:23
:23rv   c                     t        ddd       t        ddd       j                        k(  sJ j                        t        j                        cxk(  rt        g dg dg dg dg      k(  sJ  J t        t        fd	       t        j                         t               k(  sJ t        j                  d
d
      } t        j                  d
d      }t        j                  d
d      }t        j                  d
d      }t        j                  | |||      j
                  d
k(  rj                  dk(  sJ y )Nrj   rh   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_hstack.<locals>.<lambda>   r   rv   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_hstack.<locals>.<lambda>       1Q37 rv   )	r   ri   rg   r   ri   rg   r   ri   rg   )	rh   rj   rk   rh   rj   rk   rh   rj   rk   )	rl   r   r   rl   r   r   rl   r   r   )	r   r   r   r   r   r   r   r   r   c                  (     j                         S N)hstackr   r   s   rt   r   ztest_hstack.<locals>.<lambda>       qxx2 rv   r   ri   rg   rl   )r   r   r^   rW   rH   rp   rq   )M1M2M3M4r   r   s       @@rt   test_hstackr      s#   q!)*A	1*	+B88Aq!aA 6 4&1111	B3 ;4 4 4 4 4 4
 :./==?fh&&& 
a	B	a	B	a	B	a	Bb"b"%A66Q;166Q;&&;rv   c                      t        ddd        t        ddd         j                         k(  sJ  j                           t        j                           cxk(  r3t        g dg dg dg dg dg dg dg dg dg dg dg dg      k(  sJ  J t        t         fd	       t        j                         t               k(  sJ y )
Nrj   rh   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_vstack.<locals>.<lambda>   r   rv   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_vstack.<locals>.<lambda>   r   rv   r   rh   rj   rk   rl   r   r   r   r   r   c                  (     j                         S r   )vstackr   s   rt   r   ztest_vstack.<locals>.<lambda>   r   rv   )r   r   r^   rW   r   s   @@rt   test_vstackr      s    q!)*A	1*	+B88Aq!aA 6 .& + + + + + + + + + + + +B- ;. . . . . . :./==?fh&&&rv   c                     t        t        t        fdf      } | j                  t              sJ | j                  t              rJ | j                  t
              sJ t        dt        fdf      } | j                  t              rJ y )Nrg   rh   rg   )r   rO   rP   hasrQ   r$   r   s    rt   test_hasr     si    A A558O8uuQx<55==A AuuQx<xrv   c                     t        d      } t        ddddg      j                         du sJ t        ddd| dz  d| z  z   dz   t        | dz   dz   d| t        z  t         |  t        z  dg	      }|j                         du sJ |j                  d      J |j                  d	       J t        dd|D  cg c]  }  | j                          c}       }|j                  d      du sJ t        ddt
        j                  gt        |      dd  z   D  cg c]  }  | j                          c}       }|j                         du sJ y c c} w c c} w )
NrO   rg   ri   Frh   r   Tr?   c                     | S r   rz   rs   s    rt   r   z(test_is_anti_symmetric.<locals>.<lambda>       ! rv   )rC   r   is_anti_symmetricrP   r-   r"   r   rr   )rO   r   s     rt   test_is_anti_symmetricr     sS   A!QA113u<<<q!aA!aa!eaZKAaC!aRT1MNA D(((.6664<<<q!!,Qhahhj,-A.$666q!155'DGABK*?@Qhahhj@AA E))) -@s   6EEc                  b   t        dt        gt         dgg      } | j                  sJ t        dt        z  t        gt         dgg      } | j                  du sJ t        t        t        gt         dgg      } | j                  J t        t        dgt         dgg      } | j                  du sJ y )Nri   rg   Fr   r   is_hermitianrO   rJ   s    rt   test_is_hermitianr     s    A!Q !A>>>1aA2q'"#A>>U"""A!Q !A>>!!!A!Q !A>>U"""rv   c                  J   t        t        t        gt        t        gg      }  | j                         du sJ t        g dg dg      }  | j                         du sJ t        g dddt        dgg      }  | j                         du sJ t        dt        d	gg      }  | j                         du sJ t        g d
g      }  | j                         du sJ t        dgt        gd	gg      }  | j                         du sJ t        dgdgd	gg      }  | j                         du sJ y )NTri   rg   rh   rj   rk   rl   r   r   Frk   rl   r   ri   rh   ro   rg   )r   rO   is_symbolicr  s    rt   test_is_symbolicr    s#   AA A1==?d"""l+,A1==?e###q!Ql+,A1==?d"""Aq	{A1==?d"""	{A1==?e###aS1#A1==?d"""aS1#A1==?e###rv   c                  |    t        dgdgg      } t        ddgddgg      }| j                  rJ |j                  sJ y Nri   rg   )r   	is_squarer   s     rt   test_is_squarer    sC    aSzA	!Q!Q 	!B{{?<<<rv   c                      t        ddg d      } | j                         sJ t        ddg d      } | j                         rJ y )Nrg   r   ri   ri   r   r   ri   r   ri   )r   is_symmetricr   s    rt   test_is_symmetricr    sA    q!\"A>>q!\"A~~rv   c                  $   t        g dg dg dg      } | j                  sJ t        ddg d      } | j                  sJ t        ddg d      } | j                  du sJ | j                  du sJ t        g dg dg dg      } | j                  rJ y )	Nrh   rj   ri   rg   rj   rk   r   rh   )	rh   rg   r   rj   rj   ri   ri   rk   rg   )	rh   rg   r   rj   rj   ri   ri   rk   rg   Frh   ri   rg   )r   is_upper_hessenbergis_lower_hessenbergr  s    rt   test_is_hessenbergr"     s    	9i01A    q!01A    q!12A  E)))  E)))	9i01A$$$$$rv   c            
          t        t        ddg d      j                               h dk(  sJ t        dd      } t        t        dd| dddg      j                               | dhk(  sJ y )	Nrg   r   ri   rg   rh   >   ri   rg   rh   rO   Trealr   ri   )setr   valuesr$   rs   s    rt   test_valuesr)  -  sv    vaL 

&( ! ! !sAvaQ1aL 

&(1v  rv   c                     t        dt        dgg dg      } | j                  t        ddgt        dgddgg      k(  sJ | j                  t        dt         dgg dg      k(  sJ | j                  | j	                         k(  sJ | j
                  | j                  j                  k(  sJ | j
                  t        ddgt         dgddgg      k(  sJ y )Nr   rk   ri   rg   r   ri   rg   )r   r   Tr   	conjugateHMs    rt   test_conjugater1  5  s    Aq	 	A 33&1a&a&a&" # # # # 33&1qb!*$& ' ' ' '33!++-33!##%%<<33&Aq'2q'q'# $ $ $ $rv   c                      t        t        t        t        d      gg      } | d   dt        z  k7  sJ  | j                         t        dt        z  gg      k(  sJ y )NFevaluater   rg   )r   r   rO   doitr  s    rt   	test_doitr6  G  sQ    QE*+,-AQ41Q3;;1668v!ug&&&rv   c                       t        ddt        d      dg       t         fdt        d      D              sJ t         fdt        d      D              sJ t         fdt        d      D              sJ y )Nrg   ri   rk   rl   c              3   n   K   | ],  } j                          |   |   j                         k(   . y wr   evalf.0r   rJ   s     rt   	<genexpr>ztest_evalf.<locals>.<genexpr>O  s,     >wqwwy|qtzz|+>   25c              3   r   K   | ].  } j                   d       |   |   j                  d       k(   0 ywrg   Nr9  r;  s     rt   r=  ztest_evalf.<locals>.<genexpr>P  s0     @!wqwwqz!}!

1-@   47c              3   r   K   | ].  } j                   d       |   |   j                  d       k(   0 ywr@  nr;  s     rt   r=  ztest_evalf.<locals>.<genexpr>Q  s0     8!sqss1vayAaDFF1I%8rA  )r   rA   allr   r  s   @rt   
test_evalfrF  M  sa    q!d1gq\"A>U1X>>>>@uQx@@@@8uQx8888rv   c                      t        dt              \  t        ddfd      } t        ddfd      }|j                        }|| k(  sJ y )NF, Gclsrg   c                      | |z         S r   rz   r   r   Gs     rt   r   ztest_replace.<locals>.<lambda>V      !AaC& rv   c                      | |z         S r   rz   r   r   Fs     rt   r   ztest_replace.<locals>.<lambda>W  rN  rv   rC   r   r   replace)Kr0  NrQ  rM  s      @@rt   test_replacerV  T  sK    6x(DAqq!()Aq!()A			!QA6M6rv   c            	         t        dt              \  t        ddfd      } | j                  d      \  }}|t        ddfd      k(  sJ | d       d       d       d       d       d      ik(  sJ y )	NrH  rI  rg   c                      | |z         S r   rz   rP  s     rt   r   z"test_replace_map.<locals>.<lambda>^  rN  rv   Tc                      | |z         S r   rz   rL  s     rt   r   z"test_replace_map.<locals>.<lambda>`  s    !AaC& rv   r   ri   rR  )r0  rU  rM   rQ  rM  s      @@rt   test_replace_maprZ  \  s    6x(DAqq!()A99Q4 DAqq!011111qtQqT1Q41qt4444rv   c                  P   	 ddl mm}  t        ddgddgg       ddgddgg      }         |      sJ  |  d	      |      sJ t        t        d
      j                  d      d         dk\  rt        t        fd       y y # t        $ r t	        d       Y w xY w)Nr   )arrayarray_equal?NumPy must be available to test creating matrices from ndarraysri   rg   rh   rj   Tcopynumpy.c                        d      S )NFr_  rz   )r   r\  s   rt   r   z'test_numpy_conversion.<locals>.<lambda>m  s    %"6 rv   )ra  r\  r]  ImportErrorr_   r   intre   splitr^   	TypeError)r]  np_arrayr   r\  s     @@rt   test_numpy_conversionri  c  s    P, 	1!u~AqeaU^$HuQx***uQT*H555
77!!#&q)*a/y67 0  PNOPs   B B%$B%c                  H   t        ddgddgg      } | | j                  d      cxk(  r| j                  d      k(  sJ  J | j                  d      | j                  d      cxk(  r$| j                  d      cxk(  rt        d      k(  sJ  J | j                  d      | j                  d	      cxk(  r$| j                  d
      cxk(  rt        d      k(  sJ  J | j                         | j                  d      cxk(  r$| j                  d      cxk(  rt        d      k(  sJ  J y )Nri   rg   rh   rj   r   r   rl   ))rj   rh   rg   ri   r   r   ))rg   rj   ri   rh   )rh   ri   )rj   rg   )r   rot90r  s    rt   
test_rot90rq  o  s    AA A
(aggaj(((((771:N
Nf=M6NNNNNN771:N
Nf=M6NNNNNN779Nqwwr{Nf=M6NNNNNNrv   c                  0   t        dt        gt        dgg      j                  t        d      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dgt        dgg      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dft        dfg      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dt        di      t        ddgddgg      k(  sJ t        t        t        z  gg      j                  t        t        dz
  t        t        dz
  id	      t        t        dz
  t        dz
  z  gg      k(  sJ y )
Nri   rj   rk   rg   r   r   rn  T)simultaneous)r   rO   subsrP   rz   rv   rt   	test_subsru  w  s   Aq6Aq6"#((A.&1a&1a&9I2JJJJAq6AE1:&',,q"g2w-?@B7RG$%& & &Aq6AE1:&',,q"g2w-?@B7RG$%& & &Aq6AE1:&',,aQ^<B7RG$%& & &AaC5'?AE1a!e 44HQUQUO$%&' ' 'rv   c                  "   t        ddg d      t        t        fd       t        t        fd        j                  ddgddgg      }  j
                  ddgddgg      | cxk(  rt        g d	g d
g dg      k(  sJ  J  j                  ddgddgg      }  j
                  ddgddggd      | cxk(  rt        g dg dg dg      k(  sJ  J  j                  ddgddggd      }  j
                  ddgddggdd      | cxk(  rt        g dg dg dg      k(  sJ  J  j
                  g d      t        g d	g d
g dg      k(  sJ ddlm}  j
                   |g d            t        g d	g d
g dg      k(  sJ y )Nrh   rj   )ri   rg   rh   rj   rk   rl   r   r   r   r   r      c                  .      j                   ddgg      S )Nr   rk   )permuter  s   rt   r   ztest_permute.<locals>.<lambda>  s    yqyy1a&2 rv   c                  :      j                   t        d            S )NrO   )ry  r$   r  s   rt   r   ztest_permute.<locals>.<lambda>  s    yqyy5 rv   r   rg   ri   r  r   r   r   rw  r  rq   )orientation)rg   rh   ri   rj   )rl   r   rk   r   )r   r   r   rw  backward)	direction)r|  r~  )rh   ri   rg   rj   )r   rk   rl   r   )r   r   r   rw  )ri   rg   r   rh   )Permutation)	r   r^   r   
ValueErrorpermute_rowsry  permute_colssympy.combinatoricsr  )rK   r  rJ   s     @rt   test_permuter    s   q!<=A
:23
:56AA'(A199q!fq!f%&! >v,;,;,;7= 0> > > > > >
 	AA'(A199q!fq!f%6:a ."+++$- .. . . . . 	AA':>A199q!fq!f%6ZPTU ."+++$- .. . . . . 199\"f,;,;,;.= '> > > >
 0199[./6,;,;,;;= 4> > > >rv   c                  >   t        g dg dg dg dg      } | j                  d      }|t        g dg dg dg dg      k(  sJ | j                  d      }|t        g dg dg dg dg      k(  sJ | j                         }|t        g dg dg dg dg      k(  sJ y )Nri   ri   ri   ri   rg   r   r   ri   ri   r   r   r   ri   r   r   r   r   r   )r   ri   ri   ri   )r   upper_triangular)r   Rs     rt   test_upper_triangularr    s    	 	A 	
1A$$$$	     	
2A$$$$	     	
A$$$$	    rv   c                  >   t        g dg dg dg dg      } | j                         }|t        g dg dg dg dg      k(  sJ | j                  d      }|t        g dg dg dg dg      k(  sJ | j                  d      }|t        g dg dg dg dg      k(  sJ y )Nr  ri   r   r   r   ri   ri   r   r   ri   ri   ri   r   rg   r   r  )r   lower_triangularr   Ls     rt   test_lower_triangularr    s    $$$$	 	A 	
A$$$$	& ' ' ' ' 	
1A$$$$	     	
2A$$$$	    rv   c            	      F    t        g dt        t        t        gdt        z  dt        t        z  gg         z   t        g ddt        z  dt        z  dt        z  gdt        z  ddt        z  t        z  gg      k(  sJ t        ddddg      t	        t
         fd       y )	Nro   rg   rg   rj   rl   rj   ri   c                       z   S r   rz   r   rD  s   rt   r   ztest_add.<locals>.<lambda>      q1u rv   r   rO   rP   rQ   r^   rW   r  s   @@rt   test_addr        	Aq!9qsC1o67Aq5FI!QqS!A#1dAaCE8JKLLLLq!aVA
:}%rv   c                  &   t        ddgddgg      }  | j                  d      t        k(  sJ  | j                  d      t        k(  sJ 	 t	        d       	 t	        d       y # t
        $ r Y t        $ r Y "w xY w# t
        $ r Y y t        $ r Y y w xY w)Nri   rg   rh   rj   z2 @ aza @ 2)r   
__matmul__NotImplemented__rmatmul__evalSyntaxErrorrg  r  s    rt   test_matmulr    s    AA A1<<?n,,,1==~---WW      s0   	A! A: !	A7,A76A7:	BBBc                       G d dt               } t        ddgddgg      } |        }||z  t        |d|z  gd|z  d|z  gg      k(  sJ ||z  t        |d|z  gd|z  d|z  gg      k(  sJ y)zd
    Test that if explicitly specified as non-matrix, mul reverts
    to scalar multiplication.
    c                       e Zd ZdZdZdZy)test_non_matmul.<locals>.fooFrm   N)__name__
__module____qualname__	is_Matrixis_MatrixLikeshaperz   rv   rt   foor    s    	rv   r  ri   rg   rh   rj   N)r	   r   )r  r   rK   s      rt   test_non_matmulr  	  s    
d 
 	AA AAQ3&1ac(QqS!A#J/0000Q3&1ac(QqS!A#J/0000rv   c                  L    t        ddddg      } |  t        ddddg      k(  sJ y )Nri   rg   r   r   r   rC  s    rt   test_negr    s1    q!aVA21r2h''''rv   c                  P    t        ddddg      } | | z
  t        ddddg      k(  sJ y )Nri   rg   r   r  rC  s    rt   test_subr    s3    q!aVAq5F1a!Q((((rv   c            	          t        ddddg      } | dz  t        ddt        j                  t        d      dz  g      k(  sJ y r  )r   r"   r   rC  s    rt   test_divr  #  s@    q!aVAQ3&A!Q/0000rv   c                  B   t        t        j                  dd            g dk(  sJ t        t        j                  d            g dk(  sJ t        t        j                  d            t        k(  sJ t        t        j                  dt                    t        k(  sJ y )Nrg   ri   r   r   ri   rI  )rr   r   r.   typerz   rv   rt   test_eyer  (  st    

1a !\111

1,...

1&(((

1&)*f444rv   c                     t        t        j                  dd            g dk(  sJ t        t        j                  d            g dk(  sJ t        j                  dd      t        g dg dg      k(  sJ t        t        j                  d            t        k(  sJ t        t        j                  dt                    t        k(  sJ y )Nrg   r  rh   ri   ri   ri   rI  )rr   r   r4   r  rz   rv   rt   	test_onesr  /  s    Aq!"l222A<///;;q!	9'= >>>>A6)))A6*+v555rv   c                     t        t        j                  dd            g dk(  sJ t        t        j                  d            g dk(  sJ t        j                  dd      t        g dg dg      k(  sJ t        t        j                  d            t        k(  sJ t        t        j                  dt                    t        k(  sJ y )Nrg   r  rh   r   rI  )rr   r   rH   r  rz   rv   rt   
test_zerosr  7  s    Q"#|333Q L000<<1I(>!????Q F***QF+,666rv   c                  	    t         j                  t        ddgddgg       t        dt        gt        dgg      t        dt        dgt        dt        gt        t        t        gg              t        g dg ddddt        ddgddt        dddgdddddt        gddddt        dgg      k(  sJ         t        g dg ddddt        dddgddt        ddddgdddddt        dgddddt        dt        gddddt        t        t        gg      k(  sJ         t        g dg ddddt        dddgddt        dt        ddgddt        t        t        ddgddddddt        gdddddt        dgg      k(  sJ t        t        t        t        g       t        ddgdd	gg      t        d
dgg        d      t        t        dddddgt        dddddgt        dddddgg dg dg dg dg      k(  sJ t        t         fd        d      t        dgg      k(  sJ  dd      t        ddgddgg      k(  sJ  dd      t        ddgddgg      k(  sJ  ddd      t        ddgddgddgg      k(  sJ  ddg t        ddgddgg      k(  sJ  t        ddg            t        dgdgg      k(  sJ  dddgd	gd       dgddgd	ggd      cxk(  rt        ddgddgd	dgg      k(  sJ  J t         d            t         k(  sJ t         dt                     t         k(  sJ t        j                  g d      t        j                  ddd      k(  sJ t        j                  g dd      j                  dk(  sJ t        j                  g dg      j                  dk(  sJ t        j                  g dgd      j                  dk(  sJ t        j                  g dgg      j                  dk(  sJ t        j                  t        dd      dd      t        g dg dg      k(  sJ t        j                  t        dd      dd      t        ddgddgddgddgg      k(  sJ y )Nri   rg   rh   )ri   rg   r   r   r   r   )rg   rh   r   r   r   r   r   )ri   rg   r   r   r   r   r   )rg   rh   r   r   r   r   r   rj   rk   rl   r   )r   r   r   r   r   r   )r   r   ri   rg   r   r   )r   r   rh   rj   r   r   )r   r   r   r   rk   rl   c                        dd      S )Nr   rk   rp   rz   rJ   rK   rL   r*   s   rt   r   z test_diag_make.<locals>.<lambda>l  s    tAq!QQ7 rv   r  )rq   )rp   rq   F)unpackrI  ro   ro  rl  r   r   ri   r   )r   r   r   rg   )
r   r*   rO   rP   rQ   r^   r  r  r  r4   r  s   @@@@rt   test_diag_maker  ?  sQ   ;;DAA AAA AAq	Aq!9q!Qi01A1a=F	
Aq!Q	
Aq!Q	
Aq!Q	
Aq!Q$     1a=F	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1$     1a=F	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1$     	1ayAAA AAxA 1av	
Aq!Q	
Aq!Q	
Aq!Q'      :787fqcUm###?fq!fq!f%56666?fq!fq!f%56666"fq!fq!fq!f-E&FFFF!Q=F	
A	
A$     1v6	
	
+ $    QFAu-1#1vs#E26<	
A	
A	
A> 7    
 Q=F"""QF#$...;;y!V[[Aq%9999;;y/55???;;	{#))V333;;	{51776AAA;;}%++v555;;tAqz1a(F4 -    ;;tAqz1a(F	
A	
A	
A	
A	4 -   rv   c                     t        ddt        d            j                         } | j                  d      k(  sJ t        |       dk(  sJ t        j                  d            dk(  sJ t        j                  d            dk(  sJ t        j                  d	            d
k(  sJ t	        j                               t	              k(  sJ t        ddddi      }t	        |j                               t	        |      k(  sJ t	              t	        |      k7  sJ t        t        fd       t        t        fd       t        t        fd       t        d	d      }t        t        d|j                  z
  |j                        D ci c]  }|t        |j                  |             c}      |k(  sJ y c c}w )Nrh   r   r   )r   rj   r   ri   ri   rk   r   )rh   r   rg   rg   rm   c                  &     j                  d      S r   diagonalr   s   rt   r   ztest_diagonal.<locals>.<lambda>  s    qzz!} rv   c                  &     j                  d      S )Nrn  r  r   s   rt   r   ztest_diagonal.<locals>.<lambda>  s    qzz"~ rv   c                  .     j                  t              S r   )r  r6   r   s   rt   r   ztest_diagonal.<locals>.<lambda>  s    qzz"~ rv   )r   r   r  tupler  r#   r^   r  r4   r'   rp   rq   rr   )rM   sr0  r   r   s       @rt   test_diagonalr    s   q!U1XA	

A

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

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

a(((7d1g
:,-
:-.
:-.Q
Aqx(* d1::a=)) * +./0 0 0 *s   "F?c                     t        j                  dd      t        j                  dd      cxk(  rkt        j                  dd      cxk(  rPt        j                  ddd      cxk(  r4t        j                  ddd      cxk(  rt        g dg d	g d
g      k(  sJ  J t        j                  ddd      t        g dg dg dg      k(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t        j                  dd      t        j                  dd      k(  sJ y )Nrh   rg   
eigenvalue)sizer  upper)band)r  eigenvalr  rg   ri   r   )r   rg   ri   r   lowerrg   r   r   r+  r   c                  ,    t        j                  d      S Nrg   r   jordan_blockrz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    v2215 rv   c                  .    t        j                  dd      S )Ng      @rg   r  rz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    v223: rv   c                  .    t        j                  d      S )Nrg   r  r  rz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    v22a@ rv   c                  0    t        j                  dd      S )Nrg   rj   )r  r  r  rz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    Fq" rv   )r  r  )r   r  r^   r  rz   rv   rt   test_jordan_blockr    s:   q!$(;(;A!(L ""a8""1ag6 ""q2
       q!'2f> 7       
 :56
::;
:@A
:"#
 A!4Q/0 0 0rv   c            	         t        ddgddgg      } | j                  t        dgdgg            t        dgdgg      gk(  sJ | j                  t        dgdgg      d      t        dt        d      z  dz  gt        d      dz  gg      gk(  sJ | j                  t        dgdgg      t        dgdgg            t        dgdgg      t        t        d	d      gt        d
d      gg      gk(  sJ | j                  t        dgdgg      t        dgdgg            t        dgdgg      gk(  sJ | j                  t        dgdgg            g k(  sJ t        g dg dg dg      }t        dgdgg      t        dgdgg      t        dgdgg      g |j                   t        dgdgg      t        t        dd      gt        dd      gg      gk(  sJ t        g d      t        g d      t        g d      gt	        t
        fd       t        g d      t        g d      t        g d      gt	        t
        fd       y )Nri   rg   rh   rj   T	normalizerk   r   rl   r   )r   ri   r   )rh   rl   r   )r   rk   rg   r   r         r   ro   )ri   rj   rk   c                  .    t        j                   ddiS N	rankcheckTr   orthogonalizevecss   rt   r   z$test_orthogonalize.<locals>.<lambda>      v33TJTJ rv   rn   r   c                  .    t        j                   ddiS r  r  r  s   rt   r   z$test_orthogonalize.<locals>.<lambda>  r  rv   )r   r  rA   r    r^   r  )r   rD  r  s     @rt   test_orthogonalizer    s`   AA A??6A3*-.6A3*3E2FFFF??6A3*-?>	!DG)A+a,	-./ / /??6A3*-vtaSk/BC	!qc
	VhsA&6%7(1a.9I$JKLM M M??6A3*-vtaSk/BC	"s	  ??6A3*-."444	:y12ARD1#;"s!4frdRD\6JKD1??D!	"s	fx2&7(2r:J9K%LMNO O O 9vi0&2CDD
:JK9vi0&2CDD
:JKrv   c                  \   t        j                  d      \  } }| t        g dg dg dg      k(  sJ |t        g dg dg dg      k(  sJ t        j                  d      \  } }| t        g dg dg d	g d
g dg dg dg      k(  sJ |t        g dg dg dg d
g dg dg dg      k(  sJ y )Nri   )r   ri   r   ri   r   ri   )r   ri   ri   )ri   ri   r   rh   )rn  ri   r   r   r   r   r   )ri   r   ri   r   r   r   r   )r   ri   r   ri   r   r   r   )r   r   ri   r   ri   r   r   )r   r   r   ri   ri   ri   r   )r   r   r   r   ri   rg   ri   )r   r   r   r   r   ri   rh   )rh   ri   r   r   r   r   r   )ri   rg   ri   r   r   r   r   )r   ri   ri   ri   r   r   r   )r   	wilkinson)wminuswpluss     rt   test_wilkinsonr    s    $$Q'MFEV * ) )+ , , , , F%%%' ( ( ( (
 $$Q'MFEV 8 7 7 7 7 7         F11111113 4 4 4 4rv   c            	      >   t        d      \  } }t        ddd| z  |g      }|j                  | d      t        ddt        dd      |g      k(  sJ t        ddt	        |       | z  f|ddfdd| dz  dz   ff      }|j                  | d      t        d|ddfd	f      k(  sJ y )
Nx yrg   ri   rk   rj   r   r   )ri   rj   ri   )r   rk   ri   )rC   r   limitr    r@   )rO   rP   r   r   s       rt   
test_limitr    s    5>DAqq!ac1XA771a=F1a(1a.!)<====As1vax 1a)b!QTAX->?@A771a=FI1ay*#EFFFFrv   c                       t        g dg dg dg       g dt        t         fd       t        t         fd       y )Nro   rn   r   r  c                       z  S r   rz   r0  vs   rt   r   z"test_issue_13774.<locals>.<lambda>      ac rv   c                       z  S r   rz   r  s   rt   r   z"test_issue_13774.<locals>.<lambda>  r  rv   )r   r^   rg  r  s   @@rt   test_issue_13774r     s-    	9i01AA
9k"
9k"rv   c                  :   t        d      t        d      t        t        d        t        t        fd       t        t        fd       t        t        fd       t        d      \  } }}t	        j
                  t        d| g            t	        |  g      k(  sJ t	        j
                  t        d|| g            t	        d	|  gd| gg      k(  sJ t	        j
                  t        d||| g            t	        d	d	|  gdd	| gd	d| gg      k(  sJ y )
NrO   rP   c                  ,    t        j                  d      S Nri   )r   	companionrz   rv   rt   r   z test_companion.<locals>.<lambda>
  s    v//2 rv   c                  D    t        j                  t        dg             S r  r   r	  r   rs   s   rt   r   z test_companion.<locals>.<lambda>  s    v//aS!= rv   c                  F    t        j                  t        ddg             S )Nrg   ri   r  rs   s   rt   r   z test_companion.<locals>.<lambda>  s    v//aVQ@ rv   c                  L    t        j                  t         z   g            S r   r  rO   rP   s   rt   r   z test_companion.<locals>.<lambda>  s!    v//QqS1a&0AB rv   zc0:3ri   r   )r$   r^   r  rC   r   r	  r   )c0c1c2rO   rP   s      @@rt   test_companionr    s   sAsA
:23
:=>
:@A
:BCJBBD!R!,-">>>D!Ra01RC1rc(#$% % %D!RR!45AsaRC[1a"+678 8 8rv   c            	      P   t        d      \  } }}t        | ||g      }|j                  t        | ||gg d            }|t        dgdgdgg      k(  sJ t        | | | | | g| | | | | g| | | | | gg      }|j                  t        | gdg            }|t        g dg dg dg      k(  sJ y )Nzx, y zro   ri   rg   rh   )ri   ri   ri   ri   ri   )rC   r   rt  zip)rO   rP   rQ   r   r   s        rt   test_issue_10589r    s    hGAq!	Aq		B	aAY	*	+B!qcA3((((	!Q1a1aAq/Aq!Q?C	DB	aS1#	B/?KLLLLrv   c                       G d dt               } t        ddg d      } | ddg d      }||z  }t        ||       sJ |t        ddgddgg      k(  sJ y )	Nc                   *    e Zd Zej                  dz   Zy)test_rmul_pr19860.<locals>.Foog{Gz?N)r  r  r  r   _op_priorityrz   rv   rt   Foor  #  s    )66=rv   r  rg   r  r   r         )r   r   
isinstance)r  rJ   rK   rL   s       rt   test_rmul_pr19860r  "  sh    >" > 	q!\"AAq,A 	
!AaB"b*++++rv   c                       t        ddgddgg       t        ddgddgg      t        t         fd       t        t         fd       y )Nri   rg   rh   rj   c                       z   S r   rz   r   r   s   rt   r   z"test_issue_18956.<locals>.<lambda>4      a!e rv   c                       z   S r   rz   r!  s   rt   r   z"test_issue_18956.<locals>.<lambda>5  r"  rv   )r   r   r^   rg  r!  s   @@rt   test_issue_18956r$  1  sD    1v1vA1qe}A
9m$
9m$rv   c                       G d dt               } t        ddddg      }| |        k7  sJ  G d d|       }| |       k(  sJ y )Nc                       e Zd Zd Zd Zy)test__eq__.<locals>.Myc              3      K   d d y wr  rz   selfs    rt   __iter__ztest__eq__.<locals>.My.__iter__:  s     GGs   
c                     t        |       |   S r   )rr   )r*  r   s     rt   __getitem__z"test__eq__.<locals>.My.__getitem__>  s    :a= rv   N)r  r  r  r+  r-  rz   rv   rt   Myr'  9  s    		!rv   r.  rg   ri   c                       e Zd Zd Zy)test__eq__.<locals>.My_sympyc                     t        |       S r   r  r)  s    rt   _sympy_z$test__eq__.<locals>.My_sympy._sympy_C  s    $<rv   N)r  r  r  r2  rz   rv   rt   My_sympyr0  B  s    	 rv   r3  )objectr   )r.  rJ   r3  s      rt   
test__eq__r5  8  sL    !V ! 	q!aVA99 2   
??rv   c                     t        t              D ]  \  } }|j                  dd      }|j                  dk(  rt	        d |j                  D              sJ |j
                  dk(  rt        |j
                        t        u sJ |j                  dk(  rt        |j                        t        u sJ | dz  s-t        |j                               t        t        t        fv rJ t        |j                               t        u rJ  y )Nrh   rg   )rh   rg   c              3   >   K   | ]  }t        |      t        u   y wr   )r  re  )r<  r   s     rt   r=  ztest_args.<locals>.<genexpr>L  s     (IAaC(Is   )	enumerateall_classesrH   r  rE  rp   r  re  rq   r   rr   r  r%   r   r   )rD  rJ  r   s      rt   	test_argsr:  H  s    K( 	+3IIaOww& S(I(I%IIIvv{tAFF|s222vv{tAFF|s2221u>dE5%9999	?d***	+rv   c                     t         t        fD ]H  } | j                  dd      }t               5  |j                  }d d d        |j                         k(  rHJ  t        t        fD ]H  } | j                  dd      }t               5  |j                  }d d d        |j                         k(  rHJ  y # 1 sw Y   xxY w# 1 sw Y   -xY wNrh   rg   )
r   r   rH   rb   _matr   r#   r   _smatr   )rJ  r   matsmats       rt   test_deprecated_mat_smatrA  U  s    & IIaO#% 	&&C	affh	
 22 !IIaO#% 	77D	qwwy   	!	 	
	 	s   B0B<0B9	<C	c                      t        ddt        t        g      } | t        z  t        ddt        t        z  t        t        z  g      k(  sJ y r  )r   rO   rP   rQ   )r  s    rt   test_divisionrC  b  s;    q!aVAQ3&A!QqSz****rv   c            	      F    t        g dt        t        t        gdt        z  dt        t        z  gg         z   t        g ddt        z  dt        z  dt        z  gdt        z  ddt        z  t        z  gg      k(  sJ t        ddddg      t	        t
         fd       y )	Nro   rg   r  r  rj   r  ri   c                       z   S r   rz   r  s   rt   r   ztest_sum.<locals>.<lambda>k  r  rv   r  r  s   @@rt   test_sumrF  g  r  rv   c                  &   t        ddgt        t        gg      } t        |       t        ddgt	        t              t	        t              gg      k(  sJ t        dddt        g      } t        dddt	        t              g      }t        |       |k(  sJ y )Nri   r   rg   rn  rh   )r   rO   rP   absr   r  s     rt   test_absrI  n  s~    B!Q !Aq6VaVc!fc!f%567777q!b!WAq!aQ[!Aq6Q;;rv   c                      t        d      } t        d      }| |z    | j                  |      cxk(  rt        ddgddgg      k(  sJ  J y )N)ri   rg   ro  rK  )rh   r   rg   rj   rl   ri   )r   addrJ   rK   s     rt   test_additionrO  v  s]      	A
 	  	A
 q5EAEE!H8AA'7 888888rv   c            
         t         t        fD ]  }  | ddt        d            }||d d d d f   k(  sJ |dd d f   t        ddg d      k(  sJ |d d df   t        g d      k(  sJ |ddgd d f   t        g dg dg      k(  sJ |ddgdf   |ddgdgf   k(  sJ |dddgf   |dgddgf   k(  sJ |d d ddgf   t        ddgdd	gd
dgg      k(  sJ |d   dk(  sJ |ddd d f   t        g dg dg      k(  sJ |d d ddf   t        ddgdd	gd
dgg      k(  sJ |d d ddf   |ddgdf   k(  sJ |dd d df   |dddgf   k(  sJ  | ddt        d            }|g dd d f   t        g dg dg dg dg dg      k(  sJ |d d g df   t        g dg dg dg      k(  rJ  t        j                  d      }d|d<   d|d<   d	|d<    |j                  ddgdg      t        dgdgg      k(  sJ  |j                  ddgg d      t        g dg dg      k(  sJ  |j                  g dg d      t        g dg dg dg dg      k(  sJ y )Nrh   r   ri   r   r   r   r   rg   rj   rl   r   r}   )r   rg   ri   rg   ri   r   )rh   rk   rj   rk   rj   )rl   r   r   r   r   rK  r~   rg   r   )rg   rg   rg   r   )ri   r   ri   rg   )rg   r   ri   r   rg   r   r   r   )r   r   rh   r   )r   rj   r   rj   )r   r#   r   rH   r   )r0  rJ   s     rt   test_fancy_index_matrixrS    s!   l# aE!HAadG||Aw&Ay1111Aw&++++!Q|vy)&<====!Q|q!Q!~---QF|q!q!f~---QF|v1v1v1v&>????w!||1ayFIy#9::::AaCyFQFQFQF#;<<<<1ayAq!faiL(((CaCyAa!QiL(((aE!H!#$0 )  	  K F, %  	 +4 	1AAdGAdGAdG199aVaS!VCC-	 &
 
 
 
 199aVY'63 ,    199\<0F	< 5   rv   c                  2   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 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	        |       }| j
                  |       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        t        dgdt        gg      }|dz  |k(  sJ t        t        t        gddgg      }|dz  t        t        t        gt        t        gg      k(  sJ t        t        dd            }t        dd       }t        |||g      }|j                  |      t        |g|g|gg      k(  sJ y )N)rK  ro  r   rl   rL  c                       z  S r   rz   rN  s   rt   r   z%test_multiplication.<locals>.<lambda>  s    qs rv   c                       i z  S r   rz   r  s   rt   r   z%test_multiplication.<locals>.<lambda>  s    ad rv   r}   r   r~   rg   r   rl   rm   rQ     rk  r   rj   c                      t               S r   )r2   rN  s   rt   r   z%test_multiplication.<locals>.<lambda>  s    :1a@ rv   rO   rh   rk   r   r  ri   )r   r^   rW   rg  r2   multiply_elementwiser$   r  rO   r5   r3   r4   r    )	rL   hr  r0  r   _hr   rJ   rK   s	          @@rt   test_multiplicationr]    s9     	A 	  	A
 :{#
9l#	!AT7a<<T7a<<T7a<<T7a<<T7b==T7a<<	AAT7a<<T7a<<T7a<<T7a<<T7b==T7a<<#Aq)A&&&q))))T7a<<T7a<<T7b==T7a<<T7a<<T7a<<
:@A	F3KAa   T7a<<T7ac>>T7ac>>T7a<<	
QB7N7	AAa   T7a<<T7c>>T7c>>T7a<<Q!R!"A6Q;;R1a&!"A6Vc3Z#s45555 	tAqzA
1a.BB|A!!!$			0 )   rv   c                      t        t        d        t        ddgddgg        dz  t        ddgdd	gg      k(  sJ t        g d
g dg dg        dz  t        g dg dg dg      k(  sJ  dz  t        d      k(  sJ  dz   k(  sJ t        dgg      dz  d   ddz  k(  sJ t        ddgddgg      t	        d      z  t        ddgddgg      k(  sJ t        ddgddgg        j                  dd       j                  dd      k(  sJ  t	        d      z  t        ddgddgg      k(  sJ t        d      d z  t        d      k(  sJ t        ddgd!d"gg        t        j                  z  d d  g d#k(  sJ t        ddgd$dgg        t        j                  z  dz   k(  sJ t        ddgddgg      t        j                  z  t        ddgt        j                  dgg      k(  sJ t        ddgddgg      d%z  t        ddgd%dgg      k(  sJ dd&lm	 t        dt        gddgg      z  t        dt        z  gddgg      k(  sJ t        t        t        gdt        gg      z  t        t        z  t        t        dz
  z  z  z  gdt        z  gg      k(  sJ t        t        z  t        dz
  z  z  t        z  dz  z  t        z  z  z
  dt        dz  z  z  gdt        z  t        dz
  z  z  gddt        z  gg      sJ t        t        ddgdt        dgddt        gg      z  t        t        z  t        dz
  z  z  dgdt        z  dgddt        z  gg      k(  sJ t        ddgddgg        j                  t        d             j                  d      k(  sJ t        dgg        dz  t        d'gg      cxk(  r3 j                  t        d            cxk(  r j                  d      k(  sJ  J t        g d(g d)g d*g d+g d,g      t        t        fd-       t        t        d.        t        g d/g d0g d1g        d2z  t        g d1g d1g d1g      k(  sJ t        t         fd3       t        t         fd4       t        d5dgddgg        d2z  t        d6d7gd8d9gg      k(  sJ t        g d0g d0g d0g        d2z  t        g d0g d0g d0g      k(  sJ t        g d/g d0g d0g        d2z  t        g d0g d0g d0g      k(  sJ t!        d:d;<      t#         z  t$              sJ t!        d:d;d;=      t        t         fd>       t!        d:d;d;?       z  t        t'        d      t'        d      t'        d       t'        d      z
  dz   gdt'        d      dt'        d      z
  gg d0g      k(  sJ  dz   z  t        g d0g d0g d0g      k(  sJ t        t         fd@       t        g d0g dAg dBg        dCz  t        g dDg dEg dFg      k(  sJ  dCz   dz  k(  sJ t        g d/g dGg d1g       t!        d:       z  j)                  d      j+                          dz  k(  sJ t        t        fdH       z   dz  z  k(  sJ t        g d1g d1g d1g       t!        d:d;d;I       z   k(  sJ t!        d:d;d;?       z  t-        dz  dz  dz        k(  sJ  z  j)                  d      t        d      k(  sJ  z  j)                  d      t/        d      k(  sJ t        g dJg dKg dLg        dMz  t-        dNdNdN      k(  sJ  t0        z  t-        dt0        z  dt0        z  dt0        z        k(  sJ t        g d/g d0g d0g       t        t         fdO       t        t         fdP       t        t        j                  t        j                  gt        j                  t        j                  gg        t        j                  z   k(  sJ t        ddgddgg        t        j                  z  t        t        j                  t        j                  gdt        j                  z  dt        j                  z  gg      k(  sJ y )QNc                      t        d      dz  S NrK  rg   r  rz   rv   rt   r   ztest_power.<locals>.<lambda>  s    ): rv   rg   rh   rj   rk   i  i  i,*  i7  )rg   ri   rh   )rj   rg   rj   )rl   rw  ri   )i"  i     )i  i  ip  )i  i  i  r   ri   d   r}   r   r   r  r     cayleymethodmultiplyr   rw     !   i 0   9   )rk   rg   rj   r   r   g      ?rC  i   )rh   r   r   r   rn  )r   rn  rn  r   rh   )r   rh   r   rh   r   )r   r   rh   r   rh   )rh   r   r   rh   r   c                  8     j                  t        d            S Nr   )_matrix_pow_by_jordan_blocksr"   r   s   rt   r   ztest_power.<locals>.<lambda>%  s     > >qu E rv   c                  T    t        ddgddgg      j                  t        d            S )Nri   rh   )r   rn  r"   rz   rv   rt   r   ztest_power.<locals>.<lambda>(  s*    AA'7 8 U UVWX[V\ ] rv   r   r   r         $@c                       dz  S N @rz   r  s   rt   r   ztest_power.<locals>.<lambda>+      q#v rv   c                  "     t        dd      z  S r<  r    r  s   rt   r   ztest_power.<locals>.<lambda>,      q(1a.0 rv   r   ihiO<iv0irD  T)integer)ry  negativec                       z  S r   rz   )r   rD  s   rt   r   ztest_power.<locals>.<lambda>6  s    q!t rv   )ry  nonnegativec                  "     t        dd      z  S r<  rw  r  s   rt   r   ztest_power.<locals>.<lambda>=  rx  rv   )rh   r   ri   )rj   rh   ri   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                  D     j                  d      j                         S )Nr   )rt  r5  )AnrD  s   rt   r   ztest_power.<locals>.<lambda>E  s    rwwq"~224 rv   )ry  positiver  )r   rg   r   r   rt  gd%%@c                       dz  S rs  rz   r  s   rt   r   ztest_power.<locals>.<lambda>T  ru  rv   c                       t         z  S r   r   r  s   rt   r   ztest_power.<locals>.<lambda>U  s    q!t rv   )r^   rV   r   r.   r   powr"   r   	sympy.abcrD  rJ   rK   rn  _eval_pow_by_recursionrU   r  r$   r  r   r   rt  r5  r*   rH   r   )r   r  r   rD  s   @@@@rt   
test_powerr    s   
!:;AA Aa46D$<%89999	9j12Aa46?O_MNNNNa43q6>>a4199QC5MS $'1c6111Aq6Aq6"#WQZ/6Ar7RH:M3NNNN1qe}A55H5%r*)EEEEgaj=FQGb"X#67777q68s1v%%%R2r(#$AqvvIq>\)))AQ !AqvvI>QAq6Aq6"#QVV+v1v{6K/LLLLAq6Aq6"#S(FQFS!H3E,FFFFAq6Aq6"#Q&&1ac(QF1C*DDDDAq6Aq6"#Q&&1a41qs8A2FAqD	1R*SSSS	
Aq1q5z!|ad1a4i!Q$q&01QT6:;q!ta!a%jl;!ad;= > > > Aq!9q!Qi!Q34a76	
Aq1Q3xz1	
AqD!	
Aq!tC <   
 	AA A))!A$/13K3KA3NNNNuAb5FUG9% %)G)G")N %	  $% % % % % 	 "3_oWfghA
;EF ;]^	9i01Ad7fiI>????
:~&
:01AA Ad7fz95	97MNOOOO	9i01Ad7fiI>????	9i01Ad7fiI>????sD!AadF###sD40A
:|$sDd3Aa46	1	~a3nQ6J5J^\]_`Ma5ade5ef~a3QQ_`acdQeMeffh i i i i q1u:Iy ABBBB
:01	9i01Ac6V_oOPPPPc6QT>>	*Y/0AsA	
AB771a=1a4'''
:457a!A#h 	()AsD40Aa4199sDd3Aa441adAqD))))qD;;q!A&&&qD;;q!a((()*Ac6T6662222a44Aq!tQT****	9i01A
:~&
:|$ 166166"234Aaff9>>A1vAaff9!&&!&&!1AaffHah3G HIIIIrv   c            
          t        dt        z   dt        z
  gdt        z
  dt        z   gg      } t        d      5  | j                         j	                         t        t        dt        z        t        d      z   dz  t        dt        z         t        d      z   dz  gt        dt        z         t        d      z   dz  t        dt        z        t        d      z   dz  gg      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nri   Trg   )r   rO   r[   r,   r-   r/  s    rt   $test_issue_17247_expression_blowup_1r  \  s    1ac
QqS!A#J'(A	T	 ?uuw~~61Q3x#a& !#s1Q3xi#a&&8!%;<1Q3xi#a& !#s1Q3x#a&'8!&;<+> $? ? 	? ?? ? ?s   B1C44C=c                      t        dt        z   dt        z
  gdt        z
  dt        z   gg      } t        d      5  | j                         \  }}||z  |j	                         z  sJ 	 d d d        y # 1 sw Y   y xY wNri   T)r   rO   r[   jordan_forminvr0  PJs      rt   $test_issue_17247_expression_blowup_2r  d  sl    1ac
QqS!A#J'(A	T	 }}1s1557{{  s   ,A//A8c            	      :   t        dt        z   dt        z
  gdt        z
  dt        z   gg      } t        d      5  | dz  t        dt        dz  z  dz   ddt        dz  z  z
  gddt        dz  z  z
  dt        dz  z  dz   gg      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nri   Trb  l                )r   rO   r[   r/  s    rt   $test_issue_17247_expression_blowup_3r  k  s    1ac
QqS!A#J'(A	T	 _#v+AsF25SSUs  wU  VW  Y\  V\  w\  V\  ]+.LQPSV.SSUstuwztzUz  ~\  V\  ]!^ _ _ 	_ __ _ _s   ABBc                      t        t        d            } t        d      5  | dz  t        t        d            k(  sJ 	 d d d        y # 1 sw Y   y xY w)Na1  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128]]Tr   a  [
            [     7369525394972778926719607798014571861/604462909807314587353088 - 229284202061790301477392339912557559*I/151115727451828646838272,   -19704281515163975949388435612632058035/1208925819614629174706176 + 14319858347987648723768698170712102887*I/302231454903657293676544,      -3623281909451783042932142262164941211/604462909807314587353088 - 6039240602494288615094338643452320495*I/604462909807314587353088,    109260497799140408739847239685705357695/2417851639229258349412352 - 7427566006564572463236368211555511431*I/2417851639229258349412352, -16095803767674394244695716092817006641/2417851639229258349412352 + 10336681897356760057393429626719177583*I/1208925819614629174706176,    -42207883340488041844332828574359769743/2417851639229258349412352 - 182332262671671273188016400290188468499*I/4835703278458516698824704],
            [50566491050825573392726324995779608259/1208925819614629174706176 - 90047007594468146222002432884052362145*I/2417851639229258349412352,  74273703462900000967697427843983822011/1208925819614629174706176 + 265947522682943571171988741842776095421*I/1208925819614629174706176, -116900341394390200556829767923360888429/2417851639229258349412352 - 53153263356679268823910621474478756845*I/2417851639229258349412352, 195407378023867871243426523048612490249/1208925819614629174706176 - 1242417915995360200584837585002906728929*I/9671406556917033397649408,   -863597594389821970177319682495878193/302231454903657293676544 + 476936100741548328800725360758734300481*I/9671406556917033397649408, -3154451590535653853562472176601754835575/19342813113834066795298816 - 232909875490506237386836489998407329215*I/2417851639229258349412352],
            [   -1715444997702484578716037230949868543/302231454903657293676544 + 5009695651321306866158517287924120777*I/302231454903657293676544,     -30551582497996879620371947949342101301/604462909807314587353088 - 7632518367986526187139161303331519629*I/151115727451828646838272,           312680739924495153190604170938220575/18889465931478580854784 - 108664334509328818765959789219208459*I/75557863725914323419136,    -14693696966703036206178521686918865509/604462909807314587353088 + 72345386220900843930147151999899692401*I/1208925819614629174706176,  -8218872496728882299722894680635296519/1208925819614629174706176 - 16776782833358893712645864791807664983*I/1208925819614629174706176,      143237839169380078671242929143670635137/2417851639229258349412352 + 2883817094806115974748882735218469447*I/2417851639229258349412352],
            [   3087979417831061365023111800749855987/151115727451828646838272 + 34441942370802869368851419102423997089*I/604462909807314587353088, -148309181940158040917731426845476175667/604462909807314587353088 - 263987151804109387844966835369350904919*I/9671406556917033397649408,   50259518594816377378747711930008883165/1208925819614629174706176 - 95713974916869240305450001443767979653*I/2417851639229258349412352,  153466447023875527996457943521467271119/2417851639229258349412352 + 517285524891117105834922278517084871349*I/2417851639229258349412352,  -29184653615412989036678939366291205575/604462909807314587353088 - 27551322282526322041080173287022121083*I/1208925819614629174706176,   196404220110085511863671393922447671649/1208925819614629174706176 - 1204712019400186021982272049902206202145*I/9671406556917033397649408],
            [     -2632581805949645784625606590600098779/151115727451828646838272 - 589957435912868015140272627522612771*I/37778931862957161709568,     26727850893953715274702844733506310247/302231454903657293676544 - 10825791956782128799168209600694020481*I/302231454903657293676544,      -1036348763702366164044671908440791295/151115727451828646838272 + 3188624571414467767868303105288107375*I/151115727451828646838272,     -36814959939970644875593411585393242449/604462909807314587353088 - 18457555789119782404850043842902832647*I/302231454903657293676544,      12454491297984637815063964572803058647/604462909807314587353088 - 340489532842249733975074349495329171*I/302231454903657293676544,      -19547211751145597258386735573258916681/604462909807314587353088 + 87299583775782199663414539883938008933*I/1208925819614629174706176],
            [  -40281994229560039213253423262678393183/604462909807314587353088 - 2939986850065527327299273003299736641*I/604462909807314587353088, 331940684638052085845743020267462794181/2417851639229258349412352 - 284574901963624403933361315517248458969*I/1208925819614629174706176,      6453843623051745485064693628073010961/302231454903657293676544 + 36062454107479732681350914931391590957*I/604462909807314587353088,  -147665869053634695632880753646441962067/604462909807314587353088 - 305987938660447291246597544085345123927*I/9671406556917033397649408,  107821369195275772166593879711259469423/2417851639229258349412352 - 11645185518211204108659001435013326687*I/302231454903657293676544,     64121228424717666402009446088588091619/1208925819614629174706176 + 265557133337095047883844369272389762133*I/1208925819614629174706176]])r   r"   r[   r/  s    rt   $test_issue_17247_expression_blowup_4r  s  so    8 	q K L 	MA 
T	 J"uq "H  I J J 	J JJ J Js   AAc                     t        ddd       } t        d      5  | j                  d      t        t        dz  ddt
        z  z
  t        dz  z  z   dt
        z  t        dz  z  z   t        d	
      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrl   c                 &    dd| |z   z  t         z  z   S Nri   r   r  r   s     rt   r   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>      !rQqSk!m"3 rv   TrO   rk   $   rj   EXdomain)r   r[   charpolyr   rO   r   r/  s    rt   $test_issue_17247_expression_blowup_5r    s|    q!34A	T	 _zz#(1a42!8QT/+ABqDAI+MqY]"^^^^_ _ _s   AA==Bc            	          t        ddt        d      D  cg c]  } t        | z    c}       }t        d      5  |j	                  d      dk(  sJ 	 d d d        y c c} w # 1 sw Y   y xY w)Nr   @   Tbareissr   r   r   rO   r[   detr   r0  s     rt   $test_issue_17247_expression_blowup_6r    sa    q!5":.aac./A	T	 %uuY1$$$% % /% %   AAA&c                      t        ddd       } t        d      5  | j                  d      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrl   c                 &    dd| |z   z  t         z  z   S r  r  r   s     rt   r   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>  r  rv   T	berkowitzr   )r   r[   r  r/  s    rt   $test_issue_17247_expression_blowup_7r    sE    q!34A	T	 'uu[!Q&&&' ' 's	   ;Ac            	          t        ddt        d      D  cg c]  } t        | z    c}       }t        d      5  |j	                  d      dk(  sJ 	 d d d        y c c} w # 1 sw Y   y xY w)Nr   r  Tlur   r  r  s     rt   $test_issue_17247_expression_blowup_8r    s`    q!5":.aac./A	T	  uuT{a    /   r  c                     t        ddt        d      D  cg c]  } t        | z    c}       }t        d      5  |j	                         t        g dg dg dg dg dg dg dg dg      dfk(  sJ 	 d d d        y c c} w # 1 sw Y   y xY w)Nr   r  T)ri   r   r   r   rn  r   r   r  r   ri   rg   rh   rj   rk   rl   r   r   r   r   r   r   r   r   r   r~   )r   r   rO   r[   rrefr  s     rt   $test_issue_17247_expression_blowup_9r    s    q!5":.aac./A	T	 	6vvxF********$, - /56 6 	6 6	6 	6 /	6 	6s   A:9A??Bc                      t        ddd       } t        d      5  | j                  dd      dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrl   c                 &    dd| |z   z  t         z  z   S r  r  r   s     rt   r   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>  r  rv   Tr   )r   r[   cofactorr/  s    rt   %test_issue_17247_expression_blowup_10r    sG    q!34A	T	 %zz!Q1$$$% % %s	   <Ac                      t        ddd       } t        d      5  | j                         t        dddgdz        k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrl   c                 &    dd| |z   z  t         z  z   S r  r  r   s     rt   r   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>  r  rv   Tr   r  )r   r[   cofactor_matrixr/  s    rt   %test_issue_17247_expression_blowup_11r    sT    q!34A	T	 ;  "fQA3r6&::::; ; ;s   %A		Ac                      t        ddd       } t        d      5  | j                         dddt        z  dddik(  sJ 	 d d d        y # 1 sw Y   y xY w)Nrl   c                 &    dd| |z   z  t         z  z   S r  r  r   s     rt   r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>  r  rv   Tri   r   rj   )r   r[   	eigenvalsr   r/  s    rt   %test_issue_17247_expression_blowup_12r    sS    q!34A	T	 5{{}AqsAq! 44445 5 5s   #AAc            
         t        ddt        z
  t        dz   dt        z
  gdt        z
  t        dz   dt        dz   gddt        z
  t        dz   dt        z
  gdddt        z
  dgg      } | j                         }|d   ddt        g d      gfk(  sJ |d   d   t        t        d      t        dz
  z  z
  dz   k(  sJ |d   d   dk(  sJ |d   d   d   j	                  dd      t        t         t        d      t        dz
  z  z   dz
  t        dz
  z  gdt        z  t        dz  dt        z  z
  dz   z  t        dz   t        t        d      t        dz
  z  z
  dz   z  t        dz  dt        z  z
  dz   z  z   gt         t        d      t        dz
  z  z   dz
  t        dz
  z  gdgg      k(  sJ |d   d   t        t        d      t        dz
  z  z   dz   k(  sJ |d   d   dk(  sJ |d   d   d   j	                  dd      t        t         t        d      t        dz
  z  z
  dz
  t        dz
  z  gdt        z  t        dz  dt        z  z
  dz   z  t        dz   t        t        d      t        dz
  z  z   dz   z  t        dz  dt        z  z
  dz   z  z   gt         t        d      t        dz
  z  z
  dz
  t        dz
  z  gdgg      k(  sJ y )	Nr   ri   rg   )r   r   r   ri   FT)deepnumerr   )r   rO   
eigenvectsrA   r-   )r0  evs     rt   %test_issue_17247_expression_blowup_13r    s   Aq1ua!e$	
QA1a!e$Aq1ua!e$A1q5!$	& 	'A 
Ba5QF=123333a58q47AE?*Q....a58q==a58A;55"tAwA

"QU	+,	Aq!taczA~	!a%!d1gq1uo*=*A!BAqD1Q3JQRN!S	ST"tAwA

"QU	+,	
	A :    a58q47AE?*Q....a58q==a58A;55"tAwA

"QU	+,	Aq!taczA~	!a%!d1gq1uo*=*A!BAqD1Q3JQRN!S	ST"tAwA

"QU	+,	
	A :   rv   c                     t        dddt        z   dt        z
  gdz  dt        z
  dt        z   gdz  z   dz        } t        d      5  | j                         t        t        dz   dt        z
  t        dz   dt        z
  t        dz   dt        z
  t        dz   dt        z
  gddt        z  ddt        z  ddt        z  ddt        z  gg dg dg dg dg dg dg      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   ri   rj   Tr   r  )r   rO   r[   echelon_formr/  s    rt   %test_issue_17247_expression_blowup_14r    s    q!qsAaCjlac1Q3Z\1145A	T	 	G~~6UAE1q5!a%QAq1ua!eDacqAaCQ!A#1!DDDDDDD+F $G G 	G G	G 	G 	Gs   BC&&C/c                     t        dddt        z   dt        z
  gdz  dt        z
  dt        z   gdz  z   dz        } t        d      5  | j                         t        t        dz   dt        z
  t        dz   dt        z
  t        dz   dt        z
  t        dz   dt        z
  gg      t        ddt        z  ddt        z  ddt        z  ddt        z  gg      gk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   ri   rj   Tr   )r   rO   r[   rowspacer/  s    rt   %test_issue_17247_expression_blowup_15r    s"   q!qsAaCjlac1Q3Z\1145A	T	 Pzz|QAq1ua!eQUAPQESTWXSXZ[^_Z_(`'a bdjmnpqrspsuvxyz{x{}~  AB  CD  AD  FG  IJ  KL  IL  mM  lN  eO   P  P  	P  PP P Ps   BCC(c                  *   t        dddt        z   dt        z
  gdz  dt        z
  dt        z   gdz  z   dz        } t        d      5  | j                         t        t        dz   gdt        z
  gt        dz   gdt        z
  gt        dz   gdt        z
  gt        dz   gdt        z
  gg      t        dt        z
  gt        dz   gdt        z
  gt        dz   gdt        z
  gt        dz   gdt        z
  gt        dz   gg      gk(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   ri   rj   T)r   rO   r[   columnspacer/  s    rt   %test_issue_17247_expression_blowup_16r    s   q!qsAaCjlac1Q3Z\1145A	T	 y}}6AE7AE7AE7AE7APQE7TUXYTYSZ\]`a\a[bdehidicj*k#lntwx{|w|v}  @A  DE  @E  F  HI  LM  HM  GN  PQ  TU  PU  OV  XY  \]  X]  W^  `a  de  `e  _f  hi  lm  hm  gn  pq  tu  pu  ov  vw  ox  #y  y  	y  yy y ys   B:D		Dc                     t        ddt        d      D  cg c]  } t        | z    c}       }t        d      5  |j	                         t        dgdgdgdgdgdgdgdgg      t        dgdgdgdgdgdgdgdgg      t        d	gd
gdgdgdgdgdgdgg      t        dgdgdgdgdgdgdgdgg      t        dgdgdgdgdgdgdgdgg      t        dgdgdgdgdgdgdgdgg      gk(  sJ 	 d d d        y c c} w # 1 sw Y   y xY w)Nr   r  Tri   r   r   rg   rn  rh   r   rj   r   rk   r  rl   rm  )r   r   rO   r[   	nullspacer  s     rt   %test_issue_17247_expression_blowup_17r    s]   q!5":.aac./A	T	 8{{}QCaS!aS!aS!56QCaS!aS!aS!56QCaS!aS!aS!56QCaS!aS!aS!56QCaS!aS!aS!56QCaS!aS!aS!56!8 8 	8 88 8 /8 8s   C3B2C88Dc                      t        dddt        z   dt        z
  gdz  dt        z
  dt        z   gdz  z   dz        } t        d      5  | j                         rJ 	 d d d        y # 1 sw Y   y xY w)Nrl   ri   rh   T)r   rO   r[   is_nilpotentr/  s    rt   %test_issue_17247_expression_blowup_18r    sj    q!qsAaCjlac1Q3Z\1145A	T	 $>>####$ $ $s   A""A+c                      t        t        d            } t        d      5  | j                         rJ 	 d d d        y # 1 sw Y   y xY w)Nay  [
        [             -3/4,                     0,         1/4 + I/2,                     0],
        [                0, -177/128 - 1369*I/128,                 0, -2063/256 + 541*I/128],
        [          1/2 - I,                     0,                 0,                     0],
        [                0,                     0,                 0, -177/128 - 1369*I/128]]T)r   r"   r[   is_diagonalizabler/  s    rt   %test_issue_17247_expression_blowup_19r     sO    q a b 	cA
 
T	 )&&(((() ) )s	   =Ac                     t        t        dz   dt        z
  ddgdt        z
  t        dz   dt        dz   gddt        z
  t        dz   dgdddt        dz   gg      } t        d      5  | j                         t        dddt        dz   t        dz
  z  gg dg dg dg      t        g dddt        z  ddgddt        dz   dgdddt        dz   gg      fk(  sJ 	 d d d        y # 1 sw Y   y xY w)	Nri   r   T)ri   r   r   r   r  r  rR  rg   )r   rO   r[   diagonalizer/  s    rt   %test_issue_17247_expression_blowup_20r  *  s   UQU#UQUQU#	
QUQU#	
QU#	% 	&A
 
T	 
&}}6AAA''''	+) $*
 "!"!QU"!AE"	$ %	#& 	& 		& 	&
& 
& 
&s   #A0CC&c                      t        t        d            } t        d      5  | j                  d      t        t        d            k(  sJ 	 d d d        y # 1 sw Y   y xY w)N  [
        [             -3/4,       45/32 - 37*I/16,                   0,                     0],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,                   0, -2063/256 + 541*I/128],
        [                0,         9/4 + 55*I/16, 2473/256 + 137*I/64,                     0],
        [                0,                     0,                   0, -177/128 - 1369*I/128]]TGEre  v  [
            [-26194832/3470993 - 31733264*I/3470993, 156352/3470993 + 10325632*I/3470993, 0, -7741283181072/3306971225785 + 2999007604624*I/3306971225785],
            [4408224/3470993 - 9675328*I/3470993, -2422272/3470993 + 1523712*I/3470993, 0, -1824666489984/3306971225785 - 1401091949952*I/3306971225785],
            [-26406945676288/22270005630769 + 10245925485056*I/22270005630769, 7453523312640/22270005630769 + 1601616519168*I/22270005630769, 633088/6416033 - 140288*I/6416033, 872209227109521408/21217636514687010905 + 6066405081802389504*I/21217636514687010905],
            [0, 0, 0, -11328/952745 + 87616*I/952745]]r   r"   r[   r  r/  s    rt   %test_issue_17247_expression_blowup_21r  =  j    q c d 	eA
 
T	 <uuDu!VA /: -; &< < 	< << < <   *AAc                      t        t        d            } t        d      5  | j                  d      t        t        d            k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  TLUre  r  r  r/  s    rt   %test_issue_17247_expression_blowup_22r  K  r  r  c                      t        t        d            } t        d      5  | j                  d      j	                         t        t        d            k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  TADJre  r  )r   r"   r[   r  r-   r/  s    rt   %test_issue_17247_expression_blowup_23r  Y  ss    q c d 	eA
 
T	 <uuEu"))+va 9: 7; 0< < 	< << < <s   8A""A+c                      t        t        d            } t        d      5  | j                  d      t	        t        d            k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  TCHre  r  r#   r"   r[   r  r   r/  s    rt   %test_issue_17247_expression_blowup_24r  g  sj    Q c d 	eA
 
T	 <uuDu!VA /: -; &< < 	< << < <r  c                      t        t        d            } t        d      5  | j                  d      t	        t        d            k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  TLDLre  r  r  r/  s    rt   %test_issue_17247_expression_blowup_25r  u  sj    Q c d 	eA
 
T	 <uuEu"fQ 0: .; '< < 	< << < <r  c                      t        t        d            } t        d      5  | j                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Na  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64,         -9/32 - I/16,      183/256 - 97*I/128],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512, -219/128 + 115*I/256, 6301/4096 - 6609*I/1024],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,         1/4 - 5*I/16,        65/128 + 87*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,     85/256 - 33*I/16,    805/128 + 2415*I/512],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,            1/4 + I/2,        -129/64 - 9*I/64],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,     125/64 + 87*I/64,   -2063/256 + 541*I/128],
        [               -2,         17/4 - 13*I/2,             1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,                 -3/4,         45/32 - 37*I/16],
        [     1/4 + 13*I/4,    -825/64 - 147*I/32,          21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64,    -149/64 + 49*I/32,   -177/128 - 1369*I/128]]Trj   r   r"   r[   rankr/  s    rt   %test_issue_17247_expression_blowup_26r    sL    q z { 	|A 
T	 vvx1}}     A  A	c            	         t        ddt        z
  t        dz   dt        z
  gdt        z
  t        dz   dt        dz   gddt        z
  t        dz   dt        z
  gdddt        z
  dgg      } t        d      5  | j                         \  }}|j	                         t        t        d            j	                         k(  sJ |t        t        d            k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr   ri   Ta  [
            [    0,  4*x/(x**2 - 2*x + 1), -(-17*x**4 + 12*sqrt(2)*x**4 - 4*sqrt(2)*x**3 + 6*x**3 - 6*x - 4*sqrt(2)*x + 12*sqrt(2) + 17)/(-7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 + 8*x**3 - 2*x**2 + 8*x + 6*sqrt(2)*x - 5*sqrt(2) - 7), -(12*sqrt(2)*x**4 + 17*x**4 - 6*x**3 - 4*sqrt(2)*x**3 - 4*sqrt(2)*x + 6*x - 17 + 12*sqrt(2))/(7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 - 8*x**3 + 2*x**2 - 8*x + 6*sqrt(2)*x - 5*sqrt(2) + 7)],
            [x - 1, x/(x - 1) + 1/(x - 1),                       (-7*x**3 + 5*sqrt(2)*x**3 - x**2 + sqrt(2)*x**2 - sqrt(2)*x - x - 5*sqrt(2) - 7)/(-3*x**3 + 2*sqrt(2)*x**3 - 2*sqrt(2)*x**2 + 3*x**2 + 2*sqrt(2)*x + 3*x - 3 - 2*sqrt(2)),                       (7*x**3 + 5*sqrt(2)*x**3 + x**2 + sqrt(2)*x**2 - sqrt(2)*x + x - 5*sqrt(2) + 7)/(2*sqrt(2)*x**3 + 3*x**3 - 3*x**2 - 2*sqrt(2)*x**2 - 3*x + 2*sqrt(2)*x - 2*sqrt(2) + 3)],
            [    0,                     1,                                                                                            -(-3*x**2 + 2*sqrt(2)*x**2 + 2*x - 3 - 2*sqrt(2))/(-x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x + 1 + sqrt(2)),                                                                                            -(2*sqrt(2)*x**2 + 3*x**2 - 2*x - 2*sqrt(2) + 3)/(x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x - 1 + sqrt(2))],
            [1 - x,                     0,                                                                                                                                                                                               1,                                                                                                                                                                                             1]]a  [
            [0, 1,                       0,                       0],
            [0, 0,                       0,                       0],
            [0, 0, x - sqrt(2)*(x - 1) + 1,                       0],
            [0, 0,                       0, x + sqrt(2)*(x - 1) + 1]])r   rO   r[   r  r-   r"   r  s      rt   %test_issue_17247_expression_blowup_27r    s   Aq1ua!e$	
QA1a!e$Aq1ua!e$A1q5!$	& 	'A
 
T	 K}}1xxzVA 'o %p q rx  rx  rz	z 	z z
 F1 I J K K 	K KK K Ks   1A"CC&c                      t        t        d            } t        d      5  | j                         t        d      k(  sJ 	 d d d        y # 1 sw Y   y xY w)Nr  Ta  [
            sqrt(14609315/131072 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2)])r   r"   r[   singular_valuesr/  s    rt   %test_issue_17247_expression_blowup_28r     sj    q c d 	eA
 
T	 d  "a )c 'd d 	d dd d ds   A		Ac                      t        t        d            } t        d      5  | j                         dk(  sJ 	 d d d        y # 1 sw Y   y xY w)Na	  [
        [1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I,15/128-3/32*I,19/256+551/1024*I],
        [21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I,129/256-549/512*I,42533/16384+29103/8192*I],
        [-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I],
        [1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I],
        [-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I],
        [1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I],
        [-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I],
        [-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I],
        [0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I],
        [1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I],
        [0,-4*I,0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I],
        [0,1/4+1/2*I,1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I]]Tr   r  r/  s    rt   test_issue_16823r    sL    q F G 	HA 
T	 vvx1}}  r  c                  f   t        g ddt        d      z   dt        d      z   dt        d      z
  t        d       dz
  dddddg	ddt        d      z  z   ddt        d      z  z
  ddt        d      z  z
  ddt        d      z  z   dddddg	d	t        d      z  dz
  dd
t        d      z  z
  dd
t        d      z  z   dd
t        d      z  z   ddddd
g	ddt        d      z  z
  dt        d      z  dz   dt        d      z  dz   ddt        d      z  z
  dddddg	dd
t        d      z  z   dd
t        d      z  z   d	t        d      z  dz
  dd
t        d      z  z
  ddddd
g	d	dt        d      z  z   d	dt        d      z  z
  d	dt        d      z  z
  d	dt        d      z  z   dddddg	dt        d      z
  t        d       dz
  dt        d      z   dt        d      z   dddddg	g      } t        d      5  | j                         t        ddddddddt	        d      dz  g	ddddddddt	        d       dz  g	ddddddddt	        d      dz  g	ddddddddt	        d       dz  g	g dddddddddt	        d       dz  g	g dddddddddt	        d       dz  g	g      dfk(  sJ 	 d d d        y # 1 sw Y   y xY w)N)	ri   ri   ri   ri   ri   r   ri   r   r   ri   rg   r   r   rm  r   r   rn  rh   r   rj   r  rw  T)	r   r   r   r   ri   r   r   r   r   )	r   r   r   r   r   r   ri   r   r   r  )r   rA   r[   r  r"   r/  s    rt   test_issue_18531r    s   #	
T!Wb47lAQK$q'Aq!RAN	aQiaQiaQiaQiQPRTVXYZ	DGaQtAwYQtAwYAd1gIr2qRTVWX	
QtAwY$q'	Aqay1}a!DG)mQQPRTUV	aQiQtAwY47
QAd1gIq"bRTVWX	aQiaQiaQiaQiQPRTVXYZ	
T!WtAwhlAQKd1gr1aAN	
 		A 
T	 	KvvxF1aAq!ad1f-1aAq!adU1W-1aAq!ad1f-1aAq!adU1W-*1aAq!adU1W-*1aAq!adU1W-$/ 0 2JK K 	K K	K 	K 	Ks   .B/J''J0c            	      D
   t        t        d        t        t        d        t        t        d        t        t              5  dt        d      d<   d d d        t               t        g       cxk(  r!t        g g      cxk(  rt        ddg       k(  sJ  J t	               5  t        dgd	gg      j                         dgd	ggk(  sJ 	 d d d        t	               5  t        dgd	gg      j                  j                         dggd	ggk(  sJ 	 d d d        t        dgg      } t	               5  t        j                  | d
<   d d d        t        t        dgddgg      }|}|j                  |j                  k(  sJ |j                  dk(  sJ |d d  t        dddgk(  sJ t        ddt        dddg      }|}|j                  |j                  k(  sJ |j                  dk(  sJ |d d  t        dddgk(  sJ ||k(  sJ t        |      |k(  sJ t        ddt        dd            }t        ddt        dd            }t        ||g      }|j                  dk(  sJ |j                  dk(  sJ |d d  g dk(  sJ t        t        d            t        d      k(  sJ t        t        t        d                  t        t        d            k(  sJ t        |       |j                         k(  sJ t        t        |            t        |      j!                         k(  sJ |t        |      usJ t#        dd      t#        dd      dz  gt#        dd      dz  t#        dd      dz  gg}t        |      } | t        g dg dg dg dg dg      k(  sJ | j                         |k7  sJ t        |d      j                         |k(  sJ t%        ddd      }t#        d      |g}t        |      t        ddgddg|d
   |d   g|d   |d   gg      k(  sJ t	               5  t        |d      j                         |D 	cg c]  }	|	g c}	k(  sJ 	 d d d        t        t#        d      t#        d      g      t        t#        d      g      k(  sJ t        t        d        t        t        d        t        ddgddgg      } t        | dg      }
|
t        ddgddgddgg      k(  sJ y # 1 sw Y   xY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY wc c}	w # 1 sw Y   xY w)Nc                  .    t        ddt        d            S )Nrk   rc  )r   r   rz   rv   rt   r   ztest_creation.<locals>.<lambda>  s    vaE"I6 rv   c                      t        ddg       S )Nrk   r   r  rz   rv   rt   r   ztest_creation.<locals>.<lambda>  s    vaR0 rv   c                      t        d      d   S r`  r  rz   rv   rt   r   ztest_creation.<locals>.<lambda>  s    vf~a0 rv   rk   rK  rh   r   ri   r  r}   rg   r   r   r   rj   )ri   ri   rg   rg   rg   )rh   rh   rh   rj   rj   Fr3  r   r~   r   rm   c                  B    t        t        d      t        dd      g      S )Nrg   r   rh   r   r4   rz   rv   rt   r   ztest_creation.<locals>.<lambda>$      vtAwQ
&;< rv   c                  B    t        t        d      t        dd      g      S )Nrg   rh   r   r
  rz   rv   rt   r   ztest_creation.<locals>.<lambda>%  r  rv   )rk   rl   rl   )r^   r  r   r   rb   r   r,  r"   EmptySetrO   rq   rp   r   r.   r   as_immutable
as_mutabler4   r   )r0  rJ   r   rK   c23c13rL   datr   r   r   s              rt   test_creationr    s   
:67
:01
:01	
	 vq 8vbzEVRD\EVAq"5EEEEEE		! ?T{m$++-A3+>>>?		! CT{m$&&--/aSED6?BBBCuA		! **$ 	AA A	A66QVV66Q;;Q4Aq!Q<q!aAq\"A	A66QVV66Q;;Q4Aq!Q<6M6!9>>
AuQ{
#C
AuQ|
$CSzA66Q;;66Q;;Q4....#a&>SV###?3q623s1v7NNNN1!1111/!$%);)F)F)HHHHF1I1ItAay{#d1Qik4!9Q;%?
@CsA     88:#&--/3666S!QA7A,C#;&AAtWagtWag	"    
 
 	! JcE*113S7I7IIIIJ 47DG$%a	)::::
:<=
:<= 	AA A	F	B!Q!Q!Q01111Q 
? ?C C h 8JJ JsN   S 'S*2S7,TT2
T<TS'*S47TTTTc                      t        j                  dt        dd      t        dd      dz  t        dd      dz  t        dd      dz  t        dd      dz  t        dd      dz  t        dd      dz        t        g dg dg d	g d
g      k(  sJ y )Nrh   rg   ri   rj   rk   rl   r   )ri   rg   rg   rg   rh   rh   )rj   rg   rg   rg   rk   rk   )rl   rl   r   r   rk   rk   )r   	irregularr4   rz   rv   rt   test_irregular_blockr  -  s    AtAay$q)A+tAay{Qq	!T!AYq[$q)A+tAay{<?E	G @  rv   c                     t        d      } | d dd df   t        d      k(  sJ | ddddf   t        d      k(  sJ t        ddd       }|dd d f   t        ddd      k(  sJ |dddf   t        ddd      k(  sJ t        g d	g d
g dg dg      }|d d df   t        ddg d      k(  sJ |dd d d f   t        g dg dg      k(  sJ y )Nrj   rh   rg   r   c                     | |z   S r   rz   r   s     rt   r   ztest_slicing.<locals>.<lambda>;  
    1q5 rv   ri   r   r   r$  )rj   rk   rl   r   )r   r   r   r   )rw        r  r   )rh   r   r   r  r   )r.   rH   r   )m0r   r   s      rt   test_slicingr  6  s    	QBbqb"1"f:Qac1Q3h<58###	1(	)Bad8vaI....ac1f:1f----	|^=MN	OBae9q!^4444bc1f:1A BCCCCrv   c                     t        d      } t        d      | ddddf<   | t        d      k(  sJ t        d      | d dd df<   | t        d      k(  sJ t        ddd      | d d df<   | t        d      k(  sJ t        d      | d d d d f<   | t        d      k(  sJ g d| d d d d f<   | t        d      k(  sJ ddg| d ddf<   | t        d	      k(  sJ y )
Nrj   rg   )r  r  r  r  ri   r  r   )r  )rg   ri   r   r   )rh   r   ri   r   )rj   r   r   ri   r  r  r{  r  r  r     ))r   rg   rh   rj   )r   rl   r   r   r{  r   )rH   r.   r   r   s    rt   test_submatrix_assignmentr"  D  s$   aAa&Aac1Q3hK & ' ' ' ' AAbqb"1"fIA;;Q<(AadG & ' ' ' ' AhAadGa==MAadG * + + + + 1vAbqb!eH * + + + +rv   c                      t        d      } | j                  dd      t        ddd      k(  sJ t        ddd       }|j                  dd      t        d      k(  sJ |j                  dd	      t        d
      k(  sJ y )Nrh   ri   r   )	ri   r   r   r   ri   r   r   r   ri   rj   c                     | |z   S r   rz   r   s     rt   r   ztest_reshape.<locals>.<lambda>c  r  rv   )r   r  )rh   rj   rg   r   rg   rl   ))r   ri   rg   rh   ri   rg   )rh   rj   rg   rh   rj   rk   )r.   reshaper   r  r   s     rt   test_reshaper'  `  s    	QB::ava,GHHHH	1(	)B::	1DEF F F::av&NOOOOrv   c                      t        d      } | j                  d       t        d      dz  k(  sJ | j                  d       t        d      k(  sJ y )Nrh   c                     d| z  S r  rz   rs   s    rt   r   z test_applyfunc.<locals>.<lambda>k  s
    !A# rv   rg   c                      yNr   rz   rs   s    rt   r   z test_applyfunc.<locals>.<lambda>l      rv   )r.   	applyfuncrH   )r  s    rt   test_applyfuncr.  i  sE    	QB<<&#a&(222<<$a000rv   c            	         t        t        t        t        z   z  dgt        t        z   t        z  t        z  t        t        t        t        t        z   z  z   z  gg      } | j                         }|t        t        t        z  t        dz  z   dgt        t        dz  z  t        t        dz  z  z   t        t        z  t        t        dz  z  z   t        dz  z   gg      k(  sJ t	        dd      }t        t        t        |z        g      j                  d      t        t        |      t        t        |      z  z   g      k(  sJ t        g dg dg d	g      j                         t        d
d
t        dd      gg dg dg      k(  sJ y )Nrg   rh   rJ   Tr%  )complexr   )r   r   r   r   ri   )r   ri   r   r   )
r   rO   rP   r-   r$   r,   r   r)   r@   r    )r  r   rJ   s      rt   test_expandr1  o  sW   	!QU)QAE19a-A1q5	M1B!CD	EB	B
A#1*a1QT6AadF?AaC!AqD&L1a4,?@AC C C C 	sA3qs8*$$T$2A3q6!"#$ $ $ 9j)4599;v	
Ax1~G @   rv   c            	      (   t        t        t              dz  t        t        dz        gt        t        dz        t        t              dz  z  t        t        dz        t        t              dz  z  gg      } | j                  t        j                  t              t        j                  t              z        }|t        t        dz  t        t              gt        dz  t        t              z  t        dz  t        t              z  gg      k(  sJ | j                  t        j                  t              t        j                  t              z        }|t        t        dz  t        gt        t        dz  z  t        dz  t        z  gg      k(  sJ | j                  t        j                  t              t        j                  t              z        }|t        t        dz  t         gt         t        dz  z  t        dz   t        z  gg      k(  sJ y r  )
r   r   rO   rA   rP   refiner   r&  r  rz  r&  s     rt   test_refiner4    st   	#a&!)T!Q$Z(adCFAI%tAqDz#a&!)';<> 
?B	166!9qvvay(	)B!Q$A!Q$s1v+q!tCF{)CDEEEE	1::a=1::a=0	1B!Q$Qq!tVQT!V$456666	1::a=1::a=0	1B!Q$qbAg1uQw%789999rv   c                  z   t        dd      } t        ddd      } | t        ddd      k(  sJ t        dddd      } t        ddd      } | t        ddd      k(  sJ | j                         } |j                          || k(  sJ t        j                  d      }| t        dd|      k(  sJ d	D ])  }d
D ]"  }t        |d||      } | | j
                  k(  r"J  + t        ddd      } d}t        | j                  d         D ]/  }t        | j                  d         D ]  }| ||f   dk(  s|dz  } 1 |dk(  sJ y )Nrh   )seedrj   r      T)r6  	symmetric)r8  prng)r   r   )rb  F      )r8  percentr9  r   ri   r:  )minr<  r;  )r7   r`  r?   randomRandomr,  r   r  )r0  r"   rngr  r<  
zero_countr   r   s           rt   test_randomrB    sb   1aA1aa A
1aa((((1aC A11-A
115555	AAJJL6M6
--
C
137777  $ 	G44sKA8O8	
 	21b)AJ1771:  qwwqz" 	 AAw!|a
	   rv   c                     t        d      } | j                         t        d      k(  sJ | j                  d      t        d      k(  sJ | j                  d      t        d      k(  sJ | j                  d      t        d      k(  sJ | j                  d      t        d      k(  sJ | j                  d      t        d      k(  sJ t        g dg d	g d
g      } | j                         }| |z  t        d      k(  sJ | j                  d      |k(  sJ | j                  d      |k(  sJ | j                  d      |k(  sJ | j                  d      |k(  sJ | j                  d      |k(  sJ t        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 d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      }|j                  d%      |z  t        |j                  d&         k(  sJ t         g d'g d(g d)g      t        fd*d+j                         D              sJ t         g d'g d(g d)g      t        fd,d+j                         D              sJ y )-Nrj   r  re  r  r  r  QR)rg   rh   rk   )rh   rl   rg   )r   rh   rl   rh   )r   r   r   r   ri   r   r   ri   r   ri   ri   ri   r   r   r   ri   ri   r   r   r   r   ri   ri   r   r   )ri   r   ri   r   r   ri   r   r   ri   r   ri   r   ri   ri   ri   r   ri   ri   r   r   r   r   r   ri   r   )ri   ri   ri   ri   r   ri   r   r   ri   ri   r   r   r   ri   ri   ri   ri   r   r   ri   ri   r   r   ri   ri   )ri   r   r   r   r   r   ri   ri   r   r   ri   ri   ri   r   r   r   r   r   r   ri   r   r   ri   r   r   )ri   r   r   ri   ri   ri   r   ri   r   r   ri   r   r   ri   ri   ri   r   ri   r   r   r   ri   r   r   r   )ri   r   r   r   r   r   r   r   ri   ri   ri   r   ri   r   ri   ri   ri   ri   r   r   r   ri   ri   r   ri   )r   ri   ri   ri   r   r   r   r   ri   ri   ri   r   ri   r   ri   r   ri   r   ri   r   ri   r   r   ri   r   )ri   ri   r   r   r   ri   ri   r   r   ri   ri   r   ri   ri   r   ri   ri   r   ri   r   ri   ri   r   ri   ri   )r   r   ri   ri   ri   r   r   ri   ri   r   ri   ri   r   ri   r   r   r   r   r   r   ri   r   ri   r   ri   )ri   r   ri   ri   ri   r   ri   r   r   ri   ri   r   ri   ri   r   ri   ri   ri   ri   r   ri   ri   ri   r   r   )r   ri   ri   r   r   r   r   ri   ri   r   ri   r   ri   r   ri   ri   r   r   ri   r   r   r   ri   ri   r   )ri   r   r   ri   r   ri   r   ri   ri   r   r   ri   r   ri   r   ri   r   ri   r   ri   r   ri   ri   r   r   )r   ri   ri   r   r   ri   ri   r   r   ri   ri   r   ri   r   r   r   ri   r   r   ri   r   ri   ri   r   ri   )ri   ri   ri   r   ri   r   r   ri   r   r   ri   r   ri   ri   r   r   ri   ri   ri   r   ri   r   ri   ri   r   )r   ri   r   r   r   r   ri   ri   r   ri   ri   r   r   r   r   ri   r   ri   ri   ri   r   r   ri   r   r   )ri   ri   ri   ri   r   ri   ri   ri   ri   ri   ri   r   r   r   ri   r   ri   r   ri   r   r   ri   r   r   r   )r   r   r   ri   r   ri   ri   r   ri   r   r   r   r   r   ri   r   ri   ri   r   ri   r   ri   ri   r   ri   )r   ri   r   ri   r   r   r   r   ri   ri   ri   r   r   ri   ri   ri   r   r   ri   r   ri   ri   r   ri   ri   )ri   r   ri   ri   r   ri   r   ri   ri   r   ri   ri   ri   r   ri   r   r   r   r   ri   r   r   ri   r   ri   )r   r   r   ri   r   r   ri   ri   r   ri   ri   r   ri   r   ri   ri   r   r   r   r   r   r   r   r   r   )ri   r   r   r   r   ri   r   ri   r   r   ri   ri   r   ri   r   ri   ri   ri   ri   r   ri   ri   ri   ri   ri   )r   r   ri   ri   r   ri   r   r   r   ri   r   r   ri   r   r   ri   r   r   r   ri   r   ri   r   ri   ri   )r   r   r   r   r   ri   ri   ri   r   ri   ri   ri   r   r   r   ri   r   ri   ri   r   ri   ri   r   r   r   )r   r   ri   r   ri   ri   r   ri   ri   ri   r   r   ri   r   ri   r   r   ri   r   ri   r   r   r   r   r   )r   r   r   ri   ri   r   ri   ri   ri   r   r   ri   r   ri   r   ri   ri   r   ri   ri   ri   r   r   ri   r   BLOCKr   )rj  1      )r   G   ^   );      A   c              3   V   K   | ]   }t        j                  |            u  " y wr   r  r  r<  r  rJ  r   s     rt   r=  ztest_inverse.<locals>.<genexpr>  "     LtAEE!H~$L   &)zGE ADJ LU CH LDL QRc              3   V   K   | ]   }t        j                  |            u  " y wr   rN  rO  s     rt   r=  ztest_inverse.<locals>.<genexpr>  rP  rQ  )r.   r  r   r  r   rE  rf  r   )r   AinvAArJ  r   s      @@rt   test_inverserU    sm   AA557c!f555Q'''555#a&(((555Q'''555#a&(((555Q'''	 	A 557DT6SV555%%%555$&&&555%%%555$&&&555%%%	\WWWWWWWWWWWWWWWWWWWWWWWW1Y 
ZB2 666!B&#bhhqk*::::
C\ 	A L.C.I.I.KLLLL
C\ 	A L.C.I.I.KLLLLrv   c                     t        d      \  } }}}}t        d      }t        dddddd| z  |z  d|z  |z  z
  d| z  d|z  z
  z  d| z  |z  d| z  d|z  z
  z  gdddddd| z  |z  d|z  |z  z   d| z  |z  d|dz  z  z
  z  dgdd| z  |z  d|z  |z  z
  d| z  d|z  z
  z  d| z  |z  d| z  d|z  z
  z  ddddgdd| z  |z  d|z  |z  z   d| z  |z  d|dz  z  z
  z  dddddgdddd| z  |z  d|z  |z  z
  d| z  d|z  z
  z  d| z  |z  d| z  d|z  z
  z  ddgdddd| z  |z  d|z  |z  z   d| z  |z  d|dz  z  z
  z  dddgdd| z  |z  |z  d|z  | z  d|z  |z  z
  z  dd| z  |z  |z  d|z  | z  d|z  |z  z
  z  dd| z  |z  |z  d|z  | z  d|z  |z  z
  z  dgg      }|j                         }||z  t        d      z
  j	                  t
              t        d      k(  sJ t        d	 |j                  t              D              d
k  sJ y )Nz)Tau Tau_syn_in Tau_syn_ex C_m Tau_syn_gap__hr         ?       @      rg   r   c              3   2   K   | ]  }t        |        y wr   rH  r<  fs     rt   r=  z:test_inverse_symbolic_float_issue_26821.<locals>.<genexpr>       /!s1v/        @@)
rC   r   r  r.   r-  rI   rH   maxatomsr   )Tau
Tau_syn_in
Tau_syn_exC_mTau_syn_gaprW  r0  Mis           rt   'test_inverse_symbolic_float_issue_26821rj    s   4;<g4h1CZk
%.C	
1QqCGCKJs 22SWS^5KLTRUXV`M`befibijmnxjxbxMyz	
1QqDHSLZ!33c#gj6HZYZ]IZ6Z[\_`	
CGCKJs**SWS^-CDT#XjEXZ]^aZabefpbpZpEqrstuvwxyz	
DHSLZ++c#gj.@ZQR]AR.RSTWXYZ[\]^_`	
1QCCOC//#c'#k/2IJ4PS8T_K_adehahilmxixaxKyz{|}~	
1QSS_S003s7;3Fs;XY>GY3YZ[^_`abc	T#Xj $c#gck#c'*2D&DEaSQ\H\]`H`befibijmbmnqrunu  wB  oB  cB  IC  DE  FJ  KN  FN  OY  FY  Z]  F]  _b  cf  _f  gj  _j  kn  or  kr  s}  k}  _}  F~  @  	A 	A 
BbD3q6M$$V,a888 /rxx//#555rv   c                     t        d      \  } }}}}t        d      }t        g dd|dz  z  d|z  dddddgg dddd|dz  z  d|z  dddgg d	ddddd|dz  z  d|z  dgd
|z  dd
|z  dd
|z  dd| z  gg      }||z  j                         }|j                  |      ||z  z
  j	                  t
              t        d      k(  sJ t        d |j                  t              D              dk  sJ y )Nz-Tau, Tau_syn_in, Tau_syn_ex, C_m, Tau_syn_gaprW  )r   rX  r   r   r   r   r   r   rg   r   r   )r   r   r   rX  r   r   r   )r   r   r   r   r   ri   r   ri   r   c              3   2   K   | ]  }t        |        y wr   r\  r]  s     rt   r=  z6test_matrix_exponential_issue_26821.<locals>.<genexpr>  r_  r`  ra  )
rC   r   r,   r+   r-  rI   rH   rb  rc  r   )rJ   rK   rL   rM   r   rN   r0  Mes           rt   #test_matrix_exponential_issue_26821rn    s    KLMAq!QA;	AqD"Q$aAQ1;;Q1a4AQ1;;QaAr!Q$w1;qSQAaCA1Q31bd; 	A A#BGGAJ2((0E!H<<< /rxx//#555rv   c                     t        ddt        dz  t        z  dt        dz  z  t        t        z  z   g      } t        t        g}| j                  |      t        dt        z  t        z  t        dz  gt        dt        z  t        z   gg      k(  sJ t        ddt        t        dz  t        dz  z  g      } | j                  |      t        ddgdt        z  t        dz  z  t        dz  dz  t        dz  z  gg      k(  sJ t        dz  t        z  }t        t        g}t	        ||      t        dt        z  dt        z  gdt        z  dgg      k(  sJ t        dz  t        dz  z  }t	        ||      t        dt        dz  z  dt        z  t        dz  z  gdt        z  t        dz  z  dt        dz  z  t        z  gg      k(  sJ t
        t        t        dz  z  z   }t        dz  dt        dz  z  z   }t        ddt        z  gdt        z  dt        z  gg      }|t	        |t        t        t        g            k(  sJ |t	        |t        t        t        g      j                        k(  sJ t	        |t        t        f|g      t        ddt        dz  z  dt        z  gdt        dz  z  dt        z  dt        z  gdt        z  dt        z  dgg      k(  sJ y )Nri   rg   rj   rh   r   rl   )r   rO   rP   jacobianr/   rQ   r,  )r  symsr^  ganss        rt   test_jacobian_hessianrt    s   q!ad1fa1fqsl+,Aq6D::dv!Aq!t}q!A#'l&CDDDDq!aAad^$A::dv1v!AqD!Q$q&A+/F&GHHHH	1QAq6D1dv!QqSzAaC8&<====	1QT	A1d1a41QT"QqSAXqAvax$89:; ; ; 	
AadF
A	1qAvA
1!*Q3!* C'!VQF^,,,,'!VQF^--....1q!fqc"f1a41	
1a4AaC1aCAaC1. '       rv   c                     t        t        t              t        t              gt              t        t              dz  t        t              dz  z   k(  sJ t        t	        t              t	        dt        z        gt              t	        dt        z        k(  sJ t        t	        t              t        gt              t	        t              t        t	        t              z  z
  k(  sJ t        dt        t        dz  gt              dk(  sJ dt	        t              z  t        t              z  t        z  dt        t              z  t	        t              z  t        dz  z  z   dt	        t              z  t        t              z  t        z  z
  t	        t              t        t              z  t        dz  z  z
  t	        t              t        t              z  t        dz  z  z   } t        t	        t              t        t              t        dz  gt              j                         | k(  sJ t        t	        t              t        t              t        dz  gt        d      j                         | k(  sJ t        dz   t        t              dz  z  t        dz  t        t              dz  z  z
  dt        z  t        t              dz  z  z
  dt        z  t        t              dz  z  z
  }t        t        t              t        t              t        dz  gt              j                         |k(  sJ t        t        t              t        t              t        dz  gt        d      j                         |k(  sJ t        g t              dk(  sJ y )Nrg   rh   ri   r  rl   r  re  )rG   r)   rO   r@   r,   r-   )w1w2s     rt   test_wronskianrx  1  s   c!fc!f%q)SVQYQ-BBBBc!fc!A#h'+s1Q3x777c!fa[!$A3q6(9999aAqD\1%***	CF3q6	!	aAhs1voad2	2Qs1vXc!f_Q5F	FAs1vad
 VCF]1a4/
0Bc!fc!fad+Q/668B>>>c!fc!fad+Q{CJJL  
Q$s1vqy1a4A	>	)AaCA	M	9AaCA	M	IBc!fc!fad+Q/668B>>>c!fc!fad+Q{CJJL  Rq   rv   c                     t        dt        gt        dgg      j                  t        di      t        ddgddgg      k(  sJ t        t        dgt        t        z   dgg      j                  t        dt        di      t        ddgddgg      k(  sJ t        D ]8  } t        ddgddgg      | j                  d      j                  ddi      k(  r8J  y )	Nri   rj   rk   rg   r   r   rn  r   )r   rO   xreplacerP   r9  r.   rI  s    rt   test_xreplacer{  B  s    Aq6Aq6"#,,aV4AA ! ! !Aq6AE1:&'00!RB@Q"a!"# # # G1v1v&'3771:+>+>1v+FFFFGrv   c                  $   t        d      } t        d      }t        dt        z  dt        z  z   t        t        t        z  z   t        z  g |t              t         |t              z  z    |t              z  dd| z  t        | t        z        | z  z
  z  t        z  gg      }|j                          |t        t        t        z   t        t        z  z  dt        z   gdt        z   dddt        t        | z        z  z
  t        | z  z  z  gg      k(  sJ dt        z   dz  }t        |gg      }|j                          |t        |gg      k(  sJ |j                  t               |t        |j                  t              gg      k(  sJ t        d      } t        d      }t        dt        z  dt        z  z   t        t        t        z  z   t        z  g |t              t         |t              z  z    |t              z  dd| z  t        | t        z        | z  z
  z  t        z  gg      }|j                         t        t        t        z   t        t        z  z  dt        z   gdt        z   dddt        t        | z        z  z
  t        | z  z  z  gg      k(  sJ dt        z   dz  }t        |gg      }|j                         t        |gg      k(  sJ |j                  t              t        |j                  t              gg      k(  sJ t        t        t        t              dz  t        t              dz  z   gg            t        dgg      k(  sJ t        ddgddgg      }d|j                         z  j                         t        dd	      k(  sJ y )
NrD  r^  ri   rg   )ratior;  rh   rj   "   )r$   r   r   rO   rP   r)   r6   r?   r5   r   r@   tracer    )rD  r^  r0  eqr   s        rt   test_simplifyr  K  s0   sAAQqS1Q3YQqSAHQ4!AaD&=!A$&QqS3q2v;q=-@(AB(FHJ 	KAJJL1q51q5/!a%I$%E1q1SAY;A.F+GIK L L L L
a%!BvAJJLvJJRJ2./01111sAAqS1Q3YQqSA@Q4!AaD&=!A$
QqS3q2v;q=%8 9B >@ 	A ::<6q51q5/!a%9E1q1SAY;A679#    
 a%!B"A::<6B4&>)))::B:6BKKbK,A+B*C#DDDDOc!fai#a&!)&;%<$=>?#aSE*+ + + 	Q!Q !AqwwyM##%!R888rv   c                  
   t        g dg dg      } | j                  t        ddgddgddgddgddgddgddgd	d	gd
d
gddgg
      k(  sJ | j                  j                  | k(  sJ | j                  | j                         k(  sJ y )N)
ri   rg   rh   rj   rk   rl   r   r   r   r   ri   rg   rh   rj   rk   rl   r   r   r   r   )r   r,  	transposer/  s    rt   test_transposer  s  s    ..0 	1A33&QFFFFFFFFFF	% 	& 	& 	& 	& 3355A::33!++-rv   c            
      "   t        t        d        t        dt        t        t        gddt        t        gdddt        gg dg      } | j                  t        g dt         dddgt         t         ddgt         t         t        dgg      k(  sJ y )Nc                  ,    t        d      j                  S r   )r.   r   rz   rv   rt   r   z!test_conj_dirac.<locals>.<lambda>  s    3q688 rv   ri   r   r  r  r   )r^   AttributeErrorr   r   r   r/  s    rt   test_conj_diracr    s    
>+,Aq!Aq!Aq! 	A
 33&*2A*2r2*2rAr*, - - - -rv   c                  V    t        g dg dg dg      } | j                         dk(  sJ y )Nr   )r   rk   r   )r   r   r   r  r   r  r/  s    rt   
test_tracer    s-    	 	A 779??rv   c                      t        ddddg      } | j                  dk(  sJ t        t        ddgdt        dgg      }|j                  dk(  sJ y )Nri   rg   r   rK  r   )r   r  rO   rP   )r   r0  s     rt   
test_shaper    sX    q!aVA77fAq	Aq	 	A77frv   c                     t        t        ddgdt        dgg      } | j                  dd        | t        t        ddgdt        dz   dgg      k(  sJ | j	                  dd        | t        t        dz   ddgdt        z   t        dz   dgg      k(  sJ | j                  d      t        t        dz   ddgg      k(  sJ | j                  d      }d|d<   | d   t        dz   k(  sJ | dd d	f   }d|d<   | d   t        dz   k(  sJ | j                  d      }|t        t        dz   dt        z   g      k(  sJ d|d<   | d   t        dz   k(  sJ | d d df   }d|d<   | d   t        dz   k(  sJ y )
Nr   ri   c                     | |z   dz   S r  rz   )rr   s     rt   r   z!test_col_row_op.<locals>.<lambda>  s    QUQY rv   rg   rh   c                     | t         |z  z   S r   )rP   )rL   r   s     rt   r   z!test_col_row_op.<locals>.<lambda>  s    QAX rv   *   r}   r   )r   rO   rP   row_opcol_opr   r   )r0  r1r  s      rt   test_col_row_opr    s   Aq	Aq	 	AHHQ&'1AE1' ( ( ( ( HHQ%&QAq)QAq)+ , , , ,
 558vAq!}o....	
qBBqET7a!e	
1crc6BBqET7a!e	
qBQA''''BqET7a!e	
1a4BBqET7a!erv   c                      t        g dg dg      } | j                  dd       | d   dk(  sJ | d   dk(  sJ | d   d	k(  sJ y )
Nro   rn   ri   rh   r   rw  r}   rK  rX  )r   row_multr/  s    rt   test_row_multr    sS     	AJJqOS6R<<S6Q;;S6R<<rv   c                      t        g dg dg dg      } | j                  ddd       | d   dk(  sJ | d	   d
k(  sJ | d   dk(  sJ y )Nro   rn   r  rg   r   rk   r}   rl   r   rj   r   rg   r   )r   row_addr/  s    rt   test_row_addr    s[     	A IIa!S6Q;;S6Q;;S6Q;;rv   c                     t         D ]  } | j                  d      }|j                  ddd        | | g dg dg dg      k(  sJ | j                  d      dz  }d	|d
<   |j                  ddd        | | | g dg dg dg      k(  rJ  y )Nrh   ri   r   c                     | d|z  z   S r  rz   r  us     rt   r   z!test_zip_row_op.<locals>.<lambda>      AaC rv   r   r  r   rg   r   r~   c                     | d|z  z   S r  rz   r  s     rt   r   z!test_zip_row_op.<locals>.<lambda>  r  rv   )rg   r   r   )rj   r   r   r   )mutable_classesr.   
zip_row_op)rJ  r0  s     rt   test_zip_row_opr    s     &GGAJ	Q/0C""$ % % 	% % GGAJqL$	Q/0!C##% & & 	& &&rv   c                      t        g d      } t        g d      }t        g d      }| dvsJ | dvsJ | dk7  sJ | |k(  sJ | |k7  sJ y )Nro   )rg   rg   rh   rz   )ri   ri   r  )r   rJ   rK   s      rt   test_issue_3950r    sY    yAyAyARS6M66M66M6rv   c                  d    G d d      }  G d d      } |        } |       }t        g d      }||   dk(  sJ d||<   |d   dk(  sJ t        g dg d	g      }|||f   d
k(  sJ |d|f   d
k(  sJ ||df   d
k(  sJ d|||f<   |d   dk(  sJ d
|d|f<   |d   d
k(  sJ d||df<   |d   dk(  sJ y )Nc                       e Zd Zd Zy)test_issue_3981.<locals>.Index1c                      yr  rz   r)  s    rt   	__index__z)test_issue_3981.<locals>.Index1.__index__      rv   Nr  r  r  r  rz   rv   rt   Index1r        	rv   r  c                       e Zd Zd Zy)test_issue_3981.<locals>.Index2c                      yr  rz   r)  s    rt   r  z)test_issue_3981.<locals>.Index2.__index__  r  rv   Nr  rz   rv   rt   Index2r    r  rv   r  ro   rh   rk   rg   rn   rl   ri   rj   rK  r   r  )r  r  index1index2r   s        rt   test_issue_3981r    s      XFXFyAV9>>AfIQ4199	9%&AVV^!!!QY<1VQY<1AffnT7a<<AaiLT7a<<AfaiLT7a<<rv   c                      t        g dg      } | j                  du sJ t        dgdgdgg      } | j                  du sJ t        dd      } | j                  du sJ y )Nro   Tri   rg   rh   Frj   )r   is_upperrH   r  s    rt   test_is_upperr    se    	{A::aS1#A::aA::rv   c                      t        g dg      } | j                  du sJ t        dgdgdgg      } | j                  du sJ y )Nro   Fri   rg   rh   T)r   is_lowerr  s    rt   test_is_lowerr    sH    	{A::aS1#A::rv   c                      t        ddg d      }  | j                         sJ t        ddgddgg      }  | j                         rJ t        g       }  | j                         sJ y )Nrj   )r   rg   ri   rl   r   r   ri   rg   r   r   r   rh   r   r   r   r   ri   r   r   r  r  s    rt   test_is_nilpotentr    sg    q!EFA1>>AA Aq~~r
A1>>rv   c                  |   d\  } }t        | |      } |j                  d       dt        | |      z  }||k(  sJ |j                  |j                  cxk(  rdk(  sJ  J |j                  |j                  cxk(  rdk(  sJ  J |j
                  |j
                  cxk(  rdk(  sJ  J t        d      t        dd      k(  sJ t        d      t        dd      k(  sJ t        dd      t        dddgdz        k(  sJ t        dd      t        dddgdz        k(  sJ  |j                  d       |t        | |      k(  sJ y )N)rh   rk   rk   rh   rg   r   rl   ri   )rH   fillr4   rp   rq   r  r   )rD  r   rJ   rK   s       rt   test_zeros_ones_fillr  $  s7   DAqaA
AFFAK	DAJA6M666QVV q     66QVV q     77agg''''''8uQ{"""7d1aj   A;&As1u----1:1qc!e,,,,
AFF1Iarv   c                      t        d      } | t               k(  sJ t        dd      } | j                  dk(  sJ | j                  dk(  sJ t        dd      } | j                  dk(  sJ | j                  dk(  sJ y )Nr   rg   )rH   r   rp   rq   r  s    rt   test_empty_zerosr  9  so    aA==aA66Q;;66Q;;aA66Q;;66Q;;rv   c                     t        t        dz  t        t        z  gt        t        t              z  t        t	        t              z  gg      }  | j
                  t              t        dt        z  t        gt        t              t	        t              gg      k(  sJ t        t        t         t        dz  gt        t              dt        z  t        t               z
  t        dt        z  z   gg      j                  t        t              t        t        t         t        gt        dt        gg      k(  sJ t        t        t              dz
  t        z  dt        z  t        t        z  z   t        t        z  gdt        z  t        t              t        t        t        dz               gg      j                  t        d      t        g dt        dt        d      gg      k(  sJ  | j                  t              t        t        dd      t        dz  z  t        t        dz  z  dz  gt        dz  t        t              z  dz  t        dz  t	        t              z  dz  gg      k(  sJ y )Nrg   ri   r   r  rh   )r   rO   rP   r@   r)   r+   r,   r  r5   rH  r0   r    r  s    rt   test_issue_3749r  D  s   AqsaAh#a&123A166!91a3q63q6*:;<<<<	
QB1	Q1sA2wAaC(* ++05B<bS"Ar{+,- - - 
a&1*a1qsAqD*	
1c!fc#a!e*o&( )).q!	B3q6?+,- - - 1;;q>V	!Q1	a1fQh'	
Ac!fQ1SVA&%( ) ) ) )rv   c                      t        d      } | j                  dd       dD ]+  }| j                  |d       | j                  d      k(  r+J  y )	Nrj   r   ri   )r  r  c                     | dk(  S r+  rz   rs   s    rt   r   z%test_inv_iszerofunc.<locals>.<lambda>X  s
    a rv   )rf  
iszerofuncr  re  )r.   col_swapr  )r   rf  s     rt   test_inv_iszerofuncr  T  sV    AAJJq!  uuF/?u@EEE  	    rv   c                  &   t        d      \  } }t        | t        |      z  | t        |      z  g      }t        | |g      }|j	                  |      }||j	                  |j
                        k(  sJ ||j
                  j	                  |      k(  sJ ||j
                  j	                  |j
                        k(  sJ |j
                  t        |j                  d         z  |z  }|j                  t              }|t        ddgd| dz  gg      k(  sJ y )Nrho,phir   ri   rg   )
rC   r   r)   r@   rp  r,  r.   r  r-  rF   )rhophiXYr  rr  s         rt   test_jacobian_metricsr  \  s    y!HCCHc#c(l+,ASzA	

1A

133q!!!!qss####	C
OAA	HAACF,----rv   c                  <   t        d      \  } }t        | t        |      z  | t        |      z  | dz  g      }t        | |g      }t        t        |      |  t        |      z  gt        |      | t        |      z  gd| z  dgg      }|j	                  |      |k(  sJ y )Nr  rg   r   )rC   r   r)   r@   rp  )r  r  r  r  r  s        rt   test_jacobian2r  i  s    y!HCCHc#c(lCF34ASzA	SC4C=!	SCCL!cEq! 	A
 ::a=Arv   c                     t        t        t        t        z   t        z         t        t        t        z   t        z         t        t        t        z   t        z         g      } t        t        t        t        g      }t        dd      D ]z  }t        dd      D ]i  }| d |d d f   }|d |d d f   }|j                  |      }|j                  |k(  sJ |j                  |k(  sJ t        |      D ]  }|d d |f   |k(  rJ  k | y Nri   rh   )	r   r,   rO   rP   rQ   r   rp  rp   rq   )r  r  r   r   X_sliceY_slicer  ks           rt   test_issue_4564r  u  s    AEAIAEAIAEAI?@A1ayA1a[ *q! 	*AAhGAhG  )A66Q;;66Q;;1X *Aw')))*	**rv   c                      t        t        t        t        z   t        z         t        t        t        z   t        z         gt        t        t        z   t        z         t        t        t        z   t        z         gg       t        t         fd        dd d f    t        t        t        gt        t        gg      t        t         fd       t        t         fd       y )Nc                  V     j                  t        t        t        t        g            S r   rp  r   rO   rP   rQ   r  s   rt   r   z(test_nonvectorJacobian.<locals>.<lambda>  s    ajjAq	):; rv   r   c                  &     j                        S r   )rp  r  r  s   rt   r   z(test_nonvectorJacobian.<locals>.<lambda>  s    ajjm rv   c                  d     j                  t        t        t        gt        t        gg            S r   r  r  s   rt   r   z(test_nonvectorJacobian.<locals>.<lambda>  s"    ajj1a&1a&0B)CD rv   )r   r,   rO   rP   rQ   r^   rg  r  s   @@rt   test_nonvectorJacobianr    s    QUQYQUQY0QUQYQUQY02 	3A
9;<	!Q$AAA A
9+,
9DErv   c                      t        ddgddgg      } | j                         }|j                  dk(  sJ t        d      D ]  }||   |dz   k(  rJ  y Nri   rh   rg   rj   )r   vecrq   r   )r   m_vecr   s      rt   test_vecr    s]    AA AEEGE::??1X !Qx1q5   !rv   c                     t        ddgddgg      } | j                         }|j                  dk(  sJ t        d      D ]  }||   |dz   k(  rJ  | j                  d      }|d   dk(  sJ t        dt        t        t
        z   z  gt
        t        z  t        dz  z   dgg      } | j                  d      }|d   t
        t        z  t        dz  z   k(  sJ t        dt        t        t
        z   z  gt
        t        z  dgg      } | j                  dd      }|d   t
        t        z  k(  sJ t        t        d        t        t        d	        t        t        d
        t        t        d        y )Nri   rg   rh   Fr  r   )r  check_symmetryc                  :    t        ddgg      j                         S r  r   vechrz   rv   rt   r   ztest_vech.<locals>.<lambda>      v1vh/446 rv   c                  @    t        ddgddgg      j                         S r  r  rz   rv   rt   r   ztest_vech.<locals>.<lambda>  !    v1v1v&67<<> rv   c                  :    t        ddgg      j                         S r  r  rz   rv   rt   r   ztest_vech.<locals>.<lambda>  r  rv   c                  @    t        ddgddgg      j                         S r  r  rz   rv   rt   r   ztest_vech.<locals>.<lambda>  r  rv   )	r   r  rq   r   rO   rP   r^   rW   r  )r   m_vechr   s      rt   	test_vechr    sO   AA AVVXF;;!1X "ayAE!!!"VVUV#F!9>>Aq1uI1q!tQ01AVVUV#F!9!ad
"""Aq1uI1a)*AVVU5V9F!9!
:67
:>?
:67
:>?rv   c                       t        g d      t        g d      k(  sJ dddgg t        t         fd       t         d      t        g d      k(  sJ y )Nro   ri   rg   rh   c                      t               S r   )r*   r   s   rt   r   ztest_diag.<locals>.<lambda>  s    tAw rv   F)strict)r*   r   r^   r  r   s   @rt   	test_diagr    sK    	?fY////	
AsA
:'% F9$5555rv   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	        | ||      }|j                  d      t	         | j
                          |j
                          |j
                               k(  sJ t	        | ||      }|j                  d      t	         | j
                          |j
                          |j
                               k(  sJ t	        | ||      }|j                  d      t	         | j
                          |j
                          |j
                               k(  sJ t	        | | || ||       }|j                  d      t	         | j
                          | j
                          |j
                          | j
                          |j
                          | j
                               k(  sJ |j                  dd      t	         | j
                  d       | j
                  d       |j
                  d       | j
                  d       |j
                  d       | j
                  d            k(  sJ y )	Nri   rg   rh   T)try_block_diagr  )r  rf  re  )r   rO   rP   rQ   r*   r  )rJ   rK   rL   r   s       rt   test_inv_blockr    s   AA AAA AAq	Aq!9q!Qi01AQ1A555%eaeeguquuw)HHHHQ1A555%eaeeguquuw)HHHHQ1A555%eaeeguquuw)HHHHQ1aAA555%%!%%'51557EAEEGUQUUW*> > > >55U53tUUQUU%0%!%%u2EUUQUU%0%!%%u2E8G G G Grv   c                  \   t        t        d        t        t        d        t        t	        d            t        d      k(  sJ t        t        d            t        d      k(  sJ t        t        d        t        t	        d            t        d      k(  sJ t        t        d            t        d      k(  sJ t        t        d        t        t	        d      t        d            t        dd      k(  sJ t        t        d        t        t        d        t        t        d	        y
)zg
    Check that matrix dimensions can be specified using any reasonable type
    (see issue 4614).
    c                      t        dd      S )Nrh   r   rH   rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    uQ| rv   c                      t        dddd      S Nri   rg   rh   rj   r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    eAq!Q/ rv   rh   c                      t        d      S N      @r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s
    uRy rv   c                      t        d      S r  r.   rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s
    s2w rv   rj   c                      t        d      S r   r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s
    fQi rv   c                      t        dd      S r  r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    fQl rv   c                      t        ddgg      S r  r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    vq1#h/ rv   N)r^   r  rg  rH   re  r   r.   r4   rz   rv   rt   test_creation_argsr
    s    
 :+,
9/0Q=E!H$$$a(((
:()s1v;#a&   wqz?c!f$$$
:'A
#tAqz111
9'(
9*+
:/0rv   c                  j   t        ddg d      } | j                         rJ | j                         sJ | j                  d      sJ t        ddg d      } | j                         sJ t        ddd      } | j                         sJ | j                         sJ t        ddg d      } | t        ddd      k(  sJ t        ddt	        dd            } | j                         rJ | j                         sJ t        d	      } | j                         sJ t        d
      } | j                         sJ t        dddt
        dz  dt
        z  z   dz   t        t
        dz   dz  ddt        ddg	      } | j                         sJ | j                  d      rJ | j                         j                  d      sJ y )Nrg   r  Fr  r  ri   rh   )	ri   r   r   r   rg   r   r   r   rh   ))rk   r   rU  r}   )rk   r   r   )r   rl   r   r   )r   is_diagonalr  r*   rH   rO   rP   r-   r   s    rt   test_diagonal_symmetricalr    s   q!\"A}}>>>>5>)))q!\"A==??Q1A==??>>q!01AQ1q!U1a[!A~~==??'(A==??%&A==??q!aA!aQUQJ1aAFGA>>~~u~---88:""E"222rv   c                     t        ddt        z   gdt        z
  dgg      j                         sJ t        ddg d      j                         rJ j                         rJ t	        t
        fd       t        ddd      j                         \  } }| t        d      k(  sJ |k(  sJ t        ddg d      j                         sJ j                         sJ j                         \  } }| j                         z  | z  |k(  sJ t        ddg d      j                         sJ j                         sJ j                         \  } }| j                         z  | z  |k(  sJ | t        d      k(  sJ |k(  sJ t        ddg d      j                         sJ j                         \  } }| j                         z  | z  |k(  sJ t        ddg d	      j                         sJ j                         \  } }| j                         z  | z  |k(  sJ | D ]  }|j                         d   dk(  rJ  t        ddg d
      j                         sJ j                         sJ j                         \  } }| j                         z  | z  |k(  sJ | t        ddgddgg      k(  sJ t        ddg d      j                  d      rJ t	        t        fd       j                         sJ j                         \  } }| j                         z  | z  |k(  sJ t        ddg d      j                         rJ t	        t        fd       t        ddg d      j                         rJ t	        t        fd       t        d      \  }}}}t        dd||||g      j                         sJ j                         sJ y )Nri   rg   rh   rn  ri   rn  rc  rh   r   c                  $     j                         S r   r  r   s   rt   r   z&test_diagonalization.<locals>.<lambda> 	       rv   r  )ri   r   r   rh   r  )	ri   rg   r   r   rh   r   rg   r   rg   r  r   )r   ri   r   r   Tc                  &     j                  d      S )NTr  r   s   rt   r   z&test_diagonalization.<locals>.<lambda>,	  s    d 3 rv   r   ri   r   r   c                  $     j                         S r   r  r   s   rt   r   z&test_diagonalization.<locals>.<lambda>4	       rv   )	rn  ri   rn  rc  rh   r   rg   r   rj   c                  $     j                         S r   r  r   s   rt   r   z&test_diagonalization.<locals>.<lambda>8	  r  rv   za b c d)r   r   r  r  r^   rV   r*   r  r.   r  as_numer_denomr  rU   rC   )r  r   r   rJ   rK   rL   rM   r   s          @rt   test_diagonalizationr    s   AaC1Q3(#$A   q!+,A""$$$~~
!89 	Q1A]]_FQA;;6M6q!\"A>>   ]]_FQ557Q;?aq!\"A>>   ]]_FQ557Q;?aA;;6M6q!\"A   ]]_FQ557Q;?aq!12A   ]]_FQ557Q;?a *!!$)))* 	q!\"A==??   ]]_FQ557Q;?aAA'(((( 	q!]#A""4(((
;34   ]]_FQ557Q;?a 	q!\"A""$$$
;/0q!56A""$$$
;/0 #JAq!Qq!aAq\"A>>   rv   c                       t        ddgddgg         j                         du sJ d d<     j                         du sJ t        ddgddgg         j                          d d<   t        t         fd       y )Nr   ri   Tr   Fc                  &      j                          S r   r  r  s   rt   r   z"test_issue_15887.<locals>.<lambda>K	  s     rv   )r   r  r  r^   rU   r  s   @rt   test_issue_15887r  A	  s    QFQF+,A1 D(((AdG1 E)))QFQF+,AAMMOAdG
;/0rv   c                     t        ddg d      t        t        fd       t        ddg d      t        ddg d      } j                         \  }}| |k(  sJ | j	                         d   k(  sJ t        ddg d      t        ddg d	      } j                         \  }}| |k(  sJ t        ddg d
      t        ddg d      } j                         \  }}| |k(  sJ t        ddg d      t        ddg d      } j                         \  }}| |k(  sJ t        ddg d      t        ddg d      } j                         \  }}| |k(  sJ t        ddg d      t        ddg d      } j                         \  }}| |k(  sJ t        ddg d      j                         rJ t        ddg d      } j                         \  }}| |k(  sJ t        t        dd      t        dd      gt        dd      t        dd      gg      j                         \  }}|j                         D ]$  }t        |t              s|j                  dk(  r$J  y )Nrh   rg   r  c                  $     j                         S r   )r  r   s   rt   r   z"test_jordan_form.<locals>.<lambda>Q	  r  rv   )	r   r  rl   r   ir   rw  ir  )	r   r   r   r   ri   r   r   r   ri   ri   	r   ri   r   r   rj   r   r   ri   rg   )	rg   ri   r   r   rg   r   r   r   rg   )	rg   rl   ri   ri   r   ri   rg   r  )	r   ri   r   r   r   r   r   r   r   )	rj   r   rg   rk   rm  rh   rl   rj   )	r   ri   r   r   r   r   r   r   ri   rj   )rl   rk   r   rn  rn  r   rh   rh   rg   ri   r   rn  r   ri   rk   rk   )rg   ri   r   r   r   rg   r   r   r   r   rg   ri   r   r   r   rg   )rl   rg   r  rn  rg   r   rl   rg   r   r#  r  r   r   rh   rj   )r   r   r   r   r   rg   ri   r   r   r   rg   r   r   r   r   rg   )rk   rj   rg   ri   r   ri   r   r   r   r   rh   r   ri   ri   r   rg   )ri   r   r   r   r   rg   r   r   r   r   rj   ri   r   r   r   rj   z1.0n   )	precisionz2.0z3.14159265358979323846264338327z4.0)
r   r^   rV   r  r  r  r   r(  r  _prec)Jmustr  r  termr   s       @rt   test_jordan_formr)  N	  ss   q!+,A
!89 	q!:;A1a56E==?DAqA::AMMOA&&&& 	q!23A 1a45E==?DAqA:: 	q!45A 1a78E==?DAqA:: 	q!34A1a45E==?DAqA::q!LMA1a  E
 ==?DAqA::q!LMA 1a ' (E ==?DAqA::q!JKA""$$$1aIJE==?DAqA:: 	u,eES.IJ8CH%PUadJefh 	iA==?DAq
 %dE"::$$$%rv   c            	      d   t        g dg dg dg dg      } ddt        z  z
  }ddt        z  z   }t        |dddgd|ddgdd|dgddd|gg      }t        |dddgd|ddgdd|dgddd|gg      }| j                         \  }}||k(  s||k(  sJ t        ||z  |j	                         z        | k(  sJ y )	N)rg   rj   ri   r   )r   rg   r   ri   )r   r   rg   rj   )r   r   r   rg   rg   rj   ri   r   )r   r   r  r?   r  )r   pqJmust1Jmust2r  r  s          rt   #test_jordan_form_complex_issue_9274r/  	  s        " 	#A 	
AaCA	AaCAaAq\Aq\Aq\Aq\# $F aAq\Aq\Aq\Aq\# $F ==?DAq;!v+%%AaCK A%%%rv   c                      t        g dg dg dg dg      } | j                         \  }}|t        g dg dg dg dg      k(  sJ |t        g d	g dg dg dg      k(  sJ y )
Nr  r  r  r  r  r  r  r  r  )r   r  r  s      rt   test_issue_10220r1  	  s     	A ==?DAq$$$& ' ' ' ' $$$$	& ' ' ' 'rv   c                     t        g dg dg dg dg      } | j                         \  }}|j                         t        t         t         dz  t        t        dz  gdt        z   ddt        z
  dgdt	        d       dz  t        dz  z
  dt	        d       dz  t        dz  z   gg d	g      k(  sJ |t        t         dddgdt         ddgddt        dgdddt        gg      k(  sJ y )
Nr  )r   r   r   r   )r   r   r   r   )r   r   rg   ri   rg   r   r   ri   r  )r   r  r-   r   r"   )r   r  r  s      rt   test_jordan_form_issue_15858r3  	  s   	 	A
 ]]_FQ88:R1"Q$Q!A#6	aQQA6!A$q1Q3Q1a!A#66	!8 9 9 9 9
 
Q1	
QB1	
Aq!	
Aq!	    rv   c                  N   t        d      \  } }}t        | | z
  |dz  ||z   z  z   ||z  ||z   z  g||z  ||z   z  | |dz  ||z   z  z   gg      }|j                  t              }|t	        t        dz  || z  || z  z   d|z  |z  z   ||z   z  t        z  z   ||z  | z  ||z   z  z   t        d      k(  sJ t        |      t        u sJ t        ddgddgg      }|j                         |j                  t              cxk(  r t        t        dz  t        z
  dz
        k(  sJ  J t        ddgt        dgg      }|j                  t              }|j                  t        k7  sJ |j                         j                  |j                  t              t        dz  dt        z  z
  k(  sJ y )	Nz
UA K_i K_wrg   zZZ(K_i,K_w,UA)r  ri   rh   r   rl   )
rC   r   r  rO   r   r  r   genas_exprrt  )UAK_iK_wr   r  r+  s         rt   test_Matrix_berkowitz_charpolyr:  	  s   <(LBS#S!VS3Y//s3wc	7JKGS3Y/#Qc	8J1JKM 	NA zz!}HQTSVc"f_quSy039=a??C
C#I !*:	<< < < >X%%%AA A::<1::a=BHQTAX\,BBBBBBAA A	

1A55A::99;AEE1%A!333rv   c            
         t        d      } t        j                  d|       }|j                         t        t	        |       gg      k(  sJ t        j                  d|       }|j                         t        t	        |       t	        |       t	        |       dz  gdt	        |       t	        |       gddt	        |       gg      k(  sJ y )Nlamdari   rh   rg   r   )r$   r   r  _eval_matrix_exp_jblockr,   r   r   s     rt   test_exp_jordan_blockr?  	  s    wAAq!A$$&&3q6(*<<<<Aq!A$$&VSVSVAX&AA3q6N 	  rv   c            	         t        ddgddgg      } t        t        d      dt        d      z  dz  dt        d      z  dz  z   gdt        d      gg      }| j                         |k(  sJ t        |       |k(  sJ t        ddgddgg      } | j                         t        t        dgdt        gg      k(  sJ t        |       t        t        dgdt        gg      k(  sJ t        ddgddgg      } | j                         t        t        t        d      z  t         t	        d      z  gt        t	        d      z  t        t        d      z  gg      k(  sJ y )	Nrh   rj   r   r   r   rk   ri   r   )r   r,   r   r)   r@   )r   m_exps     rt   test_exprB  	  s<   AB !ASVRBZ\Ac!fHQJ67!SWFGE557eq6U??AA A557fq!fq!f-....q6VaVaV,----B!Q !A557fqQx!CF3aAh#a&5IJKKKKrv   c                     t        d      } t        j                  d|       j                         t        t	        |       gg      k(  sJ t        j                  d|       j                         t        t	        |       d| z  dd| dz  z  z  dd| dz  z  z  gdt	        |       d| z  dd| dz  z  z  gddt	        |       d| z  gdddt	        |       gg      k(  sJ t        g dg d	g d
g      t        t        fd       y )Nr<  ri   rj   r   rg   rh   r   r   r   r  c                  $     j                         S r   )r1   r   s   rt   r   ztest_log.<locals>.<lambda>
  s     rv   )r$   r   r  _eval_matrix_log_jblockr1   r^   rU   r>  s    @rt   test_logrF  
  s   wAAq!A$$&&3q6(*<<<<Aq!A$$&Q1b!AqD&k1a1f:6CFAaCQq!tV-As1vqs#Aq#a&!		

 
 
 				A
 ;(rv   c            	          t        d      } t        dd| t        |       dz  t        |       dz  z   t        j
                  g      }t        |      \  }}}}|t        j
                  k(  sJ y )NrO   rh   ri   rg   )r$   r   r)   r@   r"   r   rT   rO   columnpivot_offset	pivot_valpivot_assumed_nonzero
simplifieds         rt   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1rN  
  sc     	sAAq1c!fai#a&!)3QVV<=F$V, ?L)2Jrv   c            
          t        d      } t        dd| t        |       dz  t        |       dz  z   | dz  z   t        |       dz  t        |       dz  z   g      }t	        |t
              \  }}}}|dk(  sJ y )NrO   rh   ri   rg   simpfunc)r$   r   r)   r@   rT   rZ   rH  s         rt   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2rR  +
  s     	sAAqVQYs1vqy(A-VQYs1vqy(*+F
 	%Vi@ ?L)2J>>rv   c            
      f   t        d      } t        dd| t        |       dz  t        |       dz  z   | z   t        |       dz  t        |       dz  z   g      }t	        |t
              \  }}}}t        |      dk(  sJ |d   d   dk(  sJ |d   d   d| z   k(  sJ |d   d   dk(  sJ |d   d   dk(  sJ y )NrO   rh   ri   rg   rP  r   )r$   r   r)   r@   rT   rZ   lenrH  s         rt   +test_find_reasonable_pivot_naive_simplifiesrU  ;
  s     	sAAqVQYs1vqy(*VQYs1vqy(*+F
 	%Vi@ ?L)2J z?aa=q   a=qs"""a=q   a=q   rv   c                  P    t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t
        d        t        t        d	        t        t        d
        t        t        d        t        t        d        t        t
        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        t
        d        t        t        d        t        t        d        t        t
        d        t        t        d        t        t
        d        t        t        d        t        t
        d        t        t
        d        t        t
        d         t        t        d!        t        t        d"        t        t        d#        t        t        d$        t        t        d%        t        t        d&        t        t        d'        t        t        d(        t        d)       t        t         fd*       t        g d+g      t        g d,g d-g d.g       t        t         fd/       t        g d,g d-g d.g       t        t         fd0       y )1Nc                  "    t        ddgdgg      S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>O
  s    v1vsm4 rv   c                  $    t        ddgg      d   S )Nri   rg   )g333333?rk   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>P
      v1vh/7 rv   c                  $    t        ddgg      d   S )Nri   rg   )ri   g@r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>Q
  rY  rv   c                      t        ddd      S )Nrh   rj   T)rL   r8  )r7   rz   rv   rt   r   ztest_errors.<locals>.<lambda>R
  s    z!qDA rv   c                  <    t        ddg      j                  dd      S )Nri   rg   rj   rl   )r   r%  rz   rv   rt   r   ztest_errors.<locals>.<lambda>S
  s    vq!f~55a; rv   c                  ^    t        ddgddgg      j                  ddgt        ddg            S rx   )r   copyin_matrixrz   rv   rt   r   ztest_errors.<locals>.<lambda>U
  s1    AA'(661vvq!f~N rv   c                  X    t        ddgddgg      j                  ddgt                     S rx   )r   copyin_listr'  rz   rv   rt   r   ztest_errors.<locals>.<lambda>V
  s3    fq!fq!f%56BBADu rv   c                  @    t        g dg dg      j                         S )Nro   )rg   rh   r   r   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>X
  s    I0F)G)K)K)M rv   c                  \    t        ddddg      j                  t        ddgddgg            S r  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>Z
  s0    q!aV$--fq!fq!f5E.FG rv   c                  X    t        ddg      j                  t        ddgddgg            S r  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>\
  s+    FAq6N33FQFQF;K4LM rv   c                  X    t        dg      j                  dt        ddgddgg            S r  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>]
  8    vqc{55a!B1vA :   rv   c                  X    t        dg      j                  dt        ddgddgg            S r  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>_
  rf  rv   c                  8    t        ddg      j                         S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>a
  s    A)=)=)? rv   c                  8    t        dg      j                  d      S r  )r   r-  rz   rv   rt   r   ztest_errors.<locals>.<lambda>b
  s    faSk33A6 rv   c                  D    t        ddgddgg      j                  dd      S Nri   rg   rh   rj   rk   )r   minorrz   rv   rt   r   ztest_errors.<locals>.<lambda>c
  s%    v1v1v&67==aC rv   c                  D    t        ddgddgg      j                  dd      S rk  )r   minor_submatrixrz   rv   rt   r   ztest_errors.<locals>.<lambda>d
  s%    v1v1v&67GG1M rv   c                  :    t        g d      j                  d      S Nro   ri   r   crossrz   rv   rt   r   ztest_errors.<locals>.<lambda>e
  s    fY/55a8 rv   c                  :    t        g d      j                  d      S rp  r   dotrz   rv   rt   r   ztest_errors.<locals>.<lambda>f
  s    fY/33A6 rv   c                  P    t        g d      j                  t        ddg            S )Nro   ri   rg   rt  rz   rv   rt   r   ztest_errors.<locals>.<lambda>g
  s    vi044VQF^D rv   c                  :    t        ddg      j                  g       S r  rt  rz   rv   rt   r   ztest_errors.<locals>.<lambda>h
  s    vq!f~11"5 rv   c                  :    t        ddg      j                  d      S )Nri   rg   rJ   rt  rz   rv   rt   r   ztest_errors.<locals>.<lambda>i
  s    faVn005 rv   c                  >    t        ddg      j                  g d      S )Nri   rg   ro   rt  rz   rv   rt   r   ztest_errors.<locals>.<lambda>j
  s    vq!f~11)< rv   c                  8    t        g d      j                         S )Nro   )r   r,   rz   rv   rt   r   ztest_errors.<locals>.<lambda>k
  s    	):)>)>)@ rv   c                  @    t        ddgddgg      j                         S r  )r   
normalizedrz   rv   rt   r   ztest_errors.<locals>.<lambda>l
  !    v1v1v&67BBD rv   c                  <    t        ddg      j                  d      S )Nri   rg   znot a methodre  rb  rz   rv   rt   r   ztest_errors.<locals>.<lambda>m
  s    vq!f~111H rv   c                  8    t        ddg      j                         S r  r   
inverse_GErz   rv   rt   r   ztest_errors.<locals>.<lambda>n
      A)B)B)D rv   c                  @    t        ddgddgg      j                         S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>o
  r}  rv   c                  8    t        ddg      j                         S r  r   inverse_ADJrz   rv   rt   r   ztest_errors.<locals>.<lambda>p
  s    A)C)C)E rv   c                  @    t        ddgddgg      j                         S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>q
  s!    v1v1v&67CCE rv   c                  8    t        ddg      j                         S r  )r   
inverse_LUrz   rv   rt   r   ztest_errors.<locals>.<lambda>r
  r  rv   c                  8    t        ddg      j                         S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>s
  s    A)D)D)F rv   c                  8    t        ddg      j                         S r  r   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>t
  s    A););)= rv   c                  D    t        ddgddgg      j                  d      S )Nri   rg   rh   rj   zNot a real methodre  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>v
  s'    AA'(,,4G,H rv   c                  P    t        g dg dg dg dg      j                  d      S )Nr  r  r{  r   zNot functionr  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>x
  s)    l)+ ,,/C>C,J rv   c                  P    t        g dg dg dg dg      j                  d      S )Nr  r  r{  r   Fr  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>{
  s)    l)+ ,,/C5C,A rv   c                  V    t        t        ddgddgg      t        ddgddgg            S r  r/   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>~
  s1    AA/0&1a&1a&9I2JK rv   c                  8    t        t        ddgddgg      g       S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>
  s    wv1v1v.>'?D rv   c                  2    t        t        d      dz  d      S )NrO   rg   rJ   )r/   r$   rz   rv   rt   r   ztest_errors.<locals>.<lambda>
  s    wvc{A~s; rv   c                      t        d      d   S )Nrh   )rk   rg   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>
      s1vd| rv   c                      t        d      d   S )Nrh   )rg   rk   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>
  r  rv   r  c                  &     j                  d      S )Nzmethod=LU_decomposition())r  r/  s   rt   r   ztest_errors.<locals>.<lambda>
  s    quu%@A rv   )r   r   r   ro   rg   rh   rj   r   c                  (     j                  d      S )Ng@)r   r0  Vs   rt   r   ztest_errors.<locals>.<lambda>
  s    q||C3 rv   c                  (     j                  d      S )Ng)r   r  s   rt   r   ztest_errors.<locals>.<lambda>
  s    q||D!4 rv   )r^   r  r   rW   rg  rV   r   r  s   @@rt   test_errorsr  N
  sI   
:45
:78
:78
:AB
:;<
:NP
9  
!MN
:GI
MO
:  
:  
!?@
967
:CD
:MN
989
967
:DE
:56
956
:<=
!@A
:DE
:HI
!DE
:DE
!EF
:EF
!DE
!FG
!=>
:HJ
:	KL :	BC :KM
:DE
:;<
:+,
:+,NOA
:AB~A	9i01A
:34	9i01A
:45rv   c                     t        t                     dk(  sJ t        t        ddgg            t        t        dgdgg            cxk(  rdk(  sJ  J t        t        ddd             t        t        ddd             cxk(  rdk(  sJ  J t        t        g dg dg            dk(  sJ t        dg      t        dgg      k(  sJ t               rJ t               t        g       k(  sJ y )	Nr   ri   rg   c                      yr+  rz   r   s     rt   r   ztest_len.<locals>.<lambda>
  r,  rv   c                      yr+  rz   r   s     rt   r   ztest_len.<locals>.<lambda>
  r,  rv   r   r   rl   )rT  r   rz   rv   rt   test_lenr  
  s    vx=Av1vh CaSz(:$;@q@@@@@vaN+,F1a()/-./ / / / /vy),-.!3331#;&1#-'''x<8vbz!!!rv   c            
         t        ddt        ft        ddfddt        dz  ff      } | j                  t              t        t        dt        z  t        dz  dz  ft        t        z  dt        z  dt        z  fdt        z  dt        z  t        dz  dz  ff      k(  sJ | j                  t              t        t        dt        z  t        t        z  ft        dz  dz  dt        z  dt        z  fdt        z  dt        z  t        t        dz  z  ff      k(  sJ t        ddt        t        g      }|j                  t              t        ddt        dz  dz  t        t        z  g      k(  sJ y )Nri   rj   rg   r   rk   rh   )r   rO   rP   r0   )r   r   s     rt   test_integrater  
  s:   Aq	Aq!9r1adm45A;;q>AaCAa 1Q3!QqS/BqD!A#q!tAv3FGHI I I;;q>AaC11Q!QqS1BqD!A#qAv3FGHI I Iq!aVA;;q>VAq1a461Q3-8888rv   c            	      4   t        ddt        ft        ddfddt        dz  dz   ff      } t        | j	                  t              t        |             sJ | j	                  t              t        dddddt        z  ff      k(  sJ | j	                  t              t        d	      k(  sJ t	        | t              t        dddddt        z  ff      k(  sJ t	        | t              t        d	      k(  sJ | j                         }t        |j	                  t              t        |            sJ |j	                  t              t        dddddt        z  ff      k(  sJ |j	                  t              t        d	      k(  sJ t	        |t              t        dddddt        z  ff      k(  sJ t	        |t              t        d	      k(  sJ | j	                  t        d
      t        | t        d
      k(  sJ t	        | t        d
      t        | t        d
      k(  sJ y )Nri   rj   rg   r   rk   r   r   r   )r   r   r   Fr3  )	r   rO   rP   r  r+   r  r  r   r\   )r   A_imms     rt   	test_diffr  
  s   Q1I1ay2q!Q$(2CDEAaffQia)))66!9*Iy1a1++NOOOO66!9*+LMMMM1:+Y	Aq!A#;,OPPPP1:+,MNNNNNNEejjmT%[111::a=0)YAqQRs1TUUUU::a=01RSSSSq>19i!QPQRSPS2UVVVVq>12STTTT66!e6$1u(MMMM1u%A)NNNNrv   c                     t        t        t        gt        t        gg      } | j                  |       t        ddgddggddgddgggddgddggddgddgggg      k(  sJ t        | |       t        ddgddggddgddgggddgddggddgddgggg      k(  sJ | j                         }|j                  |      t        ddgddggddgddgggddgddggddgddgggg      k(  sJ t        ||      t        ddgddggddgddgggddgddggddgddgggg      k(  sJ | j                  t              t        ddgddgg      k(  sJ t        t        t        g      }| j                  |      t        j                  dddd      k(  sJ | j                  |       t        ddgddggddgddgggddgddggddgddgggg      k(  sJ |j                  t        t        gg      }|j                  dk(  sJ |t        dgdggdgdggg      k(  sJ t        d      } |t        t        t              }|j                  t        t        t        gg      t        |j                  t              |j                  t              |j                  t              g      k(  sJ |j                  t        t        t        gdf      t        |j                  t        d      |j                  t        t              |j                  t        t              g|j                  t        t              |j                  t        d      |j                  t        t              g|j                  t        t              |j                  t        t              |j                  t        d      gg      k(  sJ t        t              t        t              z  }|j                  t        t        gg      t        t!        t              t        t              z  t        t              t        t              z  g      k(  sJ |j                  t        t        t        ff      t        t!        t              t        t              z  t        t              t        t              z  g      k(  sJ |j                  t        t        t        ff      t        t        t               t        t              z  t!        t              t        t              z  g      k(  sJ |j                  t        t        fft        t        gg      t        t!        t              t        t              z  t        t               t        t              z  gt        t              t        t              z  t!        t              t        t              z  gg      k(  sJ |j                  t              j                  t              j                  t              |j                  t        t        t        ffd      d   k(  sJ |j                  t              j                  t              j                  t              |j                  t        t        t        ffd      d   k(  sJ |j                  t        t        t        ggt        t        t        ff      t        t        t        t        fD cg c]?  }t        t        t        fD cg c]"  }|j                  |      j                  |      $ c}A c}}      k(  sJ t        j
                  t#        t        t        gg            }	t%        |	t              sJ |	t#        ddgg      k(  sJ t        dz  j                  t#        t        t        gg            }	t%        |	t              sJ |	t#        dt        dz  z  dgg      k(  sJ y c c}w c c}}w )	Nri   r   rg   )rg   rg   ri   r^  rh   r   r  )r   rO   rP   rQ   rN   r+   r   r  rJ   r   rK   rH   r  r   r@   r,   r)   r   r  )
r   r  r   dBr^  fxyzexprr   r   ress
             rt   test_diff_by_matrixr  
  s    	QFQF+,A66!9!Q!Q 0Aq6Aq62BC1vPQSTvFVZ[]^Y_bcefagXhEijkkkk1:1a&1a&!1QFQF3C DAQRTUPVGW[\^_Z`cdfgbhYiFjkllllNNE::e!Q!Q(8Aq6Aq6:J'KPQSTvXY[\W]N^bcefagjkmnio`pMq&r ssssu1a&1a&)9QFQF;K(LQRTUPVYZ\]X^O_cdfgbhklnojpaqNr's!tttt 66!9*QFQF+;<<<<aV$A66!9Aq!Q////66!9!Q!Q 0Aq6Aq62BC1vPQSTvFVZ[]^Y_bcefagXhEijkkkk 
!Q	B88y   !qc
aS1#J/0000AQ1:D99q!Qi[!UDIIaL$))A,		RS+U%VVVV99q!Qi^$	1a$))Aq/499Q?;	1a$))Aq/499Q?;	1a$))Aq/499Q?;/ )    q6#a&=D99q!fX%QAAs1v(F"GGGG99Q!Q	"eSVCF]CF3q6M,J&KKKK99Q!Q	"ec!fWSV^SVCF],K&LLLL99q!fY!Q)USVCF]SVGCPQFN4SVYZ[V\]`ab]cVcehijeklopqlrerUs3t-uuuu 99Q<Q$$Q'499q!Qi\1+Eg+NNNN99Q<Q$$Q'499q!Qi\1+Eg+NNNN99q!Qi[Aq!9,/5noqrtumv9whiZ[]^`aYb:cTU499Q<;L;LQ;O:c9w3xxxx &&!Q!
"Cc/000&1a&""""a4++fq!fX&
'Cc/000&1QT61+'''' ;d9ws   ;^:'^5:^:5^:c            	           t        ddt        ft        ddfddt        dz  dz   ff       t        t         fd        t         d      t              t        dd	d
d
dt        z  ff      k(  sJ y )Nri   rj   rg   r   rk   c                       j                   S r   )nonexistantattributer  s   rt   r   ztest_getattr.<locals>.<lambda>
  s    1#9#9 rv   r+   r   r   r   )r   rO   rP   r^   r  getattrr  s   @rt   test_getattrr  
  sl    Aq	Aq!9r1adQh&789A
>9:71fa FIy1a1++N$OOOOrv   c                     t        g dg dg dg      } | j                  sJ | j                  } | j                  sJ d| d<   | j                  du sJ t        g dg dg dg      } | j                  rJ t	        dd	      } | j                  sJ y )
Nr  r  r   ri   )r   r   Fr  rk   rg   )r   r   r,  r!  rH   r  s    rt   test_hessenbergr  
  s    	9i01A    	A    AeH  E)))	9i01A$$$$aA    rv   c            	      @   t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        dt        z   dfdf      j                  d	
      t        t        dt        z         dgddgg      k(  sJ t        d      } | j                  d	
      }|t        ddgddt        d      z  t        z  gg      k(  sJ ||j                  z  | k(  sJ t        d      } | j                         }||j                  z  | k(  sJ |j                  sJ |t        g dg dg dg      k(  sJ t        ddt        z  ddt        z  z   fdt        z  ddt        z   fddt        z  z
  dt        z
  dff      } | j                         j                         t        dt        ddfdt        z
  ddff      k(  sJ t        t        d        t        t        d        t        t        d        t        t        d        t        t        d        t        dt        z   dfdf      j                  d	
      t        t        dt        z         dgddgg      k(  sJ t        d      } | j                  d	
      }|t        ddgddt        d      z  t        z  gg      k(  sJ ||j                  z  | k(  sJ t        d      } | j                         }||j                  z  | k(  sJ |j                  sJ |t        g dg dg dg      k(  sJ t        ddt        z  ddt        z  z   fdt        z  ddt        z   fddt        z  z
  dt        z
  dff      } | j                         t        dt        ddfdt        z
  ddff      k(  sJ y )Nc                  4    t        d      j                         S NrK  r   choleskyrz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s    )@)@)B rv   c                  4    t        d      j                         S NrK  )rh   rj   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>      v&67@@B rv   c                  J    t        dt        z   dfdf      j                         S Nrk   r   r~   )r   r   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s!    vAqz6&:;DDF rv   c                  4    t        d      j                         S Nr  )rk   ri   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  r  rv   c                  8    t        d      j                  d      S Nr  F	hermitianr  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s    v&67@@5@Q rv   rk   r   r~   Fr  ri   r  rg   rl   ))r  r  r   )r  rX  r   )r   r   r   r  )rh   rh   r   )r   ri   rh   rj   r   r   r   r  rh   c                  4    t        d      j                         S r  r#   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s    f)=)F)F)H rv   c                  4    t        d      j                         S r  r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>      |,<=FFH rv   c                  J    t        dt        z   dfdf      j                         S r  )r#   r   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s!    |a!eQZ,@AJJL rv   c                  4    t        d      j                         S r  r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  r  rv   c                  8    t        d      j                  d      S r  r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s    |,<=FFQVFW rv   )r^   rV   r  r   r   r  rA   r,  r  r-   r#   r  s     rt   test_choleskyr    sk   
!BC
:BC
:FG
:BC
:QRAE1:v&'0050AV	a!ea1a&M" F# # # # A	

U
#AAAd1gIaK 012222QSS5A::78A	

Aqss7a<<:::	9j9::::BqD!ac'"QqS!R!V$4q1Q3wQ6KLMA::< FI1ay1q5!Q-+P$QQQQ
!HI
:HI
:LM
:HI
:WX!a%V,-666G6	a!ea1a&S" L# # # #%&A	

U
#AAAd1gIaK 012222QSS5A::=>A	

Aqss7a<<:::	9j9::::q"Q$AaC(1Q326*:Q1Wb1fb<QRSA::<69q!Qi!a%A"GHHHHrv   c            	         t        dd      } t        t        |       t        |       g      }t	        |j                  d            dk(  sJ |j                  d      t        t        |       dz  t        |       dz  z   t        dd            k(  sJ t        dt        dd      gg      }|j                         t        d	t        d
d      z   t        j                        k(  sJ |j                  t              t        |      k(  sJ |j                  t               t        |      k(  sJ t        ddgddgg      }|j                  d      dk(  sJ |j                  d      dk(  sJ |j                  d      dk(  sJ t        d      j                  d      t        d      j                  d      cxk(  rdk(  sJ  J |j                  t              dk(  sJ t        dt        t        g| t        j                  t         gg      }|j                  d      t!        t        dd      dt#        t              dz  z  z   t        dz  z   | dz  z         k(  sJ t        g dddt        dd      gg      }|j                  d      t!        t        dd      t!        d      dz  z         k(  sJ |j                  d      t        j$                  u sJ |j                  d      t!        d      dz  k(  sJ t        ddgddgg      }t        ddgddgg      }t        dt&         gt&        dgg      }t        ddgddgg      }||||g}t        dd      }dD ]  }t)        d      j                  |      t        j$                  u sJ |D ]H  }	|D ]A  }
|	j                  |      |
j                  |      z   |	|
z   j                  |      z
  }|dk\  rAJ  J ||||fD ]D  }t+        ||z  j                  |      t#        |      |j                  |      z  z
        }|dk(  rDJ   t        dddt&        z  z
  dg      }t        t        j                  dt&        z  dg      }t        g d      }t        ddt&        g      }t        t-        d      t        dd      dg      }|||||g}t        dd      }ddddt        j.                  t        j0                  t        fD ]  }|dkD  r.t        g d      j                  |      t        j$                  u sJ |dk\  rf|D ]a  }	|D ]Z  }
|	j                  |      |
j                  |      z   |	|
z   j                  |      z
  }t+        |dk\        t        j2                  u rZJ  c |ddddt        j.                  t        j0                  fv s|D ]D  }	t+        ||	z  j                  |      t#        |      |	j                  |      z  z
        }|dk(  rDJ   t        ddg d      }|j                  d      dk(  sJ y )NrO   Tr%  rg   ri   r   rk   rh   r  r   rj   r   r   	frobeniusfro%   )ri   rg   rn  r  i  r   iI3 r   alpha)r  rg   r   rn  )r   r   r   g      Y@r   )	ri   rh   r   r   r   r   rh   r   rl   )r$   r   r)   r@   rF   normr   r    r"   r   r5   rb  r=  r.   rP   r6   rA   rH  r   r   rH   r?   r   InfinityNegativeInfinitytrue)rO   r  r   r   r   r   r  r  orderr  r  difr0  rJ   rK   rL   rM   r   s                     rt   test_matrix_normr  *  s    	sAAA AAFF1I!###66":SVRZ#a&"*4hq"oFFFF 	HQN#$%A668s2A.777766":Q662#;#a&    	AA A66!9>>66":??66+!###r7<<?c"gll2.3!3333366":?? 	Aq	Aqvvs+,-AFF5M8B?Qs1vqy[02q581a4?@A B A 	
Q8B?345A66!9Xc1-UA=>>>>66":66+$s)A+---
 	AA AAQ !AQB!Q !AAB !A	
Aq!A7&E Qx}}U#qvv--- 	"A "vve}qvve}4ULL'(q!"	" Q1 	AE!G>>%0J./ 0C!8O8	$ 	1qs7B A!Q A|A1ayAhq#.23A	
Aq!QA7&EQB

A,>,>C  19)$))%0AFF:::A: 8 8A66%=166%=8QU+,C#C1H-77788 Q2r1::q/A/ABB  a~~e4Z!&&-/ 1 2axx  & 	q!23A66!9??rv   c                     t        dd      t        d      } d| d<   t        dd      | d<   | j                         d	k(  sJ | d
<   | j                         t	        dt                    t        t        dd      t                    z  k(  sJ t        t              t              gt               t              gg      }|j                         t        fdt        dd      t        j                  t        dd      t        dz  t        t        t        dd      z  fD              sJ t        g       j                         dk(  sJ y )NrO   Tr%  rh   r   r}   ri   rg   rg   rb  rm   c              3      K   | ]<  }t        d       j                  j                  |      j                                > yw)rX  N)r   
epsilon_eqrt  r:  )r<  valMcrO   s     rt   r=  z(test_condition_number.<locals>.<genexpr>  s9      QuRy##BGGAsO$9$9$;< Qs   AArk   rg   r   rj   r   )r$   r.   r    condition_numberr   r   r   r   r)   r@   rE  r"   r   r6   )r   r0  r  rO   s     @@rt   test_condition_numberr    s-   sAAAAdGq"oAdG3&&&AdG3r3q6?S!R#a&5Q#QQQQQQ CF7CF"345A	
			B Q	!Q!R"Q$Bx1~<MOQ Q Q Q ":&&(A---rv   c                      t        d      } t        d      }| | d d d d f   k(  sJ | | d d d d f   k7  rJ | |k(  rJ | |k7  sJ | dk7  sJ | dk(  rJ t        d      }t        d      }||k(  sJ ||k7  rJ y )N)ro   rn   r   ))r   r   r   )rl   rk   rj   )rh   rg   ri   r   )r   r   r   )r   r#   )r   r   r   r   s       rt   test_equalityr    s    01A01A!Q$<<AadG|Av:6M67N7Bw; 	67A01A6M6Av:vrv   c                  8   t        ddg      j                         t        t        dd      t        dd      g      k(  sJ t        g d      j                         t        g d      k(  sJ t        g d      } | j                  d       t        g d      k(  sJ y )Nrh   rj   rk   r   )r   r   g0.++c                 >     | j                   dd      j                  S )Nr   T)rD  chop)r:  is_zerors   s    rt   r   z!test_normalized.<locals>.<lambda>  s    2D199 rv   r  )r   r|  r    r   s    rt   test_normalizedr    s    1a&>$$&AA/01 1 1 )'')VI->>>> 	}A<<9  			  rv   c                  H    t        d       dk(  sJ t        d       dk(  sJ y )Nc                  4    t        d      j                         S r   r.   print_nonzerorz   rv   rt   r   z$test_print_nonzero.<locals>.<lambda>  s    3q6//1 rv   z[X  ]
[ X ]
[  X]
c                  6    t        d      j                  d      S )Nrh   rb  r  rz   rv   rt   r   z$test_print_nonzero.<locals>.<lambda>  s    3q6//4 rv   z[.  ]
[ . ]
[  .]
)rc   rz   rv   rt   test_print_nonzeror    s8    12     45     rv   c                     t        j                  d      t        d      k(  sJ t        j                  d      t        d      k(  sJ t        dd      t        dddgdz        k(  sJ t        ddgddgg      } t        ddgddgg      }t        D ]v  }|j                  d      }| |k(  sJ | t        d|      k(  sJ t        |      |k(  sJ |j                  d      }||k(  sJ |t        d|      k(  sJ t        |      |k(  rvJ  y )Nrh   rj   ri   rw  r   rg   rI  )r   r.   rH   r4   r9  r  )r   rQ   rJ  r   s       rt   test_zeros_eyer    s   ::a=CF"""<<?eAh&&&1:1qc"f----AA AAA A GGAJAvvCsO###Aw#~~IIaLAvvE!%%%%Aw#~~rv   c                     t               j                  sJ t        ddgddgg      j                  sJ t        dd      j                  sJ 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        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        t        dgddgg      j                  dk(  sJ t        dd      } t        | dgddgg      j                  dk(  sJ y )	Nr   rh   rj   ri   FrJ   T)nonzero)	r   is_zero_matrixrH   r.   rO   r#   r   r   r$   r  s    rt   test_is_zeror    sL   8""""Aq6Aq6"#2222A;%%%%1v$$$$Aq6Aq6"#22d:::!Q!Q()88D@@@QFQF+,;;tCCC 1a&1a&!12AATIIIAq6Aq6"#22e;;;sD!AAq6Aq6"#22e;;;rv   c                  J   t         dz  } t        |       }t        |        }t        |       }t        |        }t        |       }t        |        }||z  t	        d      z  t	        d      k(  sJ ||z  t	        d      z  t	        d      k(  sJ ||z  t	        d      z  t	        d      k(  sJ |j                         ddt        |       z  z   k(  sJ |j                         ddt        |       z  z   k(  sJ |j                         ddt        |       z  z   k(  sJ t        d      t	        d      k(  sJ t        d      t	        d      k(  sJ t        d      t	        d      k(  sJ t        j                  g dt         dz        }t        j                  g dt         dz        }t        j                  g dt         dz        }	t        t          dz        |j                         k(  sJ t        t          dz        |j                         k(  sJ t        t          dz        |	j                         k(  sJ t        t         dz        |j                         k(  sJ t        t         dz        |j                         k(  sJ t        t         dz        |	j                         k(  sJ y )Nrh   ri   rg   r   r   r   r   )r6   r:   r9   r8   r.   r  r)   r   from_axis_angleto_rotation_matrixr;   r<   r=   )
thetar3_plusr3_minusr2_plusr2_minusr1_plusr1_minusq1q2q3s
             rt   test_rotation_matricesr    sf   qDEG% HG% HG% HGCF"c!f,,,GCF"c!f,,,GCF"c!f,,, ==?a!CJ,....==?a!CJ,....==?a!CJ,.... Q<3q6!!!Q<3q6!!!Q<3q6!!! 
	#	#IrAv	6B		#	#IrAv	6B		#	#IrAv	6BrTAX""7"7"9999rTAX""7"7"9999rTAX""7"7"99992"b&;&;&====2"b&;&;&====2"b&;&;&====rv   c                     t        t        d      d         dk(  sJ t        t        d            t        d      k(  sJ t        t        d        t        t        d            dk(  sJ t        t        d            dk(  sJ y )Nvectorrj   z	vector[4]rM   c                      t        d      d   S )NrM   r   )r   rz   rv   rt   r   z%test_DeferredVector.<locals>.<lambda>  s    ~c226 rv   testzDeferredVector('test'))strr   rD   r^   r   reprrz   rv   rt   test_DeferredVectorr
    sx    ~h'*+{:::>#&'>#+>>>>
:67~c"#s***v&'+CCCCrv   c                  0    t        t        d            rJ y )Nr  )rd   r   rz   rv   rt    test_DeferredVector_not_iterabler    s    s+,,,,rv   c                  &    t        t        d        y )Nc                  *    t        t        d            S )Nr  )r   r   rz   rv   rt   r   z,test_DeferredVector_Matrix.<locals>.<lambda>  s    f^C%89 rv   )r^   rg  rz   rv   rt   test_DeferredVector_Matrixr    s    
99:rv   c            
         t         } t        ddddg      }t        ddddg      }t        ||g      t        ddddg      t        dd | d      dz   | d      dz  g      gk(  sJ t        |j                  |j                  g      t        ddddg      t        dd | d      dz   | d      dz  g      gk(  sJ t        t        ddg      t        ddg      gd      t        dt	        d      z  dz  t	        d      dz  g      t        t	        d       dz  dt	        d      z  dz  g      gk(  sJ t        t        dg            }t        |      t        dgg      gk(  sJ y )Nri   rg   rh   rk   r   Tr   )r    r   r   r,  rA   r
   )r  r   r   r  s       rt   test_GramSchmidtr    s}   A	1q!f	B	1q!f	BBx 	1q!f	vaQqT!VQrU1W,=>?@ @ @bdd|$	1q!f	vaQqT!VQrU1W,=>?@ @ @ 1v1v7>$r(
2tBx{+,b	"aRjm,-C/ / / / 	&!+Aq>fqcUm_,,,rv   c                  T    t        g dd      dk(  sJ t        g ddd      dk(  sJ y )Nr  ri   r   F)zero)r(   rz   rv   rt   test_casoratianr  &  s.    lA&!+++lAE2a777rv   c                      t               t        dd      z  j                  dk(  sJ t        dd      t        dd      z  t        dd      k(  sJ t        dd      t        dd      z  t               k(  sJ y )Nr   rh   )r   rh   )r   rH   r  rz   rv   rt   test_zero_dimension_multiplyr  +  si    HU1a[ ''6111A;uQ{"eAqk111A;uQ{"fh...rv   c                  v    t        ddt        d              dd d f   t        ddgg      k(  sJ  dd d f   t        ddgg      k(  sJ  d d df   t        ddgg      j                  k(  sJ  d d df   t        ddgg      j                  k(  sJ t        t         fd       t        t         fd       y )Nrg   rj   ri   rh   r   c                       dd d f   S r  rz   r   s   rt   r   z'test_slice_issue_2884.<locals>.<lambda>7  s    qAw rv   c                       d   S )Nr  rz   r   s   rt   r   z'test_slice_issue_2884.<locals>.<lambda>8  s    qw rv   )r   r   r,  r^   r   r   s   @rt   test_slice_issue_2884r  1  s    q!U1XAQT7fq!fX&&&&RU8v1vh''''QT7fq!fX&(((((QU8v1vh')))))
:'
:'rv   c                      t        dd      d d df   j                  dk(  sJ t        dd      dd d f   t        ddg       k(  sJ y )Nr   rh   r   r~   ri   )rH   r  r   rz   rv   rt   test_slice_issue_3401r  ;  sK    A;q"u##v---A;q!tq!R 0000rv   c                     t        dd      } d| d<   | d d df   t        g d      k(  sJ | d   dk(  sJ | dd dgk(  sJ d| d<   | d   dk(  sJ | ddd f   t        ddgg      k(  sJ t        dd	gg      | ddd f<   | dd d f   t        g d
g      k(  sJ ddgg| ddd f<   | dd d f   t        g dg      k(  sJ d| d<   | d d d df   t        g d      k(  sJ g d| d<   | d d df   t        g d      k(  sJ t        g d      | d<   | d d df   t        g d      k(  sJ t        g d      | d<   | d d df   t        g d      k(  sJ y )Nrh   ri   r   r   rj   r  rm   rk   rl   )ri   rk   rl   +   )ri   r  r     r}   )r  ri   r   r  )rH   r   r#   )r  s    rt   test_copyinr   @  s   aAAaDQT7fY''''Q4199Q7qc>>AdGT7b==QU8vAwi((((1vhAaeHQT7fi[))))RzAaeHQT7fk]++++AdGQU8vj))))AdGQT7fY''''YAdGQT7fY''''9%AdGQT7fY''''rv   c                  &    t        ddgddgg      j                         t        ddgddgg      dfk(  sJ t        t        d        t        g dt        ddgdt        dgg       t         j                         d          j                  k7  sJ  j                         d   t        d      k7  sJ  j                  t        	      d   t        d      k7  sJ t        t         fd
       t        t         fd       t        t         fd       y )Nri   rg   r   )r   c                  @    t        ddgddgg      j                         S r  rb  rz   rv   rt   r   z'test_invertible_check.<locals>.<lambda>[  s!    v1v1v&67;;= rv   )r   r   r   r   rh   r  c                  (     j                  d      S )Nr  re  r  r   s   rt   r   z'test_invertible_check.<locals>.<lambda>f  s    quuEu2 rv   c                  (     j                  d      S )Nr  re  r$  r   s   rt   r   z'test_invertible_check.<locals>.<lambda>g      quuDu1 rv   c                  (     j                  d      S )Nr  re  r$  r   s   rt   r   z'test_invertible_check.<locals>.<lambda>h  r&  rv   )	r   r  r^   r  rO   rT  rp   r.   r>   r   s   @rt   test_invertible_checkr(  W  s     Aq6Aq6"#((*v1v1v6F/G.NNNN
:=>
a!
a 	A
 qvvx{qvv%%% 668A;#a&   6686$Q'3q6111
:23
:12
:12rv   c                      t        d      \  } }| |z  }|j                  | t        g d            t        g d      |z  k(  sJ y )Nzx, y)rh   rk   rh   )rC   rt  r   )rO   rP   r   s      rt   test_issue_3959r*  k  s@    6?DAq	!A66!VI&'6)+<Q+>>>>rv   c                  B    t        t        ddgddgg            dk(  sJ y )Nri   rg   rh   rj   zMatrix([[1, 2], [3, 4]]))r  r   rz   rv   rt   test_issue_5964r,  q  s(    v1v1v&'(,FFFFrv   c                  p    t        d      \  } }t        t        | d|z  g|dz  | dz   gg            dk(  sJ y )Nr  rg   rh   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))rC   rB   r   r  s     rt   test_issue_7604r.  u  sG    5>DAqAaC1a4Q-01234 4 4rv   c            
          t        d      j                  sJ t        d      j                         j                  sJ t        d      j                  rJ t	        d      j                  rJ t        g dg      j                  rJ t        dddddd      j                  sJ t        ddt        d            j                  rJ t        ddddd      j                  rJ t        dddddddd      j                  rJ y )	Nrh   r   ri   )r}   rm   r  rg   rl   )r}   rm   )r}   rm   r  r~   r  )r.   is_Identityr  rH   r4   r   r#   r   rz   rv   rt   test_is_Identityr1  {  s    q6q6 ,,,,Qx####Aw""""yk"....!AQa89EEEEAaq*6666Aa!34@@@@Aa!1A!NO[[[[[rv   c                     t        dd      j                  t        dd            dk(  sJ t        dd      j                  g d      dk(  sJ t        g d      j                  t        g d            dk(  sJ t        dddt        z  g      j                  t        t        ddt        z  g            dt        z   k(  sJ t        dddt        z  g      j                  t        t        ddt        z  g      d	      dt        z   k(  sJ t        dddt        z  g      j                  t        t        ddt        z  g      d
	      dt        z   k(  sJ t        dddt        z  g      j                  t        t        ddt        z  g      d
d      dt        z
  k(  sJ t        dddt        z  g      j                  t        ddt        z  dg      d
d      ddt        z  z   k(  sJ t        dddt        z  g      j                  t        ddt        z  dg      d
d      ddt        z  z
  k(  sJ t        t        dt        z  g      j                  t        t        dt        z  g      dd      dk(  sJ t        t        dt        z  g      j                  t        t        dt        z  g      d      dk(  sJ t	        t
        d        y )Nri   rh   r  ro   r  rg   r   Fr  Tr  physicsr  conjugate_conventionrj   rk   rl   rightr   left)r5  c                  V    t        ddg      j                  t        ddg      dd      S )Nri   rg   rh   rj   Tr  r4  rt  rz   rv   rt   r   ztest_dot.<locals>.<lambda>  s)    vq!f~11&!Q.Dgm1n rv   )r4   ru  r   r   r^   r  rz   rv   rt   test_dotr9    s   1:>>$q!*%***1:>>)$))))  	!23r9991a1+""61a1+#6726AAA1a1+""61a1+#6%"HBQRFRRR1a1+""61a1+#6$"G2PQ6QQQ1a1+""61a1+#6$]f"gkmpqkqqqq1a1+""61ac1+#6$]d"eijmnopmpipppp1a1+""61ac1+#6$]c"dhilmnolohoooo1ac(1Q3x 0EX^_ceeee1ac(1Q3x 0vNRSSSS
:norv   c            	         t        dd      \  } }}}}}t        d|||f| d|| f| | d| f| ||  dff      }t        d|  | | f| d|| f|| d|f||| dff      }|j                         j                  |      sJ t	        d      j                         j                  t        d            sJ |j                         j                         j                  |       sJ y )NzB_x B_y B_z E_x E_y E_zTr%  r   rh   )rC   r   dualequalsr.   rH   )B_xB_yB_zE_xE_yE_zrQ  Fds           rt   	test_dualrD    s   #*!$. Cc3ScC 
!cC4 
tC 
cTa 	 	A 
sdSD3$	S3$	sdq3	sSDQ	 
B 668??2q6;;=a)))668==?!!1"%%%rv   c                  ,   t        ddg      j                         du sJ t        dddt        dz  dt        z  z   dz   t        t        dz   dz   dt        t        z  t         t         t        z  dg	      } | j                         du sJ | j                  d      J | j                  d       J | d	    | d	<   | j                         J | d	    | d	<   | j	                         } | j                  d      du sJ d| d
<   | j                         du sJ y )Nri   rg   Frh   r   Tr  c                     | S r   rz   rs   s    rt   r   z%test_anti_symmetric.<locals>.<lambda>  r  rv   rk  r}   )r   r  rO   rP   r-   r   s    rt   test_anti_symmetricrG    s/   1a&>++-666q!aA!aa!eaZKAaC!aRT1MNA D(((.6664<<< whAdG (((whAdG	
A.$666AdG E)))rv   c                     t        d      } | j                  d      \  }}||j                  z  |j                  |z  cxk(  rt        |j                        k(  sJ  J | j                  dd      \  }}||j                  z  |j                  |z  cxk(  rt        |j                        k(  sJ  J ||z  |j                         z  | k(  sJ y )N)rK  rk  Tr  )r  sort)r   r  r,  r.   rq   r  )r   r  r   s      rt   #test_normalize_sort_diogonalizationrJ    s     A==4=(DAqQSS5ACCE(S[(((((==4d=3DAqQSS5ACCE(S[(((((Q3quuw;!rv   c                  &    t        t        d        y )Nc                  6    t        g dt        ddg       g      S )Nro   r   ri   r  rz   rv   rt   r   z!test_issue_5321.<locals>.<lambda>  s    vy&Ar2B&CD rv   )r^   r  rz   rv   rt   test_issue_5321rM    s    
:DErv   c            	         t        j                  t        d      dt        d      z        t        g dg dg      k(  sJ t        j                  t        d      dt        d      z        t        ddgddgddgddgg      k(  sJ t        } | j                   | t        d             | dt        d      z              t        g dg dg      k(  sJ y )Nrg   )ri   r   rg   r   )r   ri   r   rg   ri   r   )r   r   r.   r   r#   rI  s    rt   test_issue_5320rO    s    ==Q3q6*f6 /    ==Q3q6*f	
A	
A	
A	
A	6 /    C::c#a&k3qQx=1V= 6   rv   c                      t        dgg      } t        |       }t        j                  ||       t        ddgg      k(  sJ t        j                  ||       t        dgdgg      k(  sJ y r  )r   rD   r   r   )r   AIms     rt   test_issue_11944rR    sb    uA
!*C==a FQF8$4444==a FQC!:$6666rv   c                     g d} g d}t        g d      }|j                  }fd}t        D ]   |       } |      } ||j                  |      |        ||j                  |j                        |        ||j                  j                  |j                        |        ||j                  j                  |      |        t	        t
        d        y )Nro   r   )r   rj   r   c                 4    || k(  sJ t        |       k(  sJ y r   )r  )r0  rs  rJ  s     rt   r  ztest_cross.<locals>.test  s    axxAw#~~rv   c                  X    t        ddddg      j                  t        ddddg            S r  rq  rz   rv   rt   r   ztest_cross.<locals>.<lambda>  s/    q!aV""6!QA#78 rv   )r   r,  r9  rr  r^   rW   )rJ   rK   r   r   r  r   r   rJ  s          @rt   
test_crossrV    s    AA

C
%%C   FFQWWQZQWWQSS\3QSSYYqss^S!QSSYYq\3  : 9 :rv   c                  @   t        t        t        t        g      } t        t        t
        t        g      }| j                         |z  | j                  |      k(  sJ | j                         j                         sJ | j                         j                         | k(  sJ y r   )r   rO   rP   rQ   rJ   rK   rL   hatrr  r  vee)v1v2s     rt   test_hat_veer\    st    	Aq		B	Aq		B668b=BHHRL(((668%%'''668<<>Rrv   c                     t         D ]V  } | j                  d      | j                  d      h}t        |      dk(  r#|j                         | j                  d      k(  rVJ  t        D ]#  } t        | j                  d      t              s#J  y r  )immutable_classesr.   rT  popr  r  r   )rJ  r  s     rt   	test_hashr`    sz      5WWQZ$1v{quuw#''!*4445  4cggaj(3334rv   c                      dt         gddgg} t        ddgt          dgg      }t        D ]  }| ||       j                         k(  rJ  y Nr   ri   )r   r   r9  adjoint)r  rs  rJ  s      rt   test_adjointrd  
  sW    q6Aq6
C
1a&A2q'"
#C )c#h&&(((()rv   c                     t        ddgt        ddt        z  z
  gg      } | j                         t        j                  t        d      t        j
                  t        hk(  sJ | j                  t              t        hk(  sJ y r  )r   rO   rc  r"   r   NegativeOner$   r   s    rt   
test_atomsrg    sb    AA!G%&A779qtAMM15555776?qc!!!rv   c            	        	 t        t        t        gt        t        gg      } t        | j                  d            t        | j                               k(  sJ t        ddgddgddgg      t        g d	g d
g      t        t        t        g      g}|D ]f  }|j                  d      }||z  }||z  }t        ||z        |k(  sJ t        ||z        |k(  sJ |j                  |k(  sJ |j                  |k(  rfJ  |D ]o  }t        |j                  d            }||z  }||z  }t        ||z        |k(  sJ t        ||z        |k(  sJ |j                  |k(  sJ |j                  |k(  roJ  ddl	m
	 | j                  d      }| j                         }t        dt        dt        dt        di}t        	fdt        |j                  |      |j                  |            D              sJ y )NRDre  r  h   i  rh   rn  rk   )ri   r   r   )r   r     EDr   )compi_ib,  i  ij  c              3   n   K   | ],  \  }} |j                         |j                                . y wr   rC  )r<  r   r   rm  s      rt   r=  ztest_pinv.<locals>.<genexpr>>  s0      
Aq 	QSSUACCE
r>  )r   rJ   rK   rL   rM   r?   pinvr  r.  sympy.core.numbersrm  rE  r  rt  )
A1Asr   A_pinvAApApAr,  wrepsrm  s
            @rt   	test_pinvrx    s   	!Q!Q 	!BBGG4G()Xbffh-???? 2s)dAYQ0
1
)\*
+
!Q.
B  t$&jqja A%%%f%///uu||uu||  !&&&-.&jqja A%%%f%///uu||uu|| (
tA
Avq%E1e4D 
taffTl3
 
 
 
rv   c            	          t        g dg dg dg dg dg dg      g} | D ]G  }|j                  d      }||z  }||z  }|j                  |k(  sJ d	 } ||j                  |      rGJ  y )
N)=   r  7   rc  rH  r   )>   `   U   r~  r!  r   )E   8   r  rj   6   r   )r   r  [   )   rH  r   )r   r;  r   rj  Z   r   )r   r   r   r   r   r   rl  re  c                     | j                  t              }|D ci c]  }||j                          }}| |z
  j                  |      j                         }t	        d |D              S c c}w )Nc              3   8   K   | ]  }t        |      d k    yw)g|=Nr\  )r<  r   s     rt   r=  zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>e  s     ;!s1v~;s   )rc  r!   r:  rz  rE  )r   r   rootofsr  rootofs_approxdiff_approxs         rt   allclosezEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclosea  s`    hhv&G4;<qal<N<7,,^<BBDK;{;;; =s   A()r   ro  r.  )rr  r   rs  rt  ru  r  s         rt   3test_pinv_rank_deficient_when_diagonalization_failsr  D  s    
 	#####  	!
B  $t$&jqjuu||	< s###-$rv   c                      t        dd      t        dd      z   t        ddg       k(  sJ t        dd      t        dd      z   t        ddg       k(  sJ y rb  )r4   r   rz   rv   rt   test_issue_7201r  j  sR    1:Q
"fQ2&66661:Q
"fQ2&6666rv   c                      t         t        t        t        fD ]&  }  | t        gdgg      j
                  t        hk(  r&J  y r+  )r   r   r   r#   rO   free_symbolsr/  s    rt   test_free_symbolsr  o  s=    3V\I 11#s}))aS0001rv   c                      	 ddl m  t	          g d            t	        g d      k(  sJ t	          g dg            t	        g dg      k(  sJ t	          g dg dg            t	        g dg dg      k(  sJ t	          t
        t        t        g            t	        t
        t        t        g      k(  sJ t        t         fd       t	          ddg        d	d
g      g      t	        ddgd	d
gg      k(  sJ t	          ddg      d	d
gg      t	        ddgd	d
gg      k(  sJ t	          g         g       g      t	        g       k(  sJ y# t        $ r t        d       Y ^w xY w)zSee issue 7465.r   r\  r^  ro   rn   c                  B    t          ddgddggddgddggg            S )	Nri   rg   rh   rj   rk   rl   r   r   r  r  s   rt   r   z#test_from_ndarray.<locals>.<lambda>  s0    u1v1v.!Q!Q0@ABC rv   ri   rg   rh   rj   N)
ra  r\  rd  r_   r   rO   rP   rQ   r^   NotImplementedErrorr  s   @rt   test_from_ndarrayr  t  sb   P %	"#vi'8888%$%)<<<<%I./0	9%&' ' '%Aq	"#vq!Qi'8888
CE5!Q=%A-01VaVaV<L5MMMM5!Q=1a&)*fq!fq!f5E.FFFF59eBi()VBZ777  PNOPs   E E('E(c                  ^   ddl m}  	 ddlm}m}  |  ddgddgg            }|d   dk(  sJ t        |      g d	k(  sJ t        t              5   |  ddgddgg            }d d d        |d   dk(  sJ t        |      g d	k(  sJ y # t
        $ r t        d       Y w xY w# 1 sw Y   @xY w)
Nr   
_matrixify)r\  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesri   rg   rh   rj   r  )
sympy.matrices.commonr  ra  r\  r  rd  r_   rr   r]   PendingDeprecationWarning)r  r\  r  r   s       rt   test_17522_numpyr    s    0a' 	51a&1a&)*+AQ41997l"""	2	3 1v1v1v./01Q41997l"""  a_`a1 1s   B	 B#	B B #B,c                      ddl m}  	 ddlm}  |  ddgddgg            }|d   d	k(  sJ t        |      g d
k(  sJ y # t        $ r t        d       Y Gw xY w)Nr   r  )r  zEmpmath must be available to test indexing matrixified mpmath matricesri   rg   rh   rj         @)rX  rY  r  r  )r  r  mpmathr  rd  r_   rr   )r  r  r   s      rt   test_17522_mpmathr    sk    0V! 	6Aq6Aq6*+,AQ43;;7****  VTUV   ? AAc                      ddl m}  	 ddlm}  |  ddgddgg            }|d   dk(  sJ t        |      g d	k(  sJ y # t        $ r t        d       Y Gw xY w)
Nr   r  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesri   rg   rh   rj   r  )r  r  scipy.sparser  rd  r_   rr   )r  r  r   s      rt   test_17522_scipyr    sj    0[+ 	:1v1v./0AQ41997l"""  [YZ[r  c                      t        dt        gt         dgg      } | j                  sJ dt        z  | d<   | j                  du sJ t        | d<   | j                  J | d   t        z  | d<   | j                  du sJ y )Nri   rg   r}   Fr   r~   r
  r  s    rt   test_hermitianr    s    A!Q !A>>>cAdG>>U"""AdG>>!!!gaiAdG>>U"""rv   c                     t        g dg dg dg      } | j                  d       | t        g dg dg      k(  sJ t        g dg dg dg      }|j                  d       |t        g dg dg      k(  sJ t        g dg dg dg      }|j                  d       |t        g dg dg      k(  sJ t        g dg dg dg      t        t        fd	       t        g dg dg dg      t        t        fd
       t        g dg dg dg      } | j	                  d       | t        ddgddgddgg      k(  sJ t        g dg dg dg      }|j	                  d       |t        ddgddgddgg      k(  sJ t        g dg dg dg      t        t        fd       t        g dg dg dg      t        t        fd       y )Nro   r  r   ri   r   )rk   rl   r   r   r   c                  &     j                  d      S rm  r   r  s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r   rv   c                  (      j                   d      S Nrp  r   r   s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>      yqyy~ rv   rh   rg   rj   rk   c                  &     j                  d      S rm  r   r  s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r   rv   c                  (      j                   d      S r  r   r  s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r  rv   )r   r   r^   r   r   )r0  rU  Or  r   s      @@rt   test_issue_9457_9467_9876r    s   	9i01AIIaL	9-....	9i01AIIbM	9-....	9k23AIIbM	9-....	9i01A
:,-	9i01A
:-. 		9i01AIIaLAAA/0000	9i01AIIbMAAA/0000	9i01A
:,-	9i01A
:-.rv   c                  D   t        dd      \  } }t        d      \  }}t        d      }t        dd| ||t        g      }|| z  |z  | |z  |z  k7  sJ ||z  |z  ||z  |z  k(  sJ | |z  || z  k7  sJ ||z  ||z  k(  sJ || z  |z  t        || z  dgd|| z  gg      k(  sJ y )Nr  F)commutativeza brg   r   )rC   r.   r   rQ   )rO   rP   rJ   rK   r0  r   s         rt   test_issue_9422r    s    5e,DAq5>DAqAA	1q!Ql	#BQ3q5AaCE>>Q3q5AaCE>>R42a4<<R42a4<<Q3q5FQqS!Hq!A#h/0000rv   c                  2   t        g       } ddgt        g d      f}ddg|d   j                  f}ddgt        ddgdd	gg      f}|||fD ]K  \  }}|D ]A  }t        | |      }d
|v r ||      n |d|      }||k(  rt        |      t        |      k7  rAJ  M y )Nr   r   )r   rl   rh   r   r   ri   rg   rh   rj   joinr  )r   r,  r  id)	r0  rJ   rK   rL   opsr   opr^  news	            rt   test_issue_10770r    s    r
A	z"F9$55A	z"AaDFF*A	|$fq!fq!f-=&>>Aa) 1Q 	1B2A B,!A$Ab!HC!832a5 000	11rv   c                  d   t        g dg dg dg      } | j                  g dg d      t        ddgdd	gd
dgg      k(  sJ | j                  g dg d      t        dgdgd
gg      k(  sJ | j                  g dg d      t        g dg      k(  sJ | j                  g dg d      t        g dg dg      k(  sJ | j                  g dg d      t        ddg       k(  sJ | j                  g dg d      t        ddg       k(  sJ | j                  g dg d      t        dgdgg      k(  sJ y )Nro   rn   r   r   )TTFri   rg   rj   rk   r   r   )TFF)TFT)FFFrh   r   )FTF)r   r   r  s    rt   test_issue_10658r    s8   	9i01A99Y 34AAA'() ) )99Y 45!qcA39PPPP99)959LLLL99()4	9%&' ' '99Y 56&Ar:JJJJ99*I6&Ar:JJJJ99(*>?aSz  rv   c                     t        ddt        d      z  z   dgdt        d      z  dz  dz   dt        d      z  dz  gg      } | j                         dk(  sJ t        ddt        d      z  t        z  z   dgdddt        d      z  t        z  z   gg      } t	        | j                         d	   t        ddddt        d      z  t        z  z   z  gd	d	gg      z
        t        dd      k(  sJ t        d
      \  }}}}}}}}}	}
}}t        ||||z  ||z  d	g||||z  ||z  d	g||||z  ||z  dg||||z  ||z  dg|	|
d|	z  |z  |	|z  z
  d|
z  |z  |
|z  z
  d	gg      } | j                         dk(  sJ y )Nr   rk   rg   ri   rh   r"  rj   rn  r   z/a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1)r   rA   r  r   r?   r  rH   rC   )r   axaybxbycxcydxdyexeyt0t1s                rt   !test_opportunistic_simplificationr    s    	aQi$r$q'z!|a'7DGA&FGHA668q== 	1T!W9Q;#Qr!DG)A+~$678AAFFHQK&1b!aQik/.B*CaV)L"MMNRWXY[\R]]]] +22c*d'Br"R2bBr"RBr"uRU1%r"RU2b5&;R2b5Bq<QSUVXY[\^Y^_abd_defRgiklnopqsostvovwyz|w|o|}~  @B  ~B  CE  ~E  FH  IK  FK  ~K  LM  iN  O  	PA668q==rv   c                     t        g dg dg      } | j                         d   t        g dg dg      z
  j                         dk  sJ t        g dg dg d	g      }t        g d
g dg dg      }t        g dg dg d	g      }|j                         |z
  j                         dk  sJ |j                         |z
  j                         dk  sJ y )N)g~jth?gRM@g(\M@)gDl)@gQgp=
cG@r   )rX  r   rq  )r   rX  rX  V瞯<)q7K<rX  rj   )rZ  r   r   r   )r  rX  r  )rZ                 @)r  r  rX  )r   rZ  r  )rX  r  g      )r   r  r  r  )mmm_mixedm_floatm_invs       rt   test_partial_pivotingr    s    
 $&;<=BGGIaL6#3#3#5 6 67;tvF F F o%%' (G ''') *G (((* +E
 KKME!'')E111KKME!'')E111rv   c                      t        g dg dg dg      } | j                  d       d   }t        g dg dg d	g      }||z
  }|j                         d
k  sJ |d   dk(  sJ y)z When doing numerical computations, all elements that pass
    the iszerofunc test should be set to numerically zero if they
    aren't already. )?皙gɿr   )皙r  gٿr   )r  r  g333333?r   c                     t        |       dk  S )Ng [n<r\  rs   s    rt   r   z*test_iszero_substitution.<locals>.<lambda>/  s    Q rv   r  r   )rX  r   g4iҤIӿr   )r   rX  glٲer   r  r  r  N)r   r  r  )r   m_rref	m_correctm_diffs       rt   test_iszero_substitutionr  (  sr     	$%9:NOPAVV5V6q9F9:[\}~IiF;;=5   #;!rv   c            	         ddl m}  dt        t        t	        dd      z        z  t        t        t	        dd      z        t        d      z   z  }dt        d      z  t        t        t	        dd      z        dz  z  d	t        t        t	        dd      z        z  z   d
t        t        t	        dd      z        dz  z   z  } | dd      } | dt        d             } | ||      }t        |t        |      z
  |t        |      z
  g      }t        ||z
  ||z
  g      }t        t        ||z
        t        ||z
        g      }d }	|j                  d|	      dk(  sJ |j                  d|	      dk(  sJ |j                  d|	      dk(  sJ y )Nr   )Pointr   r  -   rh   r#  rg   rh  rn  ri   c                 <    t         | j                               dk  S )Ng#B;)rH  rD  rs   s    rt   r   z"test_issue_11238.<locals>.<lambda>E  s    #cacce*u$ rv   T)r?   r  )	sympy.geometry.pointr  rE   r6   r    rA   r   r?   r  )
r  xxyyp1p2p0r   r   r   Zs
             rt   test_issue_11238r  7  s   *	
3r(2r""#	#SHR,<)<%=Q%G	HB
T!W*SHR,,-q0
02c"Xb"=M:M6N3N
NQSVYZ\]efhjl]mZmVnpqVqQq	rB	q!B	q47(	B	r"B	hrl"B"$56	7B	b"r'"	#B	"r'"HR"W$56	7B
 	%A77DQ7/144477DQ7/144477DQ7/1444rv   c                      t        ddg d      } | t        j                  z  }| |z   }t        D ]M  } ||      j	                         \  }}t        |      t        |       k(  sJ t        |      t        |       k(  rMJ  y )Nrg   r  )r   r"   ImaginaryUnitr9  as_real_imagrr   )r   r   r   klsrJ   rK   s         rt   test_as_real_imagr  K  sx    	!I	B	AOO	B	bB #"g""$!Aw$r("""Aw$r("""#rv   c                      t        ddg d      } | j                         \  }}|d   t        dddg      k(  sJ |d   t        ddg d      k(  sJ y )Nrh   r   ri   rg   r   )rg   ri   r   rg   )r   jordan_cells)r   r  Jcellss      rt   test_deprecatedr  V  s[    
 	q!23A IAv!9q!aS))))!9q!\2222rv   c                      ddl m}  t        g d      }t        g d      } | |d      t        g d      k(  sJ  | |d      t        g d      k(  sJ y )	Nr   )Mod)r   ri   rg   )r   rc  r!  rh   )rg   ri   rg   rj   )rg   r   ri   )sympy.core.modr  r   )r  r   r   s      rt   test_issue_14489r  a  sK    "zA}Aq!9y))))q!9y))))rv   c                      	 ddl m}  t	        ddgddgg      }  |t
              j                  j                  d	k(  sJ y # t        $ r t        d       Y Ow xY w)
Nr   r  r^  ri   rg   rh   rj   )dtypefloat64)ra  r\  rd  r_   r   floatr  name)r\  r0  s     rt   test_issue_14943r  j  s`    P 	1!u~A% &&++y888	  PNOPs   A AAc                  d    t        ddd      } t        d      }| d   dkD  }t        |      dk(  sJ y )Nr   ri   rJ   r}   r   zm[0, 0] > 0)r   r$   r  )r   rJ   s     rt   test_case_6913r   u  s8    S!QAsA	$	Aq6]"""rv   c                  d    t        ddd      } t        d      }| j                  |      || ik(  sJ y )Nr   rh   rJ   )r   r&   match)r   rJ   s     rt   test_issue_11948r  |  s3    S!QAS	A771:!Qrv   c                  b   t        dt        g      t        dt         g      g} t        j                  |  t        dgt        gg      t        dgt         gg      gk(  sJ t        dt        dg      t        t        dt         g      g} t        j                  |  t        dgt        gdgg      t        t        dz  gt        d      dz  gt         gg      gk(  sJ t        dt        gdt         gg      }|j	                         \  }}||j
                  z  t        j                  d      k(  sJ y )Nri   r   rg   )r   r   r  r"   QRdecompositionr.  r.   )r  r?  r   r  s       rt   test_gramschmidt_conjugate_dotr    s'   Aq6NFAr7O,D&	!qc
	VaSA2$K012 2 2 Aq!9vq!aRj12D&	!qcA3	 &1Q3%!A$q&QB4)@"ABC C C 1a&1qb'"
#C DAqqss7fjjm###rv   c                      t        t        ddd            } t        t        ddd            } | j                  |      }t        || d         }t        || d         }||d   k(  sJ |dk(  sJ y )NrJ   rh   ri   rK   r}   r   )r   r   ru  r+   )rJ   rK   rL   rM   r   s        rt   test_issue_8207r    sr    |CA&'A|CA&'AaAQ$AQ$A$<<6M6rv   c            	         ddl m}  t        ddgddgg      j                  t	        t
        t        z        t
              t        t	        t              t	        dt        z        t	        t              z
  gdt	        dt        z        gg      k(  sJ t        ddgddgg      t        z  dz  j                  t        t
              t
              t        t        d      dz  t        d       dz  gt        d       dz  t        d      dz  gg      k(  sJ t        t        d        t        t        fd	       t        g d
g d
g dg dg      j                  t        t
              t
              j                         k(  sJ t        t        fd       t        ddgddgg      t        j                  t        t
              t
              dz        k(  sJ t        g dg dg dg      t        j                   | t
        d      t
              dz        k(  sJ t        g dg dg dg dg      j                  t        t
              t
              j                         k(  sJ t        g dg dg dg dg      j                  t        t
        t        z        t
              t        t        t        z  j                                     k(  sJ y )Nr   )nthrootri   rg   rh   rl   rj   c                  Z    t        d      j                  t        t              t              S r   )rH   analytic_funcr1   rO   rz   rv   rt   r   ztest_func.<locals>.<lambda>  s    a 6 6s1vq A rv   c                  X     t         z  j                  t        t               t               S r   )rO   r  r1   r  s   rt   r   ztest_func.<locals>.<lambda>  s    1 3 3CFA > rv   )r   r   r   rh   )r   ri   r   r   )r   r   r   ri   c                  J     j                  t        t              t              S r   )r  rA   rO   r  s   rt   r   ztest_func.<locals>.<lambda>  s    Q ; rv   r  rw  r~  )rh   r  rj   )r   r   r   )r   rk   r   rR  )ri   rg   r   r   )r   ri   rh   r   )r   r   ri   rh   )r   rg   ri   rl   )r   r   ri   rg   )r   r   r   rh   r  )sympy.simplify.simplifyr
  r   r  r@   rO   rN   r6   r)   rA   r^   r  r,   r?   r-   )r
  r   s    @rt   	test_funcr    sD   /A1vA??3qs8Q'6CFC!Hs1v<M3NQRTWXYZ[X[T\P]2^+____A1vAFQJ%%c!fa0FT!WQYaQR
<SW[\]W^V^_`V`bfghbijkbkUl;m4nnnn :AB
:>?}MNA??3q61%000
:;<R"b"#AAOODGQ/23q888[+67AAOOGAqM15q89Q>>>lL,GHA??3q61%000lL,GHA??3qs8Q'6(AaC99;2G+HHHHrv   z$Cannot create threads under pyodide.c                      d } t        d      5  t        j                  j                         5 }|j	                  |       }|j                         sJ 	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w)Nc                  R    t         j                  d k(  sJ t        dgg      } | | z  } yr  )rY   stater   r   s    rt   r^  ztest_issue_19809.<locals>.f  s/    !''4///QC5MErv   T)r[   
concurrentfuturesThreadPoolExecutorsubmitresult)r^  executorfutures      rt   test_issue_19809r    sp     
T	 #224 	#__Q'F==?"?	## #	# 	## #s"   A0$A$A0$A-	)A00A9c                      t        t        t        g      } t        | t        ddft        ddf      t        t        j
                  gt        j
                  gg      k(  sJ y rb  )r   rO   rP   r0   r"   r   r/  s    rt   test_issue_23276r    sT    1vAQAq	Aq!9-	
	
9 2   rv   (R  concurrent.futuresr  r>  collections.abcr   sympyr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   r  rJ   rK   rL   rM   rN   rO   rP   rQ   sympy.core.kindrR   rS   sympy.matrices.determinantrT   sympy.matrices.exceptionsrU   rV   rW   sympy.matrices.kindrX   sympy.matrices.utilitiesrY   rZ   r[   $sympy.tensor.array.array_derivativesr\   sympy.testing.pytestr]   r^   r_   r`   ra   rb   sympy.utilities.iterablesrc   rd   importlib.metadatare   r9  r  r^  ru   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r"  r)  r1  r6  rF  rV  rZ  ri  rq  ru  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r5  r:  rA  rC  rF  rI  rO  rS  r]  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r"  r'  r.  r1  r4  rB  rU  rj  rn  rt  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  r  r)  r/  r1  r3  r:  r?  rB  rF  rN  rR  rU  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r  r  r  r  r   r(  r*  r,  r.  r1  r9  rD  rG  rJ  rM  rO  rR  rV  r\  r`  rd  rg  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  rz   rv   rt   <module>r*     s     $
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( - , , 5 C3 3 * O O @  8 &|_6KL<($&;< 7&P5M&, /";. 4'*'**#$" 
%$$'95
8O	'">HD@&21 (
)
1
567L^0(0>L,4BG#8 M,% 
+
!+
&9)XGT_JD?_*JZ_%' 6%;58GPy	8$)&&<<<<<K(d&K0L2^D+8P1&
:>7Mt6. 6 6* 8!"G&9P "-:& >*)  
.	*F!@.6G$1&3@E!P
1H%V&('$&4.L)2
 !&;6|"9O*4(nP!%IPZz.&" $<">JD-;-"8
/(1
(.3(?G4\p&(*&F$7:( 4)"*
Z "$ "$J7
1
8&#"	+	##/:	1	1"225(#3*9# $I< :;# <#rv   