U
    L?h                    @   sJ  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d Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}d d! Z~d"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zdd Zekdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d Zdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Z d&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z	d8d9 Z
d:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Z dfdg Z!dhdi Z"djdk Z#dldm Z$dndo Z%dpdq Z&drds Z'dtdu Z(dvdw Z)dxdy Z*dzd{ Z+d|d} Z,d~d Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6ekdd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNddÄ ZOejdădŐdƄ ZPdǐdȄ ZQdS (      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               	   C   s  t ddddddddg} | jdks&t| jdks4t| d dksDt| d dksTtt| ddddddgksptt| dd d f dddgkstt| d d df ddgkstt| d d d d f t| kst| d d d d f | kstt | | kstt dddgdddgg| ks&tt dddgdddgf| ksHtt dd	g| ks^tt d
| ksptt ddgddgddgg| krtd S )N                  rg   rg   rg   re   rf   rh   ri   rj   )rl   rm   )r   rowsAssertionErrorcolslistrN    rs   V/var/www/html/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_matrixbase.pytest__MinimalMatrix#   s     " $""ru   c                   C   s   t ddgddggjttks"tt ddgddggjttksDtt ddg jttks^tt tggjttksxtt dt dggggjttksttdggjttksttdt dggggjttkstd S Nrg   re   rf   rh   r   )r   kindrW   rQ   ro   rN   rR   r"   rs   rs   rs   rt   	test_kind6   s    ""$rx   c                  C   s   t d\} }}}t| |g||gg}t| |g||gg}t| |g||gg}t| |g||gg}| |   kr|   kr|   kr| |||dksn td S )Nza:d)r   r   r   rg   rg   r   rk   )rB   r   r   r   r   todokro   )rI   rJ   rK   rL   m1m2m3Zm4rs   rs   rt   
test_todok@   s    0r   c                  C   s   t jt jtt t jgttttd gtt j tt dgg} t jt jtt t jttttd tt j tt dg}tdd|}| | kst	d S )Nre   rf   rh   )
r!   OneHalfrN   rO   ZerorP   r   tolistro   )lstZflat_lstmrs   rs   rt   test_tolistJ   s    82r   c                  C   sN   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}|  |ksJtd S )Nr   rg   r   rg   re   )r   r!   r   r   rN   Ztododro   )r   dictrs   rs   rt   
test_tododQ   s    r   c                      s^  t ddddddddddd	g	 tt fd
d tt fdd tt fdd tt fdd  d d  krtdddgdddggksn t d d  krtddgddgddggksn t d d  krtdddgddd	ggksn t d d  krTtddgddgdd	ggksZn td S )Nrf   rg   re   rh   ri   rj         	   c                      s
     dS Nri   row_delrs   ers   rt   <lambda>Y       z"test_row_col_del.<locals>.<lambda>c                      s
     dS Nr   rs   r   rs   rt   r   Z   r   c                      s
     dS r   col_delrs   r   rs   rt   r   [   r   c                      s
     dS r   r   rs   r   rs   rt   r   \   r   )r   r]   
IndexErrorr   r   ro   r   rs   rs   r   rt   test_row_col_delW   s    :<>r   c                  C   s   t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}|  | gksZt| |gkslt| |gks~td S Nrg   re   rf   )r   rN   rO   rP   get_diag_blocksro   )rI   rJ   rK   rs   rs   rt   test_get_diag_blocks1e   s     r   c                  C   s  t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}t| ||t| ||t| ||t|||f\}}}}t |j|j|}t |j|j|}t |j|j|}t |j|j|}| | ||gkst| | ||gkst| | ||gkst| |||gkstd S r   )	r   rN   rO   rP   r)   rn   rp   r   ro   )rI   rJ   rK   ABCDrs   rs   rt   test_get_diag_blocks2n   s     4r   c                  C   sb   t ddddddddddd	g	} | d
t dddddgks>t| d
t dddddgks^td S )Nrf   rg   re   rh   ri   rj   r   r   r   r   )r   rowro   colr   rs   rs   rt   test_row_col~   s     r   c                   C   sF   t dtdddgtddddgddddgddddggksBtd S Nrf   r   rg   r   )r-   row_joinr   ro   rs   rs   rs   rt   test_row_join   s    

r   c                   C   sJ   t dtdddggtdddgdddgdddgdddggksFtd S r   )r-   col_joinr   ro   rs   rs   rs   rt   test_col_join   s    
r   c                  C   s\   t dddgg} tddD ]<}dddg}||d td|| d |kstqd S )Nrh   ri   rg   r   rf   )r   rangeinsertr-   
row_insertr   flatro   )Zr4ilrs   rs   rt   test_row_insert   s
    
r   c                  C   s  t dddg} tddD ]<}dddg}||d td|| d |kstqtddt ddgddgddgddgddgddggt ddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggkstd S )	Nrh   r   ri   r   rf   rj   re   rg   )	r   r   r   rG   
col_insertr   r   ro   r-   )Zc4r   r   rs   rs   rt   test_col_insert   s    
$6r   c                
      s   t dddd   dddgddgt dddddddd	gksBt ddgdddgt dddddddd
gkstt tdtd ksttt fdd tt fdd d S )Nrh   rf   c                 S   s   | d | S Nrf   rs   r   jrs   rs   rt   r      r   ztest_extract.<locals>.<lambda>r   rg   re   r   
      c                      s     dgdgS )Nrh   r   extractrs   r   rs   rt   r      r   c                      s     dgdgS )Nr   rf   r   rs   r   rs   rt   r      r   )r   r   ro   r   r]   r   rs   rs   r   rt   test_extract   s    22r   c                     s:  t dddd  t dddd    ks2t    t      krt dddddddddg	ddd	ddd	ddd	g	d
ddd
ddd
ddg	dddddddddg	gksn ttt fdd t  t  kstt dd} t dd}t dd}t dd}t | |||  jdkr2 jd
ks6td S )Nrh   rf   c                 S   s   | d | S r   rs   r   rs   rs   rt   r      r   ztest_hstack.<locals>.<lambda>c                 S   s   | d | S r   rs   r   rs   rs   rt   r      r   r   rg   re   ri   rj   r   r   r   r   r   c                      s      S N)hstackrs   r   r~   rs   rt   r      r   )r   r   ro   r]   rV   rG   rn   rp   )M1M2ZM3ZM4rs   r   rt   test_hstack   s"    "r   c                      s   t dddd  t dddd    ks2t    t      krt dddgddd	gd
ddgdddgdddgddd	gd
ddgdddgdddgddd	gd
ddgdddggksn ttt fdd t  t  kstd S )Nrh   rf   c                 S   s   | d | S r   rs   r   rs   rs   rt   r      r   ztest_vstack.<locals>.<lambda>c                 S   s   | d | S r   rs   r   rs   rs   rt   r      r   r   rg   re   ri   rj   r   r   r   r   r   c                      s      S r   )vstackrs   r   rs   rt   r      r   )r   r   ro   r]   rV   rs   rs   r   rt   test_vstack   s&    "r   c                  C   s\   t ttfdf} | tst| tr,t| ts:tt dtfdf} | trXtd S )Nre   rf   re   )r   rN   rO   hasro   rP   r#   r   rs   rs   rt   test_has   s    r   c                  C   s  t d} tddddg dks$ttddd| d d|   d t| d d  d| t t |  t dg	}| dksxt|jddd kst|jd	d
 dd ksttdddd |D }|jdddksttdddd tjgt|dd   D }| dks
td S )NrN   re   rg   Frf   r   Tr>   c                 S   s   | S r   rs   rr   rs   rs   rt   r      r   z(test_is_anti_symmetric.<locals>.<lambda>c                 S   s   g | ]}|  qS rs   r,   .0rN   rs   rs   rt   
<listcomp>   s     z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  qS rs   r   r   rs   rs   rt   r      s     )rB   r   is_anti_symmetricro   rO   r!   r   rq   )rN   r   rs   rs   rt   test_is_anti_symmetric   s    D*r   c                  C   s   t dtgt dgg} | js tt dt tgt dgg} | jdksHtt ttgt dgg} | jd ksltt tdgt dgg} | jdkstd S )Nrg   re   Fr   r   Zis_hermitianro   rN   rI   rs   rs   rt   test_is_hermitian   s    
r   c                  C   s
  t ttgttgg} |  dks$tt ddddgdddd	gg} |  d
ksPtt ddddgddtd	gg} |  dks|tt dtdgg} |  dkstt dddgg} |  d
kstt dgtgdgg} |  dkstt dgdgdgg} |  d
kstd S )NTrg   re   rf   rh   ri   rj   r   r   F)r   rN   Zis_symbolicro   r   rs   rs   rt   test_is_symbolic  s    r   c                  C   s<   t dgdgg} t ddgddgg}| jr.t|js8td S Nrg   re   )r   Z	is_squarero   r   rs   rs   rt   test_is_square  s    
r   c                  C   sD   t ddddddg} |  s tt ddddddg} |  r@td S )Nre   r   rg   )r   is_symmetricro   r   rs   rs   rt   test_is_symmetric  s    r   c                  C   s   t dddgdddgdddgg} | js*tt dddddddddddg	} | jsRtt dddddddddddg	} | jdks~t| jdkstt dddgdddgdddgg} | jrtd S )	Nrf   rh   rg   re   ri   r   r   F)r   is_upper_hessenbergro   is_lower_hessenbergr   rs   rs   rt   test_is_hessenberg   s     

 r   c                  C   sb   t tddddddg dddhks*ttddd} t tdd| dddg | dhks^td S )Nre   r   rg   rf   rN   Treal)setr   valuesro   r#   rr   rs   rs   rt   test_values-  s    r   c                  C   s   t dtdgdddgg} | jt ddgtdgddggks<t| jt dt dgdddggks`t| j|  ksrt| j| jjkst| jt ddgt dgddggkstd S )Nr   ri   rg   re   )r   r   Tro   r   	conjugateHMrs   rs   rt   test_conjugate5  s     
r   c                  C   sJ   t tttddgg} | d dt ks*t|  t dt ggksFtd S )NFevaluater   re   )r   r   rN   ro   doitr   rs   rs   rt   	test_doitG  s    r   c                      sr   t ddtddg t fddtdD s2tt fddtdD sPtt fddtdD sntd S )	Nre   rg   ri   rj   c                 3   s&   | ]}   |  |   kV  qd S r   evalfr   r   r   rs   rt   	<genexpr>O  s     ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}  d |  |  d kV  qdS re   Nr   r   r   rs   rt   r   P  s     c                 3   s*   | ]"}  d |  |  d kV  qdS r   nr   r   rs   rt   r   Q  s     )r   r@   allr   ro   rs   rs   r   rt   
test_evalfM  s    r   c                     sT   t dtd\ tddfdd} tdd fdd}| }|| ksPtd S )NF, Gclsre   c                    s    | | S r   rs   r   Grs   rt   r   V  r   ztest_replace.<locals>.<lambda>c                    s    | | S r   rs   r   Frs   rt   r   W  r   rB   r   r   replacero   )Kr   Nrs   r   r   rt   test_replaceT  s
    r  c                     s   t dtd\ tdd fdd} |  d\}}|tddfddksRt| dd d	d	 ddikstd S )
Nr   r   re   c                    s    | | S r   rs   r   r   rs   rt   r   ^  r   z"test_replace_map.<locals>.<lambda>Tc                    s    | | S r   rs   r   r   rs   rt   r   `  r   r   rg   r   )r   r   rL   rs   r  rt   test_replace_map\  s
    r  c                     s   zddl mm}  W n tk
r0   td Y nX tddgddgg ddgddgg}|  |slt|  dd	|stttd
	dd dkrt
t fdd d S )Nr   )arrayarray_equal?NumPy must be available to test creating matrices from ndarraysrg   re   rf   rh   Tcopynumpy.c                      s    ddS )NFr  rs   rs   r   r  rs   rt   r   m  r   z'test_numpy_conversion.<locals>.<lambda>)r	  r  r  ImportErrorr^   r   ro   intrd   splitr]   	TypeError)r  Znp_arrayrs   r  rt   test_numpy_conversionc  s    r  c                  C   s   t ddgddgg} | | d  kr4| dks:n t| d| d  krn| d  krnt dkstn t| d| d	  kr| d
  krt dksn t|  | d  kr| d  krt dksn td S )Nrg   re   rf   rh   r   r   rj   ))rh   rf   re   rg   r   r   ))re   rh   rg   rf   )rf   rg   )rh   re   )r   Zrot90ro   r   rs   rs   rt   
test_rot90o  s
    &::r  c                   C   sB  t dtgtdggtdt ddgddggks4tt tdgtt dggtdgtdggt ddgddggksvtt tdgtt dggtdftdfgt ddgddggkstt tdgtt dggtdtdit ddgddggkstt tt ggjttd ttd idd	t td td  ggks>td S )
Nrg   rh   ri   re   r   r   r  T)Zsimultaneous)r   rN   subsro   rO   rs   rs   rs   rt   	test_subsw  s    4(($(r  c                     s  t ddddddddddd	d
ddg tt fdd tt fdd  ddgddgg}  ddgddgg|   krt ddddgd	d
ddgddddggksn t ddgddgg}  jddgddggdd|   krt ddddgddddgd
dd	dggksn t jddgddggdd}  jddgddggddd|   krt ddddgddddgdd	d
dggksn t ddddgt ddddgd	d
ddgddddggkstddlm	}  |ddddgt ddddgd	d
ddgddddggkstd S )Nrf   rh   rg   re   ri   rj   r   r   r   r   r      c                      s     ddggS )Nr   ri   )permuters   r   rs   rt   r     r   ztest_permute.<locals>.<lambda>c                      s     tdS )NrN   )r  r#   rs   r   rs   rt   r     r   r   rp   )orientationZbackward)	direction)r  r  )Permutation)
r   r]   r   
ValueErrorZpermute_rowsr  ro   Zpermute_colsZsympy.combinatoricsr  )rJ   r  rs   r   rt   test_permute  sH    $ 


$


&








r  c               	   C   s   t ddddgddddgddddgddddgg} | d}|t ddddgddddgddddgddddggksrt| d}|t ddddgddddgddddgddddggkst|  }|t ddddgddddgddddgddddggkstd S )Nrg   re   r   r   )r   Zupper_triangularro   )r   Rrs   rs   rt   test_upper_triangular  s6    

















r!  c               	   C   s   t ddddgddddgddddgddddgg} |  }|t ddddgddddgddddgddddggkspt| d}|t ddddgddddgddddgddddggkst| d}|t ddddgddddgddddgddddggkstd S )Nrg   r   re   r   )r   Zlower_triangularro   r   Lrs   rs   rt   test_lower_triangular  s6    

















r$  c                      s   t dddgtttgdt dtt gg    t dddgdt dt dt gdt ddt t ggksltt ddddgtt fdd	 d S )
Nrg   re   rf   rh   rj   c                      s     S r   rs   rs   r   r   rs   rt   r     r   ztest_add.<locals>.<lambda>r   rN   rO   rP   ro   r]   rV   rs   rs   r'  rt   test_add  s    (Dr)  c                  C   s   t ddgddgg} | dtks&t| dtks8tztd W n& tk
rX   Y n tk
rj   Y nX ztd W n& tk
r   Y n tk
r   Y nX d S )Nrg   re   rf   rh   z2 @ aza @ 2)r   
__matmul__NotImplementedro   __rmatmul__evalSyntaxErrorr  r   rs   rs   rt   test_matmul  s    r/  c                  C   s   G dd dt } tddgddgg}|  }|| t|d| gd| d| ggksVt|| t|d| gd| d| ggkstdS )zd
    Test that if explicitly specified as non-matrix, mul reverts
    to scalar multiplication.
    c                   @   s   e Zd ZdZdZdZdS )ztest_non_matmul.<locals>.fooFrk   N)__name__
__module____qualname__Z	is_MatrixZis_MatrixLikeshapers   rs   rs   rt   foo  s   r4  rg   re   rf   rh   N)r   r   ro   )r4  r   rJ   rs   rs   rt   test_non_matmul	  s
    ,r5  c                  C   s.   t ddddg} |  t ddddgks*td S )Nrg   re   r   r   r   ro   r   rs   rs   rt   test_neg  s    r7  c                  C   s0   t ddddg} | |  t ddddgks,td S )Nrg   re   r   r6  r   rs   rs   rt   test_sub  s    r8  c                  C   s:   t ddddg} | d t ddtjtdd gks6td S r   )r   r!   r   ro   r   rs   rs   rt   test_div#  s    r9  c                   C   sr   t tddddddgks tt tdddddgks>tttdtksTtttjdtdtksntd S )Nre   rg   r   r   )rq   r   r-   ro   typers   rs   rs   rt   test_eye(  s     r;  c                   C   s   t tddddddgks tt tdddddgks>ttddtdddgdddggksftttdtks|tttjdtdtkstd S )Nre   rg   rf   r   )rq   r   r3   ro   r:  rs   rs   rs   rt   	test_ones/  s
     (r<  c                   C   s   t tddddddgks tt tdddddgks>ttddtdddgdddggksftttdtks|tttjdtdtkstd S )Nre   r   rf   r   )rq   r   rG   ro   r:  rs   rs   rs   rt   
test_zeros7  s
     (r=  c                      s  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 ddddddgddddddg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st t dddddddgdddddddg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sDt t dddddddgdddddddg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st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ddddddgddddddgddddddgddddddggks|ttt fd	d
 dt dggkstdddt ddgddggkstdddt ddgddggkstddddt ddgddgddggks(tddg t ddgddggksNtt ddgt dgdggksttdddgdgdddgddgdggdd  krt ddgddgddggksn ttdt ksttdt dt ks tt dddgt dddks$tt jdddgddj	dksDtt dddggj	dksbtt jdddggddj	dkstt dddgggj	dkstt t
ddddt ddddgddddggkstt t
ddddt ddgddgddgddggkstd S )Nrg   re   rf   r   rh   ri   rj   r   c                      s    dddS )Nr   ri   rn   rs   rs   rI   rJ   rK   r)   rs   rt   r   l  r   z test_diag_make.<locals>.<lambda>r>  )rp   )rn   rp   F)unpackr   r  r  )r   r)   rN   rO   rP   ro   r]   r  r:  r3  r3   rs   rs   r?  rt   test_diag_make?  s     		&&.
$ " 

rA  c                     sB  t ddtd } | dks*tt| dks:ttddksPttddksfttd	d
ks|tt tksttddddi}t| t|ksttt|kstttfdd ttfdd ttfdd t	d	d t
 fddtd j  jD  ks>td S )Nrf   r   r   )r   rh   r   rg   rg   ri   r   )rf   r   re   re   rk   c                      s
     dS r   diagonalrs   r   rs   rt   r     r   ztest_diagonal.<locals>.<lambda>c                      s
     dS )Nr  rD  rs   r   rs   rt   r     r   c                      s
     tS r   )rE  r5   rs   r   rs   rt   r     r   c                    s   i | ]}|t  |qS rs   )rq   rE  r   r   rs   rt   
<dictcomp>  s    z!test_diagonal.<locals>.<dictcomp>)r   r   rE  ro   tupler:  r"   r]   r  r3   r&   rn   rp   )rL   srs   )r   r   rt   test_diagonal  s(    
rI  c                   C   s  t ddt jddd  krt jddd  krt jdddd  krt jdddd  krt ddd	gd	ddgd	d	dggksn tt jddd
dt dd	d	gddd	gd	ddggkstttdd  ttdd  ttdd  ttdd  t jdddt jdddkstd S )Nrf   re   
eigenvalue)sizerK  upper)Zband)rL  eigenvalrK  rg   r   lowerc                   S   s
   t dS Nre   r   jordan_blockrs   rs   rs   rt   r     r   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @re   rQ  rs   rs   rs   rt   r     r   c                   S   s   t jddS )Nre   rJ  rQ  rs   rs   rs   rt   r     r   c                   S   s   t jdddS )Nre   rh   )rK  rN  rQ  rs   rs   rs   rt   r     s    )rL  rN  )r   rR  ro   r]   r  rs   rs   rs   rt   test_jordan_block  s>      
rS  c                     s6  t ddgddgg} | t dgdggt dgdgggks@t| jt dgdggddt dtd d gtdd gggkst| 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st| t dgdggt dgdggt dgdgggkst| t dgdggg ks4tt dddgdd
dgdddg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stt dddgt dddgt dddgg tt fdd t dddgt ddd
gt dddgg tt fdd d S )Nrg   re   rf   rh   T	normalizeri   r   rj   r   r   r   r   r   r         c                      s   t j ddiS NZ	rankcheckTr   orthogonalizers   vecsrs   rt   r     r   z$test_orthogonalize.<locals>.<lambda>r   c                      s   t j ddiS rY  rZ  rs   r\  rs   rt   r     r   )r   r[  ro   r@   r   r]   r  r'  rs   r\  rt   test_orthogonalize  s*    ,$"*"
  .*
((r^  c                  C   sr  t d\} }| t dddgdddgdddggks6t|t dddgdddgdddggks^tt d\} }| t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggkst|t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggksntd S )Nrg   r   r   rf   r  r   re   )r   Z	wilkinsonro   )ZwminusZwplusrs   rs   rt   test_wilkinson  s<    
r_  c                  C   s   t d\} }tddd|  |g}|| dtddtdd|gksFttddt| |  f|ddfdd| d d ff}|| dtd|ddfd	fkstd S )
Nx yre   rg   ri   rh   r   r   )rg   rh   rg   )r   ri   rg   )rB   r   limitr   ro   r?   )rN   rO   r   r   rs   rs   rt   
test_limit  s
    &0rb  c                      sV   t dddgdddgddd	gg dddgtt fd
d tt fdd d S )Nrg   re   rf   rh   ri   rj   r   r   r   c                      s     S r   rs   rs   r   vrs   rt   r     r   z"test_issue_13774.<locals>.<lambda>c                      s     S r   rs   rs   rc  rs   rt   r     r   )r   r]   r  rs   rs   rc  rt   test_issue_13774   s     
re  c                     s   t d t dttdd  tt fdd tt fdd tt fdd td\} }}ttd	| g t|  gkstttd	|| g td
|  gd	| ggkstttd	||| g td
d
|  gd	d
| gd
d	| ggkstd S )NrN   rO   c                   S   s
   t dS Nrg   )r   	companionrs   rs   rs   rt   r   
  r   z test_companion.<locals>.<lambda>c                      s   t tdg S rf  r   rg  r   rs   rr   rs   rt   r     r   c                      s   t tddg S )Nre   rg   rh  rs   rr   rs   rt   r     r   c                      s   t t   gS r   rh  rs   rN   rO   rs   rt   r     r   zc0:3rg   r   )r#   r]   r  rB   r   rg  r   ro   )Zc0c1c2rs   ri  rt   test_companion  s    $$rl  c               	   C   s   t d\} }}t| ||g}|t| ||gdddg}|tdgdgdggksTtt| | | | | g| | | | | g| | | | | gg}|t| gdg}|tdddddgdddddgdddddggkstd S )Nzx, y zrg   re   rf   )rB   r   r  zipro   )rN   rO   rP   r   r   rs   rs   rt   test_issue_10589  s    ,rn  c                  C   sn   G dd dt } tddddddg}| ddddddg}|| }t|| sNt|tddgd	d
ggksjtd S )Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{Gz?N)r0  r1  r2  r   Z_op_priorityrs   rs   rs   rt   Foo#  s   ro  re   rg   rf   rh   r   r         )r   r   
isinstancero   )ro  rI   rJ   rK   rs   rs   rt   test_rmul_pr19860"  s    rs  c                      sT   t ddgddgg tddgddggtt fdd tt fdd d S )Nrg   re   rf   rh   c                      s     S r   rs   rs   r   r   rs   rt   r   4  r   z"test_issue_18956.<locals>.<lambda>c                      s     S r   rs   rs   rt  rs   rt   r   5  r   )r   r   r]   r  rs   rs   rt  rt   test_issue_189561  s    ru  c                  C   sP   G dd dt } tddddg}||  ks.tG dd d| }|| ksLtd S )Nc                   @   s   e Zd Zdd Zdd ZdS )ztest__eq__.<locals>.Myc                 s   s   dV  dV  d S r   rs   selfrs   rs   rt   __iter__:  s    ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S r   )rq   )rw  r   rs   rs   rt   __getitem__>  s    z"test__eq__.<locals>.My.__getitem__N)r0  r1  r2  rx  ry  rs   rs   rs   rt   My9  s   rz  re   rg   c                   @   s   e Zd Zdd ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | S r   r   rv  rs   rs   rt   _sympy_C  s    z$test__eq__.<locals>.My_sympy._sympy_N)r0  r1  r2  r|  rs   rs   rs   rt   My_sympyB  s   r}  )objectr   ro   )rz  rI   r}  rs   rs   rt   
test__eq__8  s
    r  c                  C   s   t tD ]\} }|dd}|jdkr:tdd |jD s>t|jdkrVt|jtksZt|j	dkrrt|j	tksvt| d st|
 tttfkstqt| tkstqd S )Nrf   re   )rf   re   c                 s   s   | ]}t |tkV  qd S r   )r:  r  r   rs   rs   rt   r   L  s     ztest_args.<locals>.<genexpr>)	enumerateall_classesrG   r3  r   ro   rn   r:  r  rp   r   rq   rG  r$   r|   r   )r   r   r   rs   rs   rt   	test_argsH  s    "r  c               
   C   s   t tfD ]8} | dd}t  |j}W 5 Q R X || kstqttfD ]8} | dd}t  |j	}W 5 Q R X ||
 ksJtqJd S Nrf   re   )r   r   rG   ra   Z_matr   ro   r"   r   Z_smatr|   )r   r   matZsmatrs   rs   rt   test_deprecated_mat_smatU  s    r  c                  C   s8   t ddttg} | t t ddtt tt gks4td S r   )r   rN   rO   rP   ro   )rd  rs   rs   rt   test_divisionb  s    r  c                      s   t dddgtttgdt dtt gg    t dddgdt dt dt gdt ddt t ggksltt ddddgtt fdd	 d S )
Nrg   re   rf   r%  rh   rj   r&  c                      s     S r   rs   rs   r'  rs   rt   r   k  r   ztest_sum.<locals>.<lambda>r(  rs   rs   r'  rt   test_sumg  s    (Dr  c                  C   st   t ddgttgg} t| t ddgttttggks<tt dddtg} t dddttg}t| |ksptd S )Nrg   r   re   r  rf   )r   rN   rO   absr   ro   r'  rs   rs   rt   test_absn  s
    (r  c                  C   sH   t d} t d}| | | |  kr>t ddgddggksDn td S )N)rg   re   r  r  )rf   r   re   rh   rj   rg   )r   addro   rI   rJ   rs   rs   rt   test_additionv  s    r  c               
   C   sz  t tfD ]} | ddtd}||d d d d f ks:t|dd d f t dddddgks`t|d d df t dddgkst|ddgd d f t dddgdddggkst|ddgdf |ddgdgf kst|dddgf |dgddgf kst|d d ddgf t ddgddgd	dggks2t|d
 dksDt|ddd d f t dddgdddggksvt|d d ddf t ddgddgd	dggkst|d d ddf |ddgdf kst|dd d df |dddgf kst| ddtd}|dddddgd d f t dddgd	ddgdddgd	ddgdddggksZt|d d dddddgf t dddddgdddddgd	ddddggkstqtd}d|d< d|d< d|d< |ddgdgt dgdggkst|ddgdddgt dddgdddggks$t|ddddgddddgt ddddgddddgddddgddddggksvtd S )Nrf   r   rg   rh   ri   r   r   re   rj   ry   r   r  rz   re   r   )r   r"   r   ro   rG   r   )r   rI   rs   rs   rt   test_fancy_index_matrix  sZ    &"0&&424((




r  c                     s4  t d t dtt fdd tt fdd   } | d dksNt| d d	ks^t| d
 dksnt| d dks~t| d dkst| d dkst  } | d dkst| d d	kst| d
 dkst| d dkst| d dkst| d dkstt | }| | ks&t|d dks8t|d dksJt|d
 dks\t|d dksnt|d dkst|d dksttt fdd td } t| t st| d t	kst| d d	t	 kst| d
 dt	 ks t| d dkstt	 }| |ks(td } t| t s@t| d dksRt| d dksdt| d
 dksvt| d dkstt t
dgdt
gg}|d	 |kstt t
t
gddgg}|d	 t ttgttggkstt tdd}tdd	 }t |||g}||t |g|g|ggks0td S )N)r  r  r   rj   r  c                      s     S r   rs   rs   r  rs   rt   r     r   z%test_multiplication.<locals>.<lambda>c                      s    i  S r   rs   rs   r   rs   rt   r     r   ry   r   rz   re   r{   rj   rk   r     r  r   rh   c                      s
   t  S r   )r1   rs   r  rs   rt   r     r   rN   rf   ri   r   rp  rg   )r   r]   rV   r  ro   r1   Zmultiply_elementwiser#   rr  rN   r4   r2   r3   r   )rK   hrk  r   r   _hr   rs   r  rt   test_multiplication  sj    
"
r  c                
      sv	  t tdd  tddgddgg  d tddgd	d
ggksBttdddgdddgdddgg  d tdddgdddgdddggkst d tdkst d  ksttdggd d dd ksttddgddggtd tddgddggksttddgddgg  jddd  jdd!d ks>t td td"dgd#d$ggksdttdd% tdks~ttd$d#gd&d'gg  tj d d  ddddgksttddgd(dgg  tj d  ksttddgddggtj tddgtjdggksttddgddggd) tddgd)dggksJtdd*l	m
 tdtgddgg tdt gddggksttttgdtgg tt ttd    gdt ggksttt td   t d  t   dtd   gdt td   gddt ggsDtttddgdtdgddtgg tt td   dgdt dgddt ggksttddgddgg  td dksttdgg  d td+gg  kr$ td  kr$ dks*n ttddddd,gdd,d,ddgdddddgdddddgdddddggt tfd-d t td.d  tdddgdddgdddgg  d/ tdddgdddgdddggkstt t fd0d t t fd1d td2dgddgg  d/ td3d4gd5d6ggks6ttdddgdddgdddgg  d/ tdddgdddgdddggksttdddgdddgdddgg  d/ tdddgdddgdddggksttd7d8d9t  tsttd7d8d8d:t t fd;d td7d8d8d<  ttdtdtd td d gdtddtd gdddggkst d  tdddgdddgdddggkstt t fd=d tdddgdddgdddgg  d> td?d@dAgdBdCdDgdEdFdGggkst d>  d ks*ttdddgd(ddgdddgg td7  d  d ksxtt tfdHd   d  ksttdddgdddgdddgg td7d8d8dI   ksttd7d8d8d<  td d d kst  dtdks8t  dtdksVttdddgdddgdddgg  dJ tdKdKdKkst t tdt dt dt ksttdddgdddgdddgg t t fdLd t t fdMd ttjtjgtjtjgg  tj  k	s*ttddgddgg  tj ttjtjgdtj dtj ggk	srtd S )NNc                   S   s   t dd S Nr  re   r{  rs   rs   rs   rt   r     r   ztest_power.<locals>.<lambda>re   rf   rh   ri   i  i  i,*  i7  rg   rj   r  i"  i     i  i  ip  i  i  i  r   d   ry   r   r   rp  rq     Zcayleymethodmultiplyr      !   i 0   9   r   g      ?r   i   r  c                      s     tdS Nr   )_matrix_pow_by_jordan_blocksr!   rs   r   rs   rt   r   %  r   c                   S   s   t ddgddggtdS )Nrg   rf   )r   r  r!   rs   rs   rs   rt   r   (  r         $@c                      s    d S N @rs   rs   r   rs   rt   r   +  r   c                      s    t dd S r  r   rs   r   rs   rt   r   ,  r   r   ihiO<iv0ir   T)integer)r  negativec                      s     S r   rs   rs   )r   r   rs   rt   r   6  r   )r  Znonnegativec                      s    t dd S r  r  rs   r   rs   rt   r   =  r   g      @   H   Y   i#        i<  i  iI  c                      s     d S )Nr   )r  r   rs   )Anr   rs   rt   r   E  r   )r  positiver  gd%%@c                      s    d S r  rs   rs   r   rs   rt   r   T  r   c                      s    t  S r   r   rs   r   rs   rt   r   U  r   )r]   rU   r   ro   r-   r   powr!   r   	sympy.abcr   rI   rJ   r  Z_eval_pow_by_recursionrT   r  r#   rr  r   r   r  r   r)   rG   r   rs   rs   )r   r  r   r   rt   
test_power  s      , 6"&$626J<$0D ." . .*2 .  & & r  c               	   C   s   t dt dt gdt dt gg} td~ |   t tdt td d tdt  td d gtdt  td d tdt td d ggkstW 5 Q R X d S )Nrg   Tre   )r   rN   rZ   r+   r,   ro   r   rs   rs   rt   $test_issue_17247_expression_blowup_1\  s    $
00r  c               	   C   s\   t dt dt gdt dt gg} td& |  \}}|| |  sNtW 5 Q R X d S Nrg   T)r   rN   rZ   jordan_forminvro   r   PJrs   rs   rt   $test_issue_17247_expression_blowup_2d  s    $
r  c               	   C   s   t dt dt gdt dt gg} tdV | d t dtd  d ddtd   gddtd   dtd  d ggks~tW 5 Q R X d S )Nrg   Tr  l                )r   rN   rZ   ro   r   rs   rs   rt   $test_issue_17247_expression_blowup_3k  s    $
r  c               	   C   s<   t td} td | d t tdks.tW 5 Q R X d S )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!   rZ   ro   r   rs   rs   rt   $test_issue_17247_expression_blowup_4s  s    
r  c               	   C   sl   t dddd } tdJ | dttd ddt  td   dt td	   td
dks^tW 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S Nrg   r   r  r   rs   rs   rt   r     r   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>TrN   ri   $   rh   ZEXdomain)r   rZ   charpolyr   rN   r   ro   r   rs   rs   rt   $test_issue_17247_expression_blowup_5  s    
r  c               	   C   sD   t dddd tdD } td | ddks6tW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rs   rr   r   rs   rs   rt   r     s     z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>@   TZbareissr   r   r   rZ   detro   r   rs   rs   rt   $test_issue_17247_expression_blowup_6  s    
r  c               	   C   s:   t dddd } td | ddks,tW 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r  r  r   rs   rs   rt   r     r   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>T	berkowitzr   )r   rZ   r  ro   r   rs   rs   rt   $test_issue_17247_expression_blowup_7  s    
r  c               	   C   sD   t dddd tdD } td | ddks6tW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rs   rr   r   rs   rs   rt   r     s     z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>r  TZlur   r  r   rs   rs   rt   $test_issue_17247_expression_blowup_8  s    
r  c                  C   s   t dddd tdD } td |  t dddd	d
dddgddddddddgddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggdfkstW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rs   rr   r   rs   rs   rt   r     s     z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>r  Trg   r   r   r   r  r   r   r  re   rf   rh   ri   rj   r   rz   )r   r   rZ   rrefro   r   rs   rs   rt   $test_issue_17247_expression_blowup_9  s    
r  c               	   C   s<   t dddd } td | dddks.tW 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r  r  r   rs   rs   rt   r     r   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>Tr   )r   rZ   Zcofactorro   r   rs   rs   rt   %test_issue_17247_expression_blowup_10  s    
r  c               	   C   sF   t dddd } td$ |  t dddgd ks8tW 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r  r  r   rs   rs   rt   r     r   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>Tr   r  )r   rZ   Zcofactor_matrixro   r   rs   rs   rt   %test_issue_17247_expression_blowup_11  s    
r  c               	   C   sH   t dddd } td& |  dddt dddiks:tW 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r  r  r   rs   rs   rt   r     r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Trg   r   rh   )r   rZ   Z	eigenvalsr   ro   r   rs   rs   rt   %test_issue_17247_expression_blowup_12  s    
r  c               	   C   s  t ddt td dt gdt td dtd gddt td dt gdddt dgg} |  }|d ddt ddddggfkst|d d ttdtd   d kst|d d dkst|d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggkst|d d ttdtd   d kst|d d dkst|d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggkstd S )	Nr   rg   re   r   FT)deepZnumerr   )r   rN   Z
eigenvectsro   r@   r,   )r   Zevrs   rs   rt   %test_issue_17247_expression_blowup_13  s0    $("P"*"P"r  c                  C   s"  t dddt dt gd dt dt gd  d } td |  t td dt td dt td dt td dt gddt ddt ddt ddt gddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggkstW 5 Q R X d S Nr   rg   rh   Tr   )r   rN   rZ   Zechelon_formro   r   rs   rs   rt   %test_issue_17247_expression_blowup_14  s    4
2"r  c                  C   s   t dddt dt gd dt dt gd  d } tdv |  t td dt td dt td dt td dt ggt ddt ddt ddt ddt gggkstW 5 Q R X d S r  )r   rN   rZ   Zrowspacero   r   rs   rs   rt   %test_issue_17247_expression_blowup_15  s    4
r  c                  C   s   t dddt dt gd dt dt gd  d } td |  t td gdt gtd gdt gtd gdt gtd gdt ggt dt gtd gdt gtd gdt gtd gdt gtd gggkstW 5 Q R X d S )Nr   rg   rh   T)r   rN   rZ   Zcolumnspacero   r   rs   rs   rt   %test_issue_17247_expression_blowup_16  s    4
r  c                  C   s(  t dddd tdD } td |  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tW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rs   rr   r   rs   rs   rt   r     s     z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>r  Trg   r   r   re   r  rf   r   rh   r   ri   r  rj   r  )r   r   rZ   Z	nullspacero   r   rs   rs   rt   %test_issue_17247_expression_blowup_17  s    
&&&&&&r  c               	   C   sX   t dddt dt gd dt dt gd  d } td |  rJtW 5 Q R X d S )Nrj   rg   rf   T)r   rN   rZ   is_nilpotentro   r   rs   rs   rt   %test_issue_17247_expression_blowup_18  s    4
r  c               	   C   s0   t td} td |  r"tW 5 Q R X d S )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!   rZ   is_diagonalizablero   r   rs   rs   rt   %test_issue_17247_expression_blowup_19   s    
r  c                  C   s   t td dt ddgdt td dtd gddt td dgdddtd gg} td |  t dddtd td  gddddgddddgddddggt ddddgddt ddgddtd dgdddtd ggfkstW 5 Q R X d S )Nrg   r   Tr   re   )r   rN   rZ   diagonalizero   r   rs   rs   rt   %test_issue_17247_expression_blowup_20*  s(    




r  c               	   C   s@   t td} td" | jddt tdks2tW 5 Q R X d S )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GEr  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!   rZ   r  ro   r   rs   rs   rt   %test_issue_17247_expression_blowup_21=  s    
r  c               	   C   s@   t td} td" | jddt tdks2tW 5 Q R X d S )Nr  TLUr  r  r  r   rs   rs   rt   %test_issue_17247_expression_blowup_22K  s    
r  c               	   C   sD   t td} td& | jdd t tdks6tW 5 Q R X d S )Nr  TADJr  r  )r   r!   rZ   r  r,   ro   r   rs   rs   rt   %test_issue_17247_expression_blowup_23Y  s    
r  c               	   C   s@   t td} td" | jddttdks2tW 5 Q R X d S )Nr  TCHr  r  r"   r!   rZ   r  r   ro   r   rs   rs   rt   %test_issue_17247_expression_blowup_24g  s    
r  c               	   C   s@   t td} td" | jddttdks2tW 5 Q R X d S )Nr  TLDLr  r  r  r   rs   rs   rt   %test_issue_17247_expression_blowup_25u  s    
r  c               	   C   s4   t td} td |  dks&tW 5 Q R X d S )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]]Trh   r   r!   rZ   rankro   r   rs   rs   rt   %test_issue_17247_expression_blowup_26  s    	
r  c               	   C   s   t ddt td dt gdt td dtd gddt td dt gdddt dgg} tdB |  \}}| t td kst|t tdkstW 5 Q R X d S )Nr   rg   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   rN   rZ   r  r,   r!   ro   r  rs   rs   rt   %test_issue_17247_expression_blowup_27  s    
r  c               	   C   s8   t td} td |  tdks*tW 5 Q R X d S )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!   rZ   Zsingular_valuesro   r   rs   rs   rt   %test_issue_17247_expression_blowup_28  s    
r  c               	   C   s4   t td} td |  dks&tW 5 Q R X d S )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   rs   rs   rt   test_issue_16823  s    
r  c                  C   s  t dddddddddg	dtd dtd dtd td d dddddg	ddtd  ddtd  ddtd  ddtd  dddddg	dtd d dd	td  dd	td  dd	td  ddd
dd	g	d
dtd  dtd d
 dtd d
 d
dtd  d
dd
ddg	dd	td  dd	td  dtd d dd	td  d
dddd	g	ddtd  ddtd  ddtd  ddtd  dddddg	dtd td d dtd dtd dddddg	g} td |  t ddddddddtdd g	ddddddddtd d g	ddddddddtdd g	ddddddddtd d g	dddddddddg	ddddddddtd d g	dddddddddg	ddddddddtd d g	gdfkstW 5 Q R X d S )Nrg   r   re   r   r   r  r   r  rf   r   rh   rV  r  T)r   rg   re   rf   rh   ri   rj   r   )r   r@   rZ   r  r!   ro   r   rs   rs   rt   test_issue_18531  s.    6DDDDD6

r  c            
      C   s  t tdd  t tdd  t tdd  t t dtdd< W 5 Q R X t tg   krltddg ksrn ttg gtd	dg ksttg g gtd
dg kstt * td	gdgg d	gdggkstW 5 Q R X t 0 td	gdggj d	ggdggkstW 5 Q R X tdgg} t  tj	| d< W 5 Q R X tt
dgddgg}|}|j|jkslt|jd
ks|t|d d  t
dddgksttd
d
t
dddg}|}|j|jkst|jd
kst|d d  t
dddgkst||ks tt||ksttd
dtd	d}td	dtdd}t||g}|jdksRt|jdksbt|d d  d	d
dddddddg	kstttd
td
ksttttd
ttd
kstt|| ksttt|t| kst|t|k	sttdd
tddd
 gtd
dd td
d
d gg}t|} | td	d	d
d
d
gd	d	d
d
d
gd	d	d
d
d
gdddddgdddddggkst|  |kstt|dd |ksttdd
d
}td
|g}t|td	d	gd	d	g|d |d g|d |d ggkstt * t|dd dd |D ksDtW 5 Q R X ttd
tdgttd
gksvtt tdd  t tdd  td	d
gddgg} t| dg}	|	td	d
gddgddggkstd S )Nc                   S   s   t ddtdS )Nri   r  )r   r   rs   rs   rs   rt   r     r   ztest_creation.<locals>.<lambda>c                   S   s   t ddg S )Nri   r   r{  rs   rs   rs   rt   r     r   c                   S   s   t dd S r  r{  rs   rs   rs   rt   r     r   ri   r  rf   r   rg   re   rC  ry   r   r   rh   rj   r   r   Fr   r   rz   r{   rk   c                 S   s   g | ]
}|gqS rs   rs   r   rs   rs   rt   r   #  s     z!test_creation.<locals>.<listcomp>c                   S   s   t tdtddgS )Nre   r   rf   r   r3   rs   rs   rs   rt   r   '  r   c                   S   s   t tdtddgS )Nre   rf   r   r  rs   rs   rs   rt   r   (  r   )ri   rj   )r]   r  r   r   ro   ra   r   r   r!   ZEmptySetrN   rp   rn   r   r-   r   as_immutableZ
as_mutabler3   r   )
r   rI   r   rJ   Zc23Zc13rK   datr   r   rs   rs   rt   test_creation  s    
(.4("4.(r  c                   C   s   t dtddtddd tddd tddd tddd tddd tddd t ddddddgddddddgddddddgddddddggkstd S )Nrf   re   rg   rh   ri   rj   r   )r   Z	irregularr3   ro   rs   rs   rs   rt   test_irregular_block0  s    &   r  c                  C   s*  t d} | d dd df t dks(t| ddddf tdksHttdddd }|dd d f tdddksxt|dddf tddd	ksttddddgdd
ddgddddgddddgg}|d d df tddddddgkst|dd d d f tddddgddddggks&td S )Nrh   rf   re   r   c                 S   s   | | S r   rs   r   rs   rs   rt   r   >  r   ztest_slicing.<locals>.<lambda>rg   r   r   ri   rj   r   r   r   r   r   r        rp  r   r   )r-   ro   rG   r   )m0r}   r~   rs   rs   rt   test_slicing9  s        0(r  c                  C   s   t d} td| ddddf< | tdks0ttd| d dd df< | tdksXttddd| d d df< | tdkstt d| d d d d f< | t dkstddd	d
g| d d d d f< | tdkstddg| d ddf< | tdkstd S )Nrh   re   )r   r   r   r   r  )r   r   rg   r   )r   r   r   rg   rg   rg   re   rf   rh   r   ))rg   r   r   r   )re   rg   r   r   )rf   r   rg   r   )rh   r   r   rg   ri   rj   r   r   r   r   r   r  r  r  rp     r  r  r   r  ))r   re   rf   rh   )r   rj   r   r   r   r  )rG   r-   r   ro   r   rs   rs   rt   test_submatrix_assignmentG  s    r  c                  C   sh   t d} | ddtdddks$ttdddd }|ddtdksLt|d	d
tdksdtd S )Nrf   rg   r   )	rg   r   r   r   rg   r   r   r   rg   rh   c                 S   s   | | S r   rs   r   rs   rs   rt   r   f  r   ztest_reshape.<locals>.<lambda>)r   )rf   rg   re   )rf   rh   re   )rf   rh   ri   re   rj   ))r   rg   re   rf   rg   re   )rf   rh   re   rf   rh   ri   )r-   reshaper   ro   r  r}   rs   rs   rt   test_reshapec  s     r  c                  C   sD   t d} | dd t dd ks&t| dd tdks@td S )Nrf   c                 S   s   d|  S rP  rs   rr   rs   rs   rt   r   n  r   z test_applyfunc.<locals>.<lambda>re   c                 S   s   dS Nr   rs   rr   rs   rs   rt   r   o  r   )r-   	applyfuncro   rG   )r  rs   rs   rt   test_applyfuncl  s    r
  c                  C   s,  t ttt  dgtt t t ttttt    gg} |  }|t tt td  dgttd  ttd   tt ttd   td  ggksttddd}t tt| gjddt t|tt	|  gkstt dddgddd	gdddgg t ddt
ddgddd	gdddggks(td S )
Nre   rf   rI   Tr   )complexr   rg   r   )r   rN   rO   r,   ro   r#   r+   r   r(   r?   r   )r  r}   rI   rs   rs   rt   test_expandr  s    8F
$r  c                  C   sB  t ttd ttd gttd ttd  ttd ttd  gg} | tttt@ }|t td ttgtd tt td tt ggkst| t	tt	t@ }|t td tgttd  td t ggkst| t
tt
t@ }|t td t gt td  td  t ggks>td S rP  )r   r   rN   r@   rO   Zrefiner   r   ro   r  r  r  rs   rs   rt   test_refine  s    .<0r  c                  C   s6  t dd} t dddd} | t ddddks.tt dddd} t dddd} | t ddddks`t|  }|  || ks|ttd}| t dd|dkstd	D ],}d
D ]"}t |d||d} | | jkstqqt dddd} d}t| jd D ]4}t| jd D ] }| ||f dkr |d7 }q q|dks2td S )Nrf   )seedrh   r      T)r  	symmetric)r  prng)r   r   )r  F      )r  percentr  r   rg   r  )minr  r  )	r6   ro   r  r>   randomRandomr   r   r3  )r   r!   rngrL  r  Z
zero_countr   r   rs   rs   rt   test_random  s,    

r  c               2      s
  t d} |  t dkst| jddt dks4t| jddt dksLt| jddt dksdt| jddt dks|t| jddt dksttdd	d
gd	ddgdd	dgg} |  }| | t d	kst| jdd|kst| jdd|kst| jdd|kst| jdd|ks$t| jdd|ks:ttdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgg}|jdd| t |jd ksztt  dddgdddgdddggt fddd D stt  dddgdddgdddggt fddd D std S )Nrh   r  r  r  r  r  ZQRre   rf   ri   rj   r   r   rg   ZBLOCKr  1      r   G   ^   ;      A   c                 3   s    | ]}t | kV  qd S r   r:  r  r   rH  r   r   rs   rt   r     s     ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   s    | ]}t | kV  qd S r   r!  r"  r#  rs   rt   r     s     )	r-   r  ro   r   r3  r   r   r  r   )r   ZAinvZAArs   r#  rt   test_inverse  sr    
6444444444444444444444444$
"
r$  c                  C   s  t d\} }}}}t d}tdddddd|  | d| |  d|  d|   d|  | d|  d|   gdddddd|  | d| |  d|  | d|d    dgdd|  | d| |  d|  d|   d|  | d|  d|   ddddgdd|  | d| |  d|  | d|d    dddddgdddd|  | d| |  d|  d|   d|  | d|  d|   ddgdddd|  | d| |  d|  | d|d    dddgdd|  | | d| |  d| |   dd|  | | d| |  d| |   dd|  | | d| |  d| |   dgg}| }|| td ttdksbttd	d
 |	t
D dk std S )Nz)Tau Tau_syn_in Tau_syn_ex C_m Tau_syn_gap__hr         ?       @      re   r   c                 s   s   | ]}t |V  qd S r   r  r   frs   rs   rt   r     s     z:test_inverse_symbolic_float_issue_26821.<locals>.<genexpr>     @@)rB   r   r  r-   r	  rH   rG   ro   maxatomsr
   )TauZ
Tau_syn_inZ
Tau_syn_exZC_mZTau_syn_gapr%  r   ZMirs   rs   rt   'test_inverse_symbolic_float_issue_26821  s    L<L<L<|
$r0  c                  C   s  t d\} }}}}t d}tdddddddgd|d  d| dddddgdddddddgddd|d  d| dddgdddddddgddddd|d  d| dgd| dd| dd| dd|  gg}||  }||||  ttd	ksttd
d |	t
D dk std S )Nz-Tau, Tau_syn_in, Tau_syn_ex, C_m, Tau_syn_gapr%  r   r&  r   re   r   rg   r   c                 s   s   | ]}t |V  qd S r   r)  r*  rs   rs   rt   r     s     z6test_matrix_exponential_issue_26821.<locals>.<genexpr>r,  )rB   r   r+   r*   r	  rH   rG   ro   r-  r.  r
   )rI   rJ   rK   rL   r   rM   r   ZMers   rs   rt   #test_matrix_exponential_issue_26821  s     
$r1  c                  C   sB  t ddtd t dtd  tt  g} ttg}| |t dt t td gtdt t ggksftt ddttd td  g} | |t ddgdt td  td d td  ggksttd t }ttg}t||t dt dt gdt dggksttd td  }t||t dtd  dt td  gdt td  dtd  t ggksdttttd   }td dtd   }t ddt gdt dt gg}|t|t ttgkst|t|t ttgjkstt|ttf|gt ddtd  dt gdtd  dt dt gdt dt dggks>td S )Nrg   re   rh   rf   r   rj   )r   rN   rO   jacobianro   r.   rP   r   )r#  Zsymsr+  gansrs   rs   rt   test_jacobian_hessian  s0    (6>0>
r5  c                  C   s8  t ttttgtttd ttd  ks2tt tttdt gttdt ks\tt tttgtttttt  kstt dttd gtdkstdtt tt t dtt tt td   dtt tt t  tttt td   tttt td   } t tttttd gt | ksHtt tttttd gtdd | ksvttd  ttd  td ttd   dt ttd   dt ttd   }t tttttd gt |kstt tttttd gtdd |ks tt g tdks4td S )Nre   rf   rg   r  rj   r  r  )rF   r(   rN   r?   ro   r+   r,   )Zw1Zw2rs   rs   rt   test_wronskian4  s&    2**J*"
R*"
r6  c                  C   s   t dtgtdggtdit ddgddggks6tt tdgtt dggtdtdit ddgddggkstttD ]0} t ddgddgg| dddiksxtqxd S )	Nrg   rh   ri   re   r   r   r  r   )r   rN   xreplacero   rO   r  r-   r   rs   rs   rt   test_xreplaceE  s    $r8  c               
   C   s  t d} td}tdt dt  ttt  t g|tt|t  |t dd|  t| t |    t gg}|  |ttt tt  dt gdt dddtt|    t|    ggkstdt d }t|gg}|  |t|ggkst|jt	d |t|jt	dggks"tt d} td}t
dt dt  ttt  t g|tt|t  |t dd|  t| t |    t gg}| ttt tt  dt gdt dddtt|    t|    ggkstdt d }t
|gg}| t|ggkst|jt	dt|jt	dggks<ttt
ttd ttd  ggt
dggksrttddgddgg}d|   tdd	kstd S )
Nr   r+  rg   re   )ratior  rf   rh   "   )r#   r   r   rN   rO   r(   r5   r>   ro   r4   r   r?   tracer   )r   r+  r   eqr   rs   rs   rt   test_simplifyN  sD     :&:&&"

r=  c                  C   s   t ddddddddd	d
g
ddddddddd	d
g
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st| jj| kst| j|  kstd S )Nrg   re   rf   rh   ri   rj   r   r   r   r   )r   r   ro   Z	transposer   rs   rs   rt   test_transposev  s     
r>  c               	   C   s   t tdd  tdtttgddttgdddtgddddgg} | jtddddgt dddgt t ddgt t tdggkstd S )Nc                   S   s
   t djS r   )r-   r   rs   rs   rs   rt   r     r   z!test_conj_dirac.<locals>.<lambda>rg   r   r   )r]   AttributeErrorr   r   r   ro   r   rs   rs   rt   test_conj_dirac  s    


r@  c                  C   s4   t dddgdddgdddgg} |  dks0td S )Nrg   r   ri   r   r  )r   r;  ro   r   rs   rs   rt   
test_trace  s
    
rA  c                  C   sH   t ddddg} | jdkstt tddgdtdgg}|jdksDtd S )Nrg   re   r   r  r   )r   r3  ro   rN   rO   )r   r   rs   rs   rt   
test_shape  s    
rB  c                  C   st  t tddgdtdgg} | ddd  | t tddgdtd dggksLt| ddd  | t td ddgdt td dggkst| dt td ddggkst| d}d|d< | d	 td kst| dd d
f }d|d< | d	 td kst| d}|t td dt gks$td|d< | d	 td ksBt| d d df }d|d< | d	 td ksptd S )Nr   rg   c                 S   s   | | d S rf  rs   )rr   rs   rs   rt   r     r   z!test_col_row_op.<locals>.<lambda>re   rf   c                 S   s   | t |  S r   )rO   )rK   r   rs   rs   rt   r     r   *   ry   r   )r   rN   rO   Zrow_opro   Zcol_opr   r   )r   r1rj  rs   rs   rt   test_col_row_op  s2    
"

rF  c                  C   sX   t dddgdddgg} | dd | d dks4t| d	 dksDt| d
 dksTtd S )Nrg   re   rf   rh   ri   rj   r{   r  ry   r  r  )r   Zrow_multro   r   rs   rs   rt   test_row_mult  s    
rG  c                  C   sb   t dddgdddgdddgg} | ddd | d dks>t| d	 dksNt| d
 dks^td S )Nrg   re   rf   rh   ri   rj   r   ry   r{   r   re   r   )r   Zrow_addro   r   rs   rs   rt   test_row_add  s    
rI  c                  C   s   t D ]} | d}|dddd  || dddgdddgdddggksLt| dd }d|d< |ddd	d  | || dddgd
ddgdddggkstqd S )Nrf   rg   r   c                 S   s   | d|  S rP  rs   rd  urs   rs   rt   r     r   z!test_zip_row_op.<locals>.<lambda>re   r   rz   c                 S   s   | d|  S rP  rs   rJ  rs   rs   rt   r     r   rh   )mutable_classesr-   Z
zip_row_opro   )r   r   rs   rs   rt   test_zip_row_op  s    
 rM  c                  C   sj   t dddg} t dddg}t dddg}| dks6t| dksBt| dksNt| |ksZt| |ksftd S )Nrg   re   rf   rs   )rg   r6  )r   rI   rJ   rs   rs   rt   test_issue_3950  s    rN  c                  C   s  G dd d} G dd d}|  }| }t dddg}|| dksFtd||< |d dks^tt dddgd	dd
gg}|||f d
kst|d|f d
kst||df d
kstd	|||f< |d d	kstd
|d|f< |d d
kstd||df< |d dkstd S )Nc                   @   s   e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index1c                 S   s   dS rf  rs   rv  rs   rs   rt   	__index__  s    z)test_issue_3981.<locals>.Index1.__index__Nr0  r1  r2  rO  rs   rs   rs   rt   Index1  s   rQ  c                   @   s   e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index2c                 S   s   dS rP  rs   rv  rs   rs   rt   rO    s    z)test_issue_3981.<locals>.Index2.__index__NrP  rs   rs   rs   rt   Index2  s   rR  rg   re   rf   ri   rh   rj   r  r   r6  )rQ  rR  Zindex1index2r   rs   rs   rt   test_issue_3981  s$    rT  c                  C   s\   t dddgg} | jdkstt dgdgdgg} | jdks@ttdd} | jdksXtd S )Nrg   re   rf   TFrh   )r   Zis_upperro   rG   r   rs   rs   rt   test_is_upper  s    
rU  c                  C   sD   t dddgg} | jdkstt dgdgdgg} | jdks@td S )Nrg   re   rf   FT)r   is_lowerro   r   rs   rs   rt   test_is_lower  s    rW  c                  C   sp   t ddddddddddddddddddg} |  s8tt ddgddgg} |  rXtt g } |  sltd S )Nrh   r   re   rg   rj   rf   )r   r  ro   r   rs   rs   rt   test_is_nilpotent  s    ,rX  c                  C   s  d\} }t | |}|d dt| | }||ks6t|j|j  krNdksTn t|j|j  krldksrn t|j|j  krdksn tt dt ddksttdtddkstt ddtdddgd ksttddtdddgd kst|d |t | |kstd S )N)rf   ri   ri   rf   re   r   rj   rg   )rG   fillr3   ro   rn   rp   r3  r   )r   r   rI   rJ   rs   rs   rt   test_zeros_ones_fill'  s    

  
rZ  c                  C   sf   t d} | t kstt dd} | jdks.t| jdks<tt dd} | jdksTt| jdksbtd S )Nr   re   )rG   r   ro   rn   rp   r   rs   rs   rt   test_empty_zeros<  s    

r[  c                  C   s  t td tt gttt ttt gg} | tt dt tgttttggksZtt tt td gttdt tt  tdt  ggtt	t t	t	 t	gt	dt	ggkstt ttd t dt tt  tt gdt t
tt
ttd ggtdt dddgt	dtdggks*t| tt tddtd  ttd  d gtd tt d td tt d ggkstd S )Nre   rg   r   rf   )r   rN   rO   r?   r(   r*   ro   r+   ra  r4   r  r/   r   r   rs   rs   rt   test_issue_3749G  s0    ,." $ 

 &r\  c                  C   sD   t d} | dd dD ]&}| j|dd d| jdd	kstqd S )
Nrh   r   rg   )r  r  c                 S   s   | dkS r  rs   rr   rs   rs   rt   r   [  r   z%test_inv_iszerofunc.<locals>.<lambda>)r  
iszerofuncr  r  )r-   Zcol_swapr  ro   )r   r  rs   rs   rt   test_inv_iszerofuncW  s    
r^  c                  C   s   t d\} }t| t| | t| g}t| |g}||}|||jksRt||j|ksft||j|jks|t|jt|jd  | }|	t
}|tddgd| d ggkstd S )Nrho,phir   rg   re   )rB   r   r(   r?   r2  r   ro   r-   r3  r	  rE   )rhophiXYr  r3  rs   rs   rt   test_jacobian_metrics_  s    

rd  c                  C   s   t d\} }t| t| | t| | d g}t| |g}tt||  t| gt|| t| gd|  dgg}|||kstd S )Nr_  re   r   )rB   r   r(   r?   r2  ro   )r`  ra  rb  rc  r  rs   rs   rt   test_jacobian2l  s    "
re  c                  C   s   t ttt t ttt t ttt t g} t tttg}tddD ]}tddD ]x}| d |d d f }|d |d d f }||}|j|kst|j	|kstt|D ]}|d d |f |kstqqXqJd S Nrg   rf   )
r   r+   rN   rO   rP   r   r2  rn   ro   rp   )rb  rc  r   r   ZX_sliceZY_slicer  krs   rs   rt   test_issue_4564x  s    2
rh  c                      s   t ttt t ttt t gttt t ttt t gg tt fdd  dd d f  t ttgttggtt fdd tt fdd d S )Nc                      s     ttttgS r   r2  r   rN   rO   rP   rs   rb  rs   rt   r     r   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
     S r   )r2  rs   rb  rc  rs   rt   r     r   c                      s     tttgttggS r   ri  rs   rj  rs   rt   r     r   )r   r+   rN   rO   rP   r]   r  rs   rs   rk  rt   test_nonvectorJacobian  s     rl  c                  C   sP   t ddgddgg} |  }|jdks*ttdD ]}|| |d ks2tq2d S Nrg   rf   re   rh   )r   Zvecrp   ro   r   )r   Zm_vecr   rs   rs   rt   test_vec  s
    rn  c                  C   s6  t ddgddgg} |  }|jdks*ttdD ]}|| |d ks2tq2| jdd}|d dkshtt dttt  gtt td  dgg} | jdd}|d tt td  kstt dttt  gtt dgg} | jddd}|d tt kstttdd	  tt	d
d	  ttdd	  tt	dd	  d S )Nrg   re   rf   FrD  r   )rE  Zcheck_symmetryc                   S   s   t ddgg S rf  r   vechrs   rs   rs   rt   r     r   ztest_vech.<locals>.<lambda>c                   S   s   t ddgddgg S rm  ro  rs   rs   rs   rt   r     r   c                   S   s   t ddgg S rf  ro  rs   rs   rs   rt   r     r   c                   S   s   t ddgddgg S rm  ro  rs   rs   rs   rt   r     r   )
r   rp  rp   ro   r   rN   rO   r]   rV   r  )r   Zm_vechr   rs   rs   rt   	test_vech  s"    ( rq  c                      s`   t dddgtdddgks tdddgg tt fdd t  ddtdddgks\td S )Nrg   re   rf   c                      s   t  S r   )r)   rs   r   rs   rt   r     r   ztest_diag.<locals>.<lambda>F)strict)r)   r   ro   r]   r  rs   rs   r   rt   	test_diag  s     rs  c               
   C   s  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dt|  | | ks|tt| ||}|jddt|  | | kstt| ||}|jddt|  | | kstt| | || || }|jddt|  |  | |  | |  ks2t|jdddt| jdd| jdd|jdd| jdd|jdd| jddkstd S )	Nrg   re   rf   T)try_block_diagr  )rt  r  r  )r   rN   rO   rP   r)   r  ro   )rI   rJ   rK   r   rs   rs   rt   test_inv_block  s4     (((     
 
 

 
 
ru  c                   C   s   t tdd  t tdd  ttdtdks4tttdtdksLtt tdd  ttdtdksrtttdtdkstt tdd  ttdtdtddkstt tdd  t td	d  t td
d  dS )zg
    Check that matrix dimensions can be specified using any reasonable type
    (see issue 4614).
    c                   S   s
   t ddS )Nrf   r   rG   rs   rs   rs   rt   r     r   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddS Nrg   re   rf   rh   rv  rs   rs   rs   rt   r     r   rf   c                   S   s   t dS N      @rv  rs   rs   rs   rt   r     r   c                   S   s   t dS rx  r-   rs   rs   rs   rt   r     r   rh   c                   S   s   t dS r   r{  rs   rs   rs   rt   r     r   c                   S   s
   t ddS r   r{  rs   rs   rs   rt   r     r   c                   S   s   t ddggS r   r{  rs   rs   rs   rt   r     r   N)	r]   r  r  rG   r  ro   r   r-   r3   rs   rs   rs   rt   test_creation_args  s     r{  c                  C   sv  t ddddddg} |  r t|  s,t| jdds<tt ddddddg} |  s\ttddd} |  stt|  stt dddddddddddg	} | tdddkstt ddtdd} |  rt|  stt d} |  stt d} |  stt dddtd dt  d ttd d ddtddg	} |  sJt| jddr\t|  jddsrtd S )	Nre   r   rg   Fr   rf   ))ri   r   r  ry   ))ri   r   r   )r   rj   r   )	r   is_diagonalro   r   r)   rG   rN   rO   r,   r   rs   rs   rt   test_diagonal_symmetrical  s,    6r}  c                     s  t ddt gdt dgg   s(tt ddddddddg   rLt  rXttt fdd tddd   \} }| t	dkst| kstt ddd	ddd	g   st  st  \} }| 
   |  |kstt dddd	d	dg   st  st  \} }| 
   |  |ksDt| t	dksVt| ksdtt ddddd	d	g   st  \} }| 
   |  |kstt ddddd	d	dd	dd
dg	   st  \} }| 
   |  |kst| D ]}| d dkstqt dddd	d	d	g   sBt  sPt  \} }| 
   |  |ksvt| t d	dgdd	ggkstt ddd	ddd	g  drttt fdd   st  \} }| 
   |  |kstt ddd	dd	d	g   r ttt fdd t dddddddddddg	   r^ttt fdd td\}}}}t dd||||g   st  std S )Nrg   re   rf   r  r  r   c                      s      S r   r  rs   r   rs   rt   r   	  r   z&test_diagonalization.<locals>.<lambda>r   r   r   Tc                      s
     dS )NTr~  rs   r   rs   rt   r   /	  r   c                      s      S r   r~  rs   r   rs   rt   r   7	  r   r   rh   c                      s      S r   r~  rs   r   rs   rt   r   ;	  r   za b c d)r   r   r  ro   r   r]   rU   r)   r  r-   r  Zas_numer_denomr|  rT   rB   )r  r   r   rI   rJ   rK   rL   rs   r   rt   test_diagonalization  sl    r  c                      sv   t ddgddgg   dks$td d<   dks<tt ddgddgg    d d< tt fdd d S )Nr   rg   Tr{   Fc                      s      S r   r~  rs   r   rs   rt   r   N	  r   z"test_issue_15887.<locals>.<lambda>)r   r  ro   r  r]   rT   rs   rs   r   rt   test_issue_15887D	  s    r  c                     sf  t ddddddddg tt fdd t ddd	d
dddddddg	 t dddddddddddg	}   \}}| |ks~t|   d kstt dddddddddddg	 t dddddddddddg	}   \}}| |kstt dddddddddddg	 t dddddddddddg	}   \}}| |ks<tt dddddddddddg	 t dddddddddddg	}   \}}| |kstt ddddddddddddddddddg t ddddddddddddddddddg}   \}}| |kstt ddddddddddddddddddg t ddddddddddddddddddg}   \}}| |ksvtt ddddddddddddddddddg   rtt ddddddddddddddddddg}   \}}| |kstt tdddtd ddgtd!ddtd"ddgg   \}}| D ]"}t	|tr>|j
dks>tq>d S )#Nrf   re   r  rg   r  r   c                      s      S r   )r  rs   r   rs   rt   r   T	  r   z"test_jordan_form.<locals>.<lambda>r   rV  rj   ir  ir  r   r   r   rh   r   r   r  ri   r  r   z1.0n   )	precisionz2.0z3.14159265358979323846264338327z4.0)r   r]   rU   r  ro   r  r  r
   r   rr  Z_prec)ZJmustr  r  termrs   r   rt   test_jordan_formQ	  s    
,         ,         ,,r  c                  C   s   t ddddgddddgddddgddddgg} ddt  }ddt  }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}|  \}}||ks||kstt|| |  | kstd S )Nre   rh   rg   r   r   )r   r   r  ro   r>   r  )r   pqZJmust1ZJmust2r  r  rs   rs   rt   #test_jordan_form_complex_issue_9274	  s(    








r  c               	   C   s   t ddddgddddgddddgddddgg} |  \}}|t ddddgddddgddddgddddggkstt|t ddddgddddgddddgddddggkstd S )Nrg   r   )r   r  ro   r  rs   rs   rt   test_issue_10220	  s"    









r  c               
   C   s   t ddddgddddgddddgddddgg} |  \}}| t t t d ttd gdt ddt dgdtd d td  dtd d td  gddddggkst|t t dddgdt ddgddtdgdddtggkstd S )Nrg   r   r   r   re   )r   r  r,   r   r!   ro   )r   r  r  rs   rs   rt   test_jordan_form_issue_15858	  s&    



.


r  c                  C   sx  t d\} }}t| |  |d ||   || ||  g|| ||  | |d ||   gg}|t}|ttd ||  ||   d| |  ||  t  || |  ||   tddkstt|tksttddgddgg}| |t  krttd t d ksn ttddgtdgg}|t}|jtksLt|	 
|jttd dt  ksttd S )	Nz
UA K_i K_wre   zZZ(K_i,K_w,UA)r  rg   rf   r   rj   )rB   r   r  rN   r   ro   r:  r   genZas_exprr  )ZUAZK_iZK_wr   r  r  rs   rs   rt   test_Matrix_berkowitz_charpoly	  s(    *$
0 8
r  c                  C   s   t d} td| }| tt| ggks0ttd| }| tt| t| t| d gdt| t| gddt| ggkstd S )Nlamdarg   rf   re   r   )r#   r   rR  Z_eval_matrix_exp_jblockr+   ro   )r   r   rs   rs   rt   test_exp_jordan_block	  s    r  c                  C   s  t ddgddgg} t tddtd d dtd d  gdtdgg}|  |ks\tt| |ksltt ddgddgg} |  t tdgdtggkstt| t tdgdtggkstt ddgddgg} |  t ttd t td gttd ttd ggkstd S )	Nrf   rh   r   r   r   ri   rg   r   )r   r+   ro   r   r(   r?   )r   Zm_exprs   rs   rt   test_exp	  s    8  r  c               
      s   t d} td|    tt| ggks0ttd|    tt| d|  dd| d   dd| d   gdt| d|  dd| d   gddt| d|  gdddt| ggksttdddgdddgdddgg tt fdd	 d S )
Nr  rg   rh   r   re   rf   r   c                      s      S r   )r0   rs   r   rs   rt   r   
  r   ztest_log.<locals>.<lambda>)r#   r   rR  Z_eval_matrix_log_jblockr0   ro   r]   rT   )r   rs   r   rt   test_log
  s(    *
r  c                  C   sR   t d} tdd| t| d t| d  tjg}t|\}}}}|tjksNtd S )NrN   rf   rg   re   )r#   r   r(   r?   r!   r   rS   ro   rN   columnZpivot_offsetZ	pivot_valZpivot_assumed_nonzeroZ
simplifiedrs   rs   rt   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1!
  s
    (
r  c                  C   sn   t d} tdd| t| d t| d  | d  t| d t| d  g}t|td\}}}}|dksjtd S )NrN   rf   rg   re   Zsimpfunc)r#   r   r(   r?   rS   rY   ro   r  rs   rs   rt   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2.
  s    

r  c                  C   s   t d} tdd| t| d t| d  |  t| d t| d  g}t|td\}}}}t|dksjt|d d dks~t|d d d|  kst|d d dkst|d d dkstd S )NrN   rf   rg   re   r  r   )r#   r   r(   r?   rS   rY   lenro   r  rs   rs   rt   +test_find_reasonable_pivot_naive_simplifies>
  s    

r  c                      s  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t td	d  t td
d  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t td d  t td!d  t td"d  t td#d  t td$d  t td%d  t td&d  t td'd  t td(d  t td)d  td* t t fd+d td,d,d,ggtd-d.d/gd.d/d0gd/d0d1gg t t fd2d td-d.d/gd.d/d0gd/d0d1gg t t fd3d d S )4Nc                   S   s   t ddgdggS r   r{  rs   rs   rs   rt   r   R
  r   ztest_errors.<locals>.<lambda>c                   S   s   t ddggd S )Nrg   re   )g333333?ri   r{  rs   rs   rs   rt   r   S
  r   c                   S   s   t ddggd S )Nrg   re   )rg   g@r{  rs   rs   rs   rt   r   T
  r   c                   S   s   t ddddS )Nrf   rh   T)rK   r  )r6   rs   rs   rs   rt   r   U
  r   c                   S   s   t ddgddS )Nrg   re   rh   rj   )r   r  rs   rs   rs   rt   r   V
  r   c                   S   s(   t ddgddggddgt ddgS rv   )r   Zcopyin_matrixrs   rs   rs   rt   r   X
  r   c                   S   s"   t ddgddggddgt S rv   )r   Zcopyin_listr   rs   rs   rs   rt   r   Y
  s   c                   S   s   t dddgdddgg S Nrg   re   rf   r   r   r  rs   rs   rs   rt   r   [
  r   c                   S   s&   t ddddgt ddgddggS rw  )r   r   rs   rs   rs   rt   r   ]
  r   c                   S   s"   t ddgt ddgddggS rw  )r   r   rs   rs   rs   rt   r   _
  r   c                   S   s"   t dgdt ddgddggS rw  )r   r   rs   rs   rs   rt   r   `
  s   c                   S   s"   t dgdt ddgddggS rw  )r   r   rs   rs   rs   rt   r   b
  s   c                   S   s   t ddg S r   )r   r;  rs   rs   rs   rt   r   d
  r   c                   S   s   t dgdS rf  )r   r	  rs   rs   rs   rt   r   e
  r   c                   S   s   t ddgddggddS Nrg   re   rf   rh   ri   )r   minorrs   rs   rs   rt   r   f
  r   c                   S   s   t ddgddggddS r  )r   Zminor_submatrixrs   rs   rs   rt   r   g
  r   c                   S   s   t dddgdS r   r   crossrs   rs   rs   rt   r   h
  r   c                   S   s   t dddgdS r   r   dotrs   rs   rs   rt   r   i
  r   c                   S   s   t dddgt ddgS r   r  rs   rs   rs   rt   r   j
  r   c                   S   s   t ddgg S r   r  rs   rs   rs   rt   r   k
  r   c                   S   s   t ddgdS )Nrg   re   rI   r  rs   rs   rs   rt   r   l
  r   c                   S   s   t ddgdddgS r   r  rs   rs   rs   rt   r   m
  r   c                   S   s   t dddg S r   )r   r+   rs   rs   rs   rt   r   n
  r   c                   S   s   t ddgddgg S rw  )r   
normalizedrs   rs   rs   rt   r   o
  r   c                   S   s   t ddgjddS )Nrg   re   znot a methodr  r  rs   rs   rs   rt   r   p
  r   c                   S   s   t ddg S r   r   Z
inverse_GErs   rs   rs   rt   r   q
  r   c                   S   s   t ddgddgg S r   r  rs   rs   rs   rt   r   r
  r   c                   S   s   t ddg S r   r   Zinverse_ADJrs   rs   rs   rt   r   s
  r   c                   S   s   t ddgddgg S r   r  rs   rs   rs   rt   r   t
  r   c                   S   s   t ddg S r   )r   Z
inverse_LUrs   rs   rs   rt   r   u
  r   c                   S   s   t ddg S r   )r   r  rs   rs   rs   rt   r   v
  r   c                   S   s   t ddg S r   r   r  rs   rs   rs   rt   r   w
  r   c                   S   s   t ddgddggjddS )Nrg   re   rf   rh   zNot a real methodr  r  rs   rs   rs   rt   r   y
  r   c                   S   s8   t ddddgddddgd	d
ddgddddggjddS )Nrg   re   rf   rh   ri   rj   r   r   r   r   r   r  r  r  rp  r  zNot functionr]  r  rs   rs   rs   rt   r   {
  s
   
 
c                   S   s8   t ddddgddddgd	d
ddgddddggjddS )Nrg   re   rf   rh   ri   rj   r   r   r   r   r   r  r  r  rp  r  Fr  r  rs   rs   rs   rt   r   ~
  s
   
 
c                   S   s*   t tddgddggtddgddggS rw  r.   r   rs   rs   rs   rt   r   
  r   c                   S   s   t tddgddggg S rw  r  rs   rs   rs   rt   r   
  r   c                   S   s   t tdd dS )NrN   re   rI   )r.   r#   rs   rs   rs   rt   r   
  r   c                   S   s   t dd S )Nrf   )ri   re   rz  rs   rs   rs   rt   r   
  r   c                   S   s   t dd S )Nrf   )re   ri   rz  rs   rs   rs   rt   r   
  r   r  c                      s
     dS )Nzmethod=LU_decomposition())r  rs   r   rs   rt   r   
  r   r   rg   re   rf   rh   ri   c                      s     dS )Ng@)r   rs   r   Vrs   rt   r   
  r   c                      s     dS )Ng)r   rs   r  rs   rt   r   
  r   )r]   r  r   rV   r  rU   r   rs   rs   r  rt   test_errorsQ
  s|       r  c                   C   s   t t dkstt tddggt tdgdgg  krDdksJn tt tdddd t tdddd   kr~dksn tt tdddgddd	ggd
ksttdgtdggkstt rtt tg kstd S )Nr   rg   re   c                 S   s   dS r  rs   r   rs   rs   rt   r   
  r   ztest_len.<locals>.<lambda>c                 S   s   dS r  rs   r   rs   rs   rt   r   
  r   rf   rh   ri   rj   )r  r   ro   rs   rs   rs   rt   test_len
  s    8$
r  c               	   C   s  t ddtftddfddtd ff} | tt tdt td d ftt dt dt fdt dt td d ffkszt| tt tdt tt ftd d dt dt fdt dt ttd  ffkstt ddttg}|tt ddtd d tt gkstd S )Nrg   rh   re   r   ri   rf   )r   rN   rO   r/   ro   )r   r   rs   rs   rt   test_integrate
  s    $FFr  c                  C   s  t ddtftddfddtd d ff} t| tt| s@t| tt dddddt ffksft| tt d	ks|tt| tt dddddt ffkstt| tt d	kst|  }t|tt|st|ttdddddt ffkst|ttd	kstt|ttdddddt ffks>tt|ttd	ksVt| jtd
dt	| td
dksxtt| td
dt	| td
dkstd S )Nrg   rh   re   r   ri   r   r   rg   r   r   r   r   )r  rg   r   r   r  Fr   )
r   rN   rO   rr  r*   r:  ro   r  r   r[   )r   A_immrs   rs   rt   	test_diff
  s    (&&&("r  c               
      sv  t ttgttgg} | | 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sft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st|  }||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t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sht| t	t ddgddggkstt
t	tg}| |tddddkst| | 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t|t	tgg}|jdks,t|tdgdggdgdgggksRttd}|ttt  tttggt t t tgkst tttgdft td tt ttg tt td ttg tt tt tdggks ttttt }|ttggttttt tttt gksjt|tttffttttt tttt gkst|tttffttt tt tttt gkst|ttffttggttttt tt tt gtttt tttt ggksHt ttt tttffdd ks|t ttt tttffdd kst tttggtttfft fd	d
tttfD kstttttgg}t|t
st|tddggks*ttd tttgg}t|t
sRt|tdtd  dggksrtd S )Nrg   r   re   )re   re   rg   r+  rf   r   rg   r   )re   rg   r   c                    s&   g | ]  fd dt ttfD qS )c                    s   g | ]}  | qS rs   )r*   r   )fxyzr   rs   rt   r   
  s     z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)rN   rO   rP   )r   r  )r   rt   r   
  s     z'test_diff_by_matrix.<locals>.<listcomp>)r   rN   rO   rP   rM   r*   r   ro   r  rI   r   rJ   rG   r3  r   r?   r+   r(   r   rr  )r   r  r   ZdBr+  exprresrs   r  rt   test_diff_by_matrix
  sF    RRTT$ T&8   :<>d44>r  c                      sh   t ddtftddfddtd d ff tt fdd t dtt d	d
dddt ffksdtd S )Nrg   rh   re   r   ri   c                      s    j S r   )Znonexistantattributers   r   rs   rt   r   
  r   ztest_getattr.<locals>.<lambda>r*   r  r  r   )r   rN   rO   r]   r?  getattrro   rs   rs   r   rt   test_getattr
  s    (r  c                  C   s   t dddgdddgdddgg} | js*t| j} | js:td| d< | jdksPtt dddgdddgdddgg} | jrzttdd} | jstd S )	Nrf   rh   rg   re   ri   r   )r   r   F)r   r   ro   r   r   rG   r   rs   rs   rt   test_hessenberg
  s     

 

r  c                  C   s6  t tdd  t tdd  t tdd  t tdd  t tdd  tdt dfd	fjd
dttdt dgddggksttd} | jd
d}|tddgddtd t ggkst||j | ksttd} |  }||j | kst|j	st|tdddgdddgdddggks&ttddt ddt  fdt ddt fddt  dt dff} |  
 tdtddfdt ddffkstt tdd  t tdd  t tdd  t tdd  t tdd  tdt dfd	fjd
dttdt dgddggksttd} | jd
d}|tddgddtd t ggksXt||j | kslttd} |  }||j | kst|j	st|tdddgdddgdddggksttddt ddt  fdt ddt fddt  dt dff} |  tdtddfdt ddffks2td S )Nc                   S   s   t d S Nr  r   choleskyrs   rs   rs   rt   r     r   ztest_cholesky.<locals>.<lambda>c                   S   s   t d S Nr  )rf   rh   r  rs   rs   rs   rt   r     r   c                   S   s   t dt dfdf S Nri   r   rz   )r   r   r  rs   rs   rs   rt   r     r   c                   S   s   t d S NrB  )ri   rg   r  rs   rs   rs   rt   r   	  r   c                   S   s   t djddS Nr  F	hermitianr  rs   rs   rs   rt   r   
  r   ri   r   rz   Fr  rg   r  re   rj   ))rX  rp  r   )rp  r  r   )r   r   r   rf   r   rh   r   r   )re   r   r   c                   S   s   t d S r  r"   r  rs   rs   rs   rt   r     r   c                   S   s   t d S r  r  rs   rs   rs   rt   r     r   c                   S   s   t dt dfdf S r  )r"   r   r  rs   rs   rs   rt   r     r   c                   S   s   t d S r  r  rs   rs   rs   rt   r     r   c                   S   s   t djddS r  r  rs   rs   rs   rt   r     r   )r]   rU   r  r   r   r  r@   ro   r   rV  r,   r"   r"  rs   rs   rt   test_cholesky  sP     (
*@0 **@r  c                  C   s  t ddd} tt| t| g}t|ddks6t|dtt| d t| d  tddkshttdtddgg}| td	td
d t	j
kst|tt|kst|t t|ksttddgddgg}|ddkst|ddkst|ddksttddtdd  krFdksLn t|tdks`ttdttg| t	j
t gg}|dttdddttd   td  | d  ksttdddgddtddgg}|dttddtdd  kst|dt	jkst|dtdd ks4t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D ]}td|t	jkst|D ]B}	|D ]6}
|	||
| |	|
 | }|dkstq̐q||||fD ]8}t|| |t|||  }|dkstqqtdddt  dg}tt	j
dt dg}tdddg}tddtg}ttdtdddg}|||||g}t ddd}ddddt	jt	jtfD ]}|dkrtdddg|t	jkst|dkrj|D ]L}	|D ]@}
|	||
| |	|
 | }t|dkt	jks$tq$q|ddddt	jt	jfkr|D ]8}	t||	 |t||	|  }|dkstqqtdddddddddd
dg	}|ddkstd S )NrN   Tr   re   rg   r   ri   rf   rX  r   rh   r   r   Z	frobeniusfro%   r  r  i  r   iI3 r   alpha)r  re   r   g      Y@rj   )r#   r   r(   r?   rE   normro   r   r   r!   r   r4   r-  r  r-   rO   r5   r@   r  r   r   rG   r>   r   InfinityNegativeInfinitytrue)rN   rd  r   r   r   r   r#  r  orderrb  rc  Zdifr   rI   rJ   rK   rL   r   rs   rs   rt   test_matrix_norm-  s    2"2,
*
 
 r  c                     s   t dddtd} d| d< tdd| d< |  d	ks:t| d
< |  tdtttddt kspttt	t
gt
 t	gg}|  t fddtddtjtddtd tttdd fD sttg  dkstd S )NrN   Tr   rf   r   ry   rg   re   re   r  rk   c                 3   s(   | ] }t d  | V  qdS )r&  N)r
   Z
epsilon_eqr  r   )r   valZMcrN   rs   rt   r     s     z(test_condition_number.<locals>.<genexpr>ri   re   r   rh   r   )r#   r-   r   Zcondition_numberro   r   r   r   r   r(   r?   r   r!   r   r5   )r   r   rs   r  rt   test_condition_number  s    .&*r  c                  C   s   t d} t d}| | d d d d f ks,t| | d d d d f krHt| |krTt| |ks`t| dkslt| dkrxttd}t d}||kst||krtd S )N)rl   rm   )r   r   r   ))r   r   r   )rj   ri   rh   )rf   re   rg   r   )r  r  r  )r   ro   r"   )r   r   r   r   rs   rs   rt   test_equality  s    r  c                  C   s   t ddg t tddtddgks,tt dddg t dddgksPtt dddg} | jdd dt dddgkstd S )	Nrf   rh   ri   r   g0.++c                 S   s   | j dddjS )Nr   T)r   Zchop)r   is_zerorr   rs   rs   rt   r     r   z!test_normalized.<locals>.<lambda>r  )r   r  r   ro   r   rs   rs   rt   test_normalized  s    $r  c                   C   s,   t dd dkstt dd dks(td S )Nc                   S   s   t d S r   r-   Zprint_nonzerors   rs   rs   rt   r     r   z$test_print_nonzero.<locals>.<lambda>z[X  ]
[ X ]
[  X]
c                   S   s   t ddS )Nrf   r
  r  rs   rs   rs   rt   r     r   z[.  ]
[ . ]
[  .]
)rb   ro   rs   rs   rs   rt   test_print_nonzero  s    

r  c                  C   s   t dtdkstt dtdks,ttddt dddgd ksLtt ddgddgg} t ddgddgg}tD ]x}|d}| |kst| td|dkstt||kst|d}||kst|td|dkstt||ksxtqxd S )Nrf   rh   rg   r  r   re   r   )r   r-   ro   rG   r3   r  r:  )r   rP   r   r   rs   rs   rt   test_zeros_eye  s     

r  c                  C   s
  t  jstt ddgddggjs&ttddjs6ttdjrDtt tdgddggjd ksbtttdgddggjd kstttdgddggjd kstttdgddggjd kstt tdgddggjdkstt	ddd} t | dgddggjdkstd S )	Nr   rf   rh   rg   FrI   T)Znonzero)
r   Zis_zero_matrixro   rG   r-   rN   r"   r   r   r#   r   rs   rs   rt   test_is_zero  s    r  c            
      C   s  t d } t| }t|  }t| }t|  }t| }t|  }|| td tdksZt|| td tdksvt|| td tdkst| ddt|   kst| ddt|   kst| ddt|   ksttdtdksttdtdksttdtdks&tt	dddgt d }t	dddgt d }t	dddgt d }	tt  d |
 ksttt  d |
 ksttt  d |	
 ksttt 
 d |
 ksttt 
 d |
 ksttt 
 d |	
 kstd S )Nrf   rg   re   r   )r5   r9   r8   r7   r-   ro   r;  r(   r   Zfrom_axis_angleZto_rotation_matrixr:   r;   r<   )
thetaZr3_plusZr3_minusZr2_plusZr2_minusZr1_plusZr1_minusq1q2Zq3rs   rs   rt   test_rotation_matrices  s2    


r  c                   C   sj   t tdd dkstttdtdks0tttdd  t tddksRtttddksftd S )	NZvectorrh   z	vector[4]rL   c                   S   s   t dd S )NrL   r   )r   rs   rs   rs   rt   r     r   z%test_DeferredVector.<locals>.<lambda>testzDeferredVector('test'))strr   ro   rC   r]   r   reprrs   rs   rs   rt   test_DeferredVector  s
    r  c                   C   s   t tdrtd S )Nrb  )rc   r   ro   rs   rs   rs   rt    test_DeferredVector_not_iterable  s    r  c                   C   s   t tdd  d S )Nc                   S   s   t tdS )Nr  )r   r   rs   rs   rs   rt   r     r   z,test_DeferredVector_Matrix.<locals>.<lambda>)r]   r  rs   rs   rs   rt   test_DeferredVector_Matrix  s    r  c                  C   s<  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 | dd ggksdtt|j|jgtddddgtdd| dd | dd ggkstttddgtddggdtdtd d tdd gttd d dtd d ggkstttdg}t|tdgggks8td S )Nrg   re   rf   ri   r   Tr   )r   r   r   ro   r   r@   r	   )r   r}   r~   r#  rs   rs   rt   test_GramSchmidt  s    
.. r  c                   C   s<   t ddddgddkstt ddddgddddks8td S )Nrg   re   rf   rh   r   F)zero)r'   ro   rs   rs   rs   rt   test_casoratian)  s    r  c                   C   s^   t  tdd jdksttddtdd tddks<ttddtdd t  ksZtd S )Nr   rf   )r   rf   )r   rG   r3  ro   rs   rs   rs   rt   test_zero_dimension_multiply.  s    "r  c                      s   t ddtd  dd d f t ddggks2t dd d f t ddggksTt d d df t ddggjksxt d d df t ddggjksttt fdd tt fdd d S )	Nre   rh   rg   rf   r   c                      s    dd d f S rP  rs   rs   r   rs   rt   r   :  r   z'test_slice_issue_2884.<locals>.<lambda>c                      s    d S )Nr  rs   rs   r   rs   rt   r   ;  r   )r   r   ro   r   r]   r   rs   rs   r   rt   test_slice_issue_28844  s    ""$$r  c                   C   sJ   t ddd d df jdks tt dddd d f tddg ksFtd S )Nr   rf   r   rz   rg   )rG   r3  ro   r   rs   rs   rs   rt   test_slice_issue_3401>  s     r  c                  C   s  t dd} d| d< | d d df tdddgks4t| d dksDt| dd dgksZtd| d< | d dksrt| ddd f tddggksttddgg| ddd f< | dd d f tdddggkstdd	gg| ddd f< | dd d f tddd	ggkstd
| d< | d d d df td
ddgks>tdddg| d< | d d df tdddgkspttdddg| d< | d d df tdddgksttdddg| d< | d d df tdddgkstd S )Nrf   rg   r   rh   rD  rk   ri   rj   +      ry   )rG   r   ro   r"   )rH  rs   rs   rt   test_copyinC  s(    
""$&($$r  c                      s   t ddgddgg t ddgddggdfks4tttdd  t dddgtddgdtdgg t  d  jks|t  d tdkst jt	d	d tdksttt fd
d tt fdd tt fdd d S )Nrg   re   r   )r   c                   S   s   t ddgddgg S r   r  rs   rs   rs   rt   r   ^  r   z'test_invertible_check.<locals>.<lambda>r   rf   r   c                      s    j ddS )Nr  r  r  rs   r   rs   rt   r   i  r   c                      s    j ddS )Nr  r  r  rs   r   rs   rt   r   j  r   c                      s    j ddS )Nr  r  r  rs   r   rs   rt   r   k  r   )
r   r  ro   r]   r  rN   r  rn   r-   r=   rs   rs   r   rt   test_invertible_checkZ  s    4r  c                  C   sD   t d\} }| | }|| tdddgtdddg| ks@td S )Nzx, yrf   ri   )rB   r  r   ro   )rN   rO   r   rs   rs   rt   test_issue_3959n  s    r  c                   C   s$   t tddgddggdks td S )Nrg   re   rf   rh   zMatrix([[1, 2], [3, 4]]))r  r   ro   rs   rs   rs   rt   test_issue_5964t  s    r  c                  C   s<   t d\} }tt| d| g|d | d ggdks8td S )Nr`  re   rf   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))rB   rA   r   ro   ri  rs   rs   rt   test_issue_7604x  s    "r  c                	   C   s   t djstt d js ttdjr.ttdjr<ttdddggjrRttddddddjslttddtdjrttdddddjrttddddddddjrtd S )	Nrf   rg   r   )ry   rk   r  re   rj   )ry   rk   )ry   rk   r  rz   rH  )	r-   Zis_Identityro   r  rG   r3   r   r"   r   rs   rs   rs   rt   test_is_Identity~  s    r  c                   C   s,  t ddt dddkstt dddddgdks<ttdddgtdddgdksbttdddt gttddt gdt ksttdddt gjttddt gdddt ksttdddt gjttddt gddd	t ksttdddt gjttddt gdd
dd	t ks<ttdddt gjtddt dgdddddt  kszttdddt gjtddt dgdddddt  kstttdt gjttdt gddddkstttdt gjttdt gdddkstttdd  d S )Nrg   rf   re   r  r   Fr  Tr  Zphysicsr  conjugate_conventionrh   ri   rj   rightr   left)r  c                   S   s    t ddgjt ddgdddS )Nrg   re   rf   rh   Tr  r  r  rs   rs   rs   rt   r     r   ztest_dot.<locals>.<lambda>)r3   r  ro   r   r   r]   r  rs   rs   rs   rt   test_dot  s    &268:>>20r  c                  C   s   t ddd\} }}}}}td|||f| d|| f| | d| f| ||  dff}td|  | | f| d|| f|| d|f||| dff}| |sttd tdst|  | std S )NzB_x B_y B_z E_x E_y E_zTr   r   rf   )rB   r   Zdualequalsro   r-   rG   )ZB_xZB_yZB_zZE_xZE_yZE_zr   ZFdrs   rs   rt   	test_dual  s&     
r  c                  C   s   t ddg dkstt dddtd dt  d ttd d  dtt t t t dg	} |  dkslt| jddd kst| jdd	 dd kst| d
  | d
< |  d kst| d
  | d
< |  } | jdddkstd| d< |  dkstd S )Nrg   re   Frf   r   Tr   c                 S   s   | S r   rs   rr   rs   rs   rt   r     r   z%test_anti_symmetric.<locals>.<lambda>r  ry   )r   r   ro   rN   rO   r,   r   rs   rs   rt   test_anti_symmetric  s    Dr  c                  C   s   t d} | jdd\}}||j |j|   kr>t|jksDn t| jddd\}}||j |j|   kr|t|jksn t|| |  | kstd S )N)r  r  TrT  )rU  sort)r   r  r   r-   rp   ro   r  )r   r  r   rs   rs   rt   #test_normalize_sort_diogonalization  s    ,,r  c                   C   s   t tdd  d S )Nc                   S   s   t dddgt ddg gS r  r{  rs   rs   rs   rt   r     r   z!test_issue_5321.<locals>.<lambda>)r]   r  rs   rs   rs   rt   test_issue_5321  s    r  c                  C   s   t tddtd t ddddgddddggks8tt tddtd t ddgddgddgddggksttt} | | td| dtd t ddddgddddggkstd S )Nre   rg   r   )r   r   r-   ro   r   r"   r   rs   rs   rt   test_issue_5320  s    

 

r   c                  C   sV   t dgg} t| }t || t ddggks2tt || t dgdggksRtd S rf  )r   rC   r   ro   r   )r   ZAImrs   rs   rt   test_issue_11944  s    r  c                     s   dddg} dddg}t dddg}|j} fdd}tD ]\  | } |}|||| |||j| ||j|j| ||j|| q8ttd	d
  d S )Nrg   re   rf   rh   ri   r   c                    s    || kst t|  kst d S r   )ro   r:  )r   r4  r   rs   rt   r    s    ztest_cross.<locals>.testc                   S   s"   t ddddgt ddddgS r   r  rs   rs   rs   rt   r     s    ztest_cross.<locals>.<lambda>)r   r   r  r  r]   rV   )rI   rJ   r   r   r  r   r   rs   r   rt   
test_cross  s    

r  c                  C   s^   t tttg} t tttg}|  | | |ks6t	|  
 sFt	|   | ksZt	d S r   )r   rN   rO   rP   rI   rJ   rK   Zhatr  ro   r   Zvee)Zv1Zv2rs   rs   rt   test_hat_vee  s
    r  c                  C   sb   t D ]:} | d| dh}t|dkr:| | dkstqtD ]} t| dtrDtqDd S rf  )immutable_classesr-   r  popro   rL  rr  r   )r   rH  rs   rs   rt   	test_hash  s
    $r  c                  C   sH   dt gddgg} tddgt  dgg}tD ]}|||  ks*tq*d S Nr   rg   )r   r   r  Zadjointro   )r  r4  r   rs   rs   rt   test_adjoint  s    r  c                  C   sT   t ddgtddt  gg} |  tjtdtjthks<t| tthksPtd S r   )r   rN   r.  r!   r   ZNegativeOnero   r#   r   rs   rs   rt   
test_atoms  s     r	  c            	         s  t ttgttgg} t| jddt|  ks4tt ddgddgddggt d	d
dgdddggt ttgg}|D ]d}|jdd}|| }|| }t|| |kstt|| |kst|j	|kst|j	|ksttqt|D ]n}t|jdd}|| }|| }t|| |kstt|| |ks.t|j	|ks>t|j	|kstqddl
m  | jdd}|  }tdtdtdtdi}t fddt||||D std S )NZRDr  r  h   i  rf   r  ri   rg   r   r   r   r     EDr   compi_ib,  i  ij  c                 3   s$   | ]\}} |  |  V  qd S r   r   )r   r   r   r  rs   rt   r   A  s   ztest_pinv.<locals>.<genexpr>)r   rI   rJ   rK   rL   r>   pinvr  ro   r   Zsympy.core.numbersr  r   rm  r  )	A1Asr   A_pinvAApApAr  wZrepsrs   r  rt   	test_pinv  s:     
r  c                  C   s   t ddddddgddd	d	d
dgddddddgddddddgddddddgddddddggg} | D ]F}|jdd}|| }|| }|j|kstdd }||j|sbtqbd S )N=   r  7   r  r  r   >   `   U   r  E   8   r  rh   6   r   [   )   r   r  r  Z   r  r  c                 S   s<   |  t}dd |D }| | | }tdd |D S )Nc                 S   s   i | ]}||  qS rs   r   )r   rC  rs   rs   rt   rF  f  s      zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>c                 s   s   | ]}t |d k V  qdS )g|=Nr)  )r   r   rs   rs   rt   r   h  s     zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>)r.  r    r7  r   r   )r   r   ZrootofsZrootofs_approxZdiff_approxrs   rs   rt   allclosed  s    
zEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose)r   r  r   ro   )r  r   r  r  r  r"  rs   rs   rt   3test_pinv_rank_deficient_when_diagonalization_failsG  s     	r#  c                   C   sL   t ddt dd tddg ks$tt ddt dd tddg ksHtd S r  )r3   r   ro   rs   rs   rs   rt   test_issue_7201m  s    $r$  c                  C   s2   t tttfD ] } | tgdggjthkstqd S r  )r   r   r   r"   rN   Zfree_symbolsro   r   rs   rs   rt   test_free_symbolsr  s    r%  c                      s  zddl m  W n tk
r,   td Y nX t dddgtdddgksRtt dddggtdddggksztt dddgddd	ggtdddgddd	ggkstt tttgttttgkstt	t
 fd
d t ddg ddggtddgddggkstt ddgddggtddgddggksPtt g  g gtddg   krtg ksn tdS )zSee issue 7465.r   r  r  rg   re   rf   rh   ri   rj   c                      s(   t  ddgddggddgddgggS )	Nrg   re   rf   rh   ri   rj   r   r   r{  rs   r&  rs   rt   r     r   z#test_from_ndarray.<locals>.<lambda>N)r	  r  r  r^   r   ro   rN   rO   rP   r]   NotImplementedErrorrs   rs   r&  rt   test_from_ndarrayw  s     $($
62r(  c               	   C   s   ddl m}  zddlm}m} W n tk
r<   td Y nX | |ddgddgg}|d dksftt|ddddgks~tt	t
 | |ddgddgg}W 5 Q R X |d dkstt|ddddgkstd S )	Nr   
_matrixify)r  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesrg   re   rf   rh   )sympy.matrices.commonr*  r	  r  r+  r  r^   ro   rq   r\   PendingDeprecationWarning)r*  r  r+  r   rs   rs   rt   test_17522_numpy  s    
"r.  c                  C   s~   ddl m}  zddlm} W n tk
r8   td Y nX | |ddgddgg}|d d	ksbtt|d
ddd	gksztd S )Nr   r)  )r+  zEmpmath must be available to test indexing matrixified mpmath matricesrg   re   rf   rh         @r&  r'  ry  )r,  r*  Zmpmathr+  r  r^   ro   rq   )r*  r+  r   rs   rs   rt   test_17522_mpmath  s    r0  c                  C   s~   ddl m}  zddlm} W n tk
r8   td Y nX | |ddgddgg}|d dksbtt|ddddgksztd S )	Nr   r)  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesrg   re   rf   rh   )r,  r*  Zscipy.sparser1  r  r^   ro   rq   )r*  r1  r   rs   rs   rt   test_17522_scipy  s    r2  c                  C   sr   t dtgt dgg} | js tdt | d< | jdks:tt| d< | jd ksPt| d t | d< | jdksntd S )Nrg   re   ry   Fr{   rz   r   r   rs   rs   rt   test_hermitian  s    
r3  c                     sF  t dddgdddgdddgg} | d | t dddgdddggksJtt dddgdddgdddgg}|d |t dddgdddggkstt dddgdddgd	d
dgg}|d |t dddgdddggkstt dddgdddgdddgg tt fdd t dddgdddgdddggttfdd t dddgdddgdddgg} | d | t ddgddgddggkstt dddgdddgdddgg}|d |t ddgddgddggkstt dddgdddgdddgg tt fdd t dddgdddgdddggttfdd d S )Nrg   re   rf   rh   ri   r   rj   r   r   r   r   r   c                      s
     dS r  r   rs   r  rs   rt   r     r   z+test_issue_9457_9467_9876.<locals>.<lambda>c                      s
     dS Nr  r   rs   r   rs   rt   r     r   c                      s
     dS r  r   rs   r4  rs   rt   r     r   c                      s
     dS r5  r   rs   r6  rs   rt   r     r   )r   r   ro   r]   r   r   )r   r   Ors   )r  r   rt   test_issue_9457_9467_9876  s.     
  
  
    
$ 
$  r8  c                  C   s   t ddd\} }t d\}}td}tdd| ||tg}||  | | | | ksTt|| | || | kspt| | ||  kst|| || kst||  | t||  dgd||  ggkstd S )Nr`  F)Zcommutativeza bre   r   )rB   r-   r   rP   ro   )rN   rO   rI   rJ   r   r   rs   rs   rt   test_issue_9422  s    r9  c            	      C   s   t g } ddgt dddgf}ddg|d jf}ddgt dd	gdd
ggf}|||fD ]R\}}|D ]D}t| |}d|kr||n|d|}||krt|t|ksbtqbqVd S )Nr   r   r   rj   rf   r   r   rg   re   rh   joinrD  )r   r   r  idro   )	r   rI   rJ   rK   Zopsr   opr+  newrs   rs   rt   test_issue_10770  s    
r>  c                  C   sl  t dddgdddgddd	gg} | d
ddgdddgt ddgddgddggksVt| d
ddgdddgt dgdgdggkst| dddgd
ddgt dddggkst| dddgd
ddgt dddgddd	ggkst| d
ddgdddgt dd
g kst| dddgd
ddgt d
dg ks:t| dddgdddgt dgdggkshtd S )Nrg   re   rf   rh   ri   rj   r   r   r   r   TF)r   r   ro   r   rs   rs   rt   test_issue_10658  s     0,**r?  c                  C   s  t ddtd  dgdtd d d dtd d gg} |  dksLtt ddtd t  dgdddtd t  gg} t|  d	 t ddddtd t   gd	d	gg tddksttd
\}}}}}}}}}	}
}}t |||| || d	g|||| || d	g|||| || dg|||| || dg|	|
d|	 | |	|  d|
 | |
|  d	gg} |  dks|td S )Nr   ri   re   rg   rf   r  rh   r  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   r@   r  ro   r   r>   r  rG   rB   )r   ZaxZayZbxZbyZcxcyZdxZdyexZeyt0t1rs   rs   rt   !test_opportunistic_simplification  s    <4F rD  c                  C   s   t dddgdddgg} |  d t ddd	gdddgg  d
k sHtt 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g}t dddgdddgdddgg}| |  d
k st| |  d
k std S )Ng~jth?gRM@g(\M@gDl)@gQgp=
cG@r   r&  r  V瞯<gq7K<rh   r(  r   rg   r/  g        g       @g      )r   r  r  ro   r  )mmZm_mixedZm_floatZm_invrs   rs   rt   test_partial_pivoting  s(    



rG  c                  C   s   t ddddgddddgddddgg} | jdd	 d
d }t ddddgddddgddddgg}|| }| dk sxt|d dkstdS )z When doing numerical computations, all elements that pass
    the iszerofunc test should be set to numerically zero if they
    aren't already. g?ggɿr   ggٿg333333?c                 S   s   t | dk S )Ng [n<r)  rr   rs   rs   rt   r   2  r   z*test_iszero_substitution.<locals>.<lambda>r  r&  g4iҤIӿglٲerE  r  N)r   r  r  ro   )r   Zm_rrefZ	m_correctZm_diffrs   rs   rt   test_iszero_substitution+  s    &&rH  c            
      C   sR  ddl m}  dtttdd  tttdd td  }dtd tttdd d  d	tttdd   d
tttdd d   }| dd}| dtd }| ||}t|t| |t| g}t|| || g}tt|| t|| g}dd }	|jd|	ddkst	|jd|	ddks6t	|jd|	ddksNt	d S )Nr   )Pointr   r  -   rf   r  re   r  r  rg   c                 S   s   t |  dk S )Ng#B;)r  r   rr   rs   rs   rt   r   H  r   z"test_issue_11238.<locals>.<lambda>T)r>   r]  )
Zsympy.geometry.pointrI  rD   r5   r   r@   r   r>   r  ro   )
rI  Zxxyyp1Zp2p0r}   r~   r   Zrs   rs   rt   test_issue_11238:  s    0R

rO  c                  C   sl   t ddddddg} | tj }| | }tD ]<}|| \}}t|t| ksRtt|t| ks*tq*d S )Nre   rg   rf   rh   )r   r!   ZImaginaryUnitr  Zas_real_imagrq   ro   )r}   r~   r   ZklsrI   rJ   rs   rs   rt   test_as_real_imagN  s    
rP  c                  C   sh   t dddddddddddg	} |  \}}|d t dddgksDt|d t ddddddgksdtd S )Nrf   r   rg   r   rh   r   re   )r   Zjordan_cellsro   )r   r  ZJcellsrs   rs   rt   test_deprecatedY  s    rQ  c                  C   sd   ddl m}  tdddg}tdddg}| |d	tdddgksDt| |d
tdddgks`td S )Nr   )Modr   rg   re   r   r  r  rf   rh   )Zsympy.core.modrR  r   ro   )rR  r   r   rs   rs   rt   test_issue_14489d  s
    rS  c                  C   s^   zddl m}  W n tk
r,   td Y nX tddgddgg}| |tdjjd	ksZtd S )
Nr   r&  r  rg   re   rf   rh   )dtypeZfloat64)	r	  r  r  r^   r   floatrT  namero   )r  r   rs   rs   rt   test_issue_14943m  s    rW  c                  C   s4   t ddd} td}| d dk}t|dks0td S )Nr   rg   rI   ry   r   zm[0, 0] > 0)r   r#   r  ro   )r   rI   rs   rs   rt   test_case_6913x  s    rX  c                  C   s.   t ddd} td}| ||| iks*td S )Nr   rf   rI   )r   r%   matchro   )r   rI   rs   rs   rt   test_issue_11948  s    rZ  c                  C   s   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sJtt dtdgt tdt gg} t j|  t dgtgdggt td gtdd gt gggkstt dtgdt gg}| \}}||j t dkstd S )Nrg   r   re   )r   r   r[  ro   r!   ZQRdecompositionr   r-   )r]  r  r   r   rs   rs   rt   test_gramschmidt_conjugate_dot  s     4r[  c                  C   sf   t tddd} t tddd}| |}t|| d }t|| d }||d ksVt|dksbtd S )NrI   rf   rg   rJ   ry   r   )r   r   r  r*   ro   )rI   rJ   rK   rL   r   rs   rs   rt   test_issue_8207  s    
r\  c                     sz  ddl m}  tddgddgg  ttt tttttdt tt gdtdt ggkshttddgddgg t  d t	tttt
dd t
d d gt
d d t
dd ggkstttdd	  tt fd
d	 tddddgddddgddddgddddgg  ttt  ks>ttt fdd	 tddgddgg t t
ttd  ksttdddgdddgdddgg t | tdtd  ksttddddgddddgddddgddddgg  ttt  ksttddddgddddgddddgddddgg  ttt ttt t  ksvtd S )Nr   nthrootrg   re   rf   rj   rh   c                   S   s   t dtttS r   )rG   analytic_funcr0   rN   rs   rs   rs   rt   r     r   ztest_func.<locals>.<lambda>c                      s    t  tt t S r   )rN   r_  r0   rs   r   rs   rt   r     r   r   r   c                      s     tttS r   )r_  r@   rN   rs   r   rs   rt   r     r   r   r  r:  rV  ri   )Zsympy.simplify.simplifyr^  r   r_  r?   rN   rM   ro   r5   r(   r@   r]   r  r+   r>   r,   r]  rs   r   rt   	test_func  s$    HT0" $00r`  z$Cannot create threads under pyodide.c               
   C   sL   dd } t d2 tj }|| }| s4tW 5 Q R X W 5 Q R X d S )Nc                  S   s&   t jd ksttdgg} | |  } dS r  )rX   statero   r   r   rs   rs   rt   r+    s    ztest_issue_19809.<locals>.fT)rZ   
concurrentZfuturesZThreadPoolExecutorZsubmitresultro   )r+  executorfuturers   rs   rt   test_issue_19809  s
    

rf  c                  C   s@   t ttg} t| tddftddft tjgtjggks<td S r  )r   rN   rO   r/   r!   r   ro   r   rs   rs   rt   test_issue_23276  s
    rg  (R  concurrent.futuresrb  r  collections.abcr   Z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.   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   r  rI   rJ   rK   rL   rM   rN   rO   rP   Zsympy.core.kindrQ   rR   Zsympy.matrices.determinantrS   Zsympy.matrices.exceptionsrT   rU   rV   Zsympy.matrices.kindrW   Zsympy.matrices.utilitiesrX   rY   rZ   Z$sympy.tensor.array.array_derivativesr[   Zsympy.testing.pytestr\   r]   r^   r_   r`   ra   Zsympy.utilities.iterablesrb   rc   importlib.metadatard   r  rL  r  ru   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$  r)  r/  r5  r7  r8  r9  r;  r<  r=  rA  rI  rS  r^  r_  rb  re  rl  rn  rs  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r
  r  r  r  r$  r0  r1  r5  r6  r8  r=  r>  r@  rA  rB  rF  rG  rI  rM  rN  rT  rU  rW  rX  rZ  r[  r\  r^  rd  re  rh  rl  rn  rq  rs  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  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  r2  r3  r8  r9  r>  r?  rD  rG  rH  rO  rP  rQ  rS  rW  rX  rZ  r[  r\  r`  rf  rg  rs   rs   rs   rt   <module>   s   !( 

		
$" O!,Jb-
R		:
	(	
		
 HK>
7(]%
		-%	
