a
    kh                    @   s^  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@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU d dlVmWZWmXZX d dlYmZZZ d dl[m\Z\m]Z]m^Z^ d dl_m`Z` d d	lambZbmcZcmdZd d d
lemfZf d dlgmhZhmiZimjZjmkZkmlZlmmZm d dlnmoZompZp d dlqmrZr ee%eefZsee%fZteef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- 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 Zeldd 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 Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6dd Z7el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 ZOddÄ ZPekdădŐdƄ ZQdǐdȄ ZRdɐdʄ ZSdS (      N)Hashable)G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floor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g d} | jdksJ | jdks,J | d dks<J | d dksLJ t| g dks`J t| dd d f g dksJ t| d d df ddgksJ t| d d d d f t| ksJ | d d d d f | ksJ t | | ksJ t g dg dg| ksJ t g dg df| ks,J t ddg| ksBJ t d	| ksTJ t ddgdd
gddgg| krxJ d S )N      )   rf   rg            rh   rh   rj   rh   ri   rj   rk   rh   rf   rg   )rn   rm   ri   rk   )r   rowscolslistrO    rs   R/var/www/auris/lib/python3.9/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"J t ddgddggjttksDJ t ddg jttks^J t tggjttksxJ t dt dggggjttksJ tdggjttksJ tdt dggggjttksJ d S Nrh   rf   rg   ri   r   )r   kindrX   rR   rO   rS   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 J d S )Nza:d)r   r   r   rh   rh   r   rl   )rC   r   r   r   r   todok)rJ   rK   rL   rM   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sJ d S )Nrf   rg   ri   )	r!   OneHalfrO   rP   ZerorQ   r   tolist)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sJJ d S )Nr   rh   r   rh   rf   )r   r!   r   r   rO   Ztodod)r   dictrs   rs   rt   
test_tododQ   s    r   c                      sF  t ddg d tt fdd tt fdd tt fdd tt fdd  d d	  krtg d
g dgksn J  d d	  krtddgddgddggksn J  d d  krtg d
g dgksn J  d d  kr<tddgddgddggksBn J d S )Nrg   	rh   rf   rg   ri   rj   rk         	   c                      s
     dS Nrj   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   rf   rn   rm   rh   ri   rj   r   r   r   r   r   rk   r   )r   r^   
IndexErrorr   r   r   rs   rs   r   rt   test_row_col_delW   s    6<8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sZJ | |gkslJ | |gks~J d S Nrh   rf   rg   )r   rO   rP   rQ   get_diag_blocks)rJ   rK   rL   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sJ | | ||gksJ | | ||gksJ | |||gksJ d S r   )r   rO   rP   rQ   r)   ro   rp   r   )rJ   rK   rL   ABCDrs   rs   rt   test_get_diag_blocks2n   s     4r   c                  C   sP   t ddg d} | dt ddg dks.J | dt ddg dksLJ d S )Nrg   r   r   rh   rn   rh   ri   r   )r   rowcolr   rs   rs   rt   test_row_col~   s    r   c                   C   s8   t dtg dtg dg dg dgks4J d S )Nrg   r   r   r   )rh   r   r   r   )r   rh   r   r   )r   r   rh   r   )r-   row_joinr   rs   rs   rs   rt   test_row_join   s    r   c                   C   s@   t dtg dgtg dg dg dg dgks<J d S )Nrg   r   rh   r   r   r   rh   r   r   r   rh   )r-   col_joinr   rs   rs   rs   rt   test_col_join   s    r   c                  C   sX   t g dg} tddD ]:}g d}||d td|| d |ksJ qd S )Nri   ri   ri   rj   r   ri   rg   r   )r   rangeinsertr-   
row_insertr   flat)Zr4ilrs   rs   rt   test_row_insert   s
    r   c                  C   s   t g d} tddD ]:}g d}||d td|| d |ksJ 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 g d
g dg dg dg dg dgksJ d S )Nr   r   rj   r   r   r   ri   rg   r   rk   rf   )rh   r   r   rf   rf   r   r   r   )r   rh   r   rf   rf   r   r   r   )r   r   rh   rf   rf   r   r   r   )r   r   r   rf   rf   rh   r   r   )r   r   r   rf   rf   r   rh   r   )r   r   r   rf   rf   r   r   rh   )r   r   r   rH   
col_insertr   r   r-   )Zc4r   r   rs   rs   rt   test_col_insert   s    $6r   c                      s   t dddd   g dddgt ddg d	ks8J  ddgg d
t ddg dks`J  tdtd ks|J tt fdd tt fdd d S )Nri   rg   c                 S   s   | d | S Nrg   rs   r   jrs   rs   rt   r      r   ztest_extract.<locals>.<lambda>)r   rh   rg   r   rh   rf   )r   rh   rg   ri   r   
   r   r   rf   )r   r   rf   r   r      c                      s     dgdgS )Nri   r   extractrs   r   rs   rt   r      r   c                      s     dgdgS )Nr   rg   r   rs   r   rs   rt   r      r   )r   r   r   r^   r   rs   rs   r   rt   test_extract   s    ((r   c                     s   t dddd  t dddd    ks2J     t      krvt g dg dg dg d	gks|n J tt fd
d t  t  ksJ t dd} t dd}t dd}t dd}t | |||  jdkr jdksJ d S )Nri   rg   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   rh   rf   r   rh   rf   r   rh   rf   )	rg   ri   rj   rg   ri   rj   rg   ri   rj   )	rk   r   r   rk   r   r   rk   r   r   )	r   r   r   r   r   r   r   r   r   c                      s      S N)hstackrs   r   r~   rs   rt   r      r   r   rh   rf   rk   )r   r   r^   rW   rH   ro   rp   )M1M2ZM3ZM4rs   r   rt   test_hstack   s"    "r   c                      s   t dddd  t dddd    ks2J     t      krt g dg dg dg d	g dg dg dg d	g dg dg dg d	gksn J tt fd
d t  t  ksJ d S )Nri   rg   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   ri   rj   rk   r   r   r   r   r   c                      s      S r   )vstackrs   r   rs   rt   r      r   )r   r   r^   rW   rs   rs   r   rt   test_vstack   s&    "r   c                  C   s\   t ttfdf} | tsJ | tr,J | ts:J t dtfdf} | trXJ d S )Nrf   rg   rf   )r   rO   rP   ZhasrQ   r#   r   rs   rs   rt   test_has   s    r   c                  C   s  t d} tddddg du s$J tddd| d d|   d t| d d  d| t t |  t dg	}| du sxJ |jddd u sJ |jd	d
 dd u sJ tdddd |D }|jdddu sJ tdddd tjgt|dd   D }| du s
J d S )NrO   rf   rh   Frg   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,   .0rO   rs   rs   rt   
<listcomp>   r   z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  qS rs   r   r   rs   rs   rt   r      r   )rC   r   is_anti_symmetricrP   r!   r   rq   )rO   r   rs   rs   rt   test_is_anti_symmetric   s    D*r   c                  C   s   t dtgt dgg} | js J t dt tgt dgg} | jdu sHJ t ttgt dgg} | jd u slJ t tdgt dgg} | jdu sJ d S )Nrh   rf   Fr   r   Zis_hermitianrO   rJ   rs   rs   rt   test_is_hermitian   s    
r   c                  C   s   t ttgttgg} |  du s$J t g dg dg} |  du sHJ t g dddtdgg} |  du spJ t dtd	gg} |  du sJ t g d
g} |  du sJ t dgtgd	gg} |  du sJ t dgdgd	gg} |  du sJ d S )NTrh   rf   rg   ri   rj   rk   r   r   Frj   rk   r   rh   rg   rn   rf   )r   rO   Zis_symbolicr   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.J |js8J d S Nrh   rf   )r   Z	is_squarer   rs   rs   rt   test_is_square  s    
r   c                  C   s<   t ddg d} |  sJ t ddg d} |  r8J d S )Nrf   r   rh   rh   r   r   rh   r   rh   )r   is_symmetricr   rs   rs   rt   test_is_symmetric  s    r   c                  C   s   t g dg dg dg} | js$J t ddg d} | js>J t ddg d} | jdu s\J | jdu sjJ t g dg dg dg} | jrJ d S )	Nrg   ri   rh   rf   ri   rj   r   rg   )	rg   rf   r   ri   ri   rh   rh   rj   rf   )	rg   rf   r   ri   ri   rh   rh   rj   rf   Frg   rh   rf   )r   is_upper_hessenbergis_lower_hessenbergr   rs   rs   rt   test_is_hessenberg   s    

r   c                  C   s\   t tddg d h dks$J tddd} t tdd| dddg | dhksXJ d S )	Nrf   r   rh   rf   rg   >   rh   rf   rg   rO   Trealr   rh   )setr   valuesr#   rr   rs   rs   rt   test_values-  s    r   c                  C   s   t dtdgg dg} | jt ddgtdgddggks:J | jt dt dgg dgks\J | j|  ksnJ | j| jjksJ | jt ddgt dgddggksJ d S )Nr   rj   rh   rf   r   rh   rf   )r   r   Tr   	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*J |  t dt ggksFJ d S )NFevaluater   rf   )r   r   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 s2J t fddtdD sPJ t fddtdD snJ d S )	Nrf   rh   rj   rk   c                 3   s&   | ]}   |  |   kV  qd S r   evalfr   r   r   rs   rt   	<genexpr>O  r   ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}  d |  |  d kV  qdS rf   Nr  r  r   rs   rt   r  P  r   c                 3   s*   | ]"}  d |  |  d kV  qdS r  nr  r   rs   rt   r  Q  r   )r   rA   allr   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sPJ d S )NF, Gclsrf   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   rC   r   r   replace)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sRJ | dd d	d	 ddiksJ d S )
Nr
  r  rf   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   rh   r  )r   r  rM   rs   r  rt   test_replace_map\  s
    r  c                     s   zddl mm}  W n ty.   td Y n0 tddgddgg ddgddgg}|  |sjJ |  dd	|sJ 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 ndarraysrh   rf   rg   ri   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   intre   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 J | d| d  krn| d  krnt dkstn J | d| d	  kr| d
  krt dksn J |  | d  kr| d  krt dksn J d S )Nrh   rf   rg   ri   r   r   rk   ))ri   rg   rf   rh   r   r   ))rf   ri   rh   rg   )rg   rh   )ri   rf   )r   Zrot90r   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s4J 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svJ 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sJ t tdgtt dggtdtdit ddgddggksJ t tt ggjttd ttd idd	t td td  ggks>J d S )
Nrh   ri   rj   rf   r   r   r(  T)Zsimultaneous)r   rO   subsrP   rs   rs   rs   rt   	test_subsw  s    4(($(r,  c                     s  t ddg d 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 g d
g dg dgksn J  ddgdd	gg}  jddgdd	ggdd|   krt g dg dg dgksn J  jddgdd	ggdd}  jddgdd	ggddd|   krHt g dg dg dgksNn J  g dt g d
g dg dgks|J ddlm}  |g dt g d
g dg dgksJ d S )Nrg   ri   )rh   rf   rg   ri   rj   rk   r   r   r   r   r      c                      s     ddggS )Nr   rj   )permuters   r   rs   rt   r     r   ztest_permute.<locals>.<lambda>c                      s     tdS )NrO   )r.  r#   rs   r   rs   rt   r     r   r   rf   rh   r   r   r   r   r-  r   rp   )orientation)rf   rg   rh   ri   )rk   r   rj   r   )r   r   r   r-  Zbackward)	direction)r0  r1  )rg   rh   rf   ri   )r   rj   rk   r   )r   r   r   r-  )rh   rf   r   rg   )Permutation)	r   r^   r   
ValueErrorZpermute_rowsr.  Zpermute_colsZsympy.combinatoricsr2  )rK   r2  rs   r   rt   test_permute  sH     "&r4  c                  C   s   t g dg dg dg dg} | d}|t g dg dg dg dgksRJ | d}|t g dg dg dg dgksJ |  }|t g dg dg dg dgksJ d S )Nrh   rh   rh   rh   rf   r   r   rh   rh   r   r   r   rh   r   r   r   r   r   )r   rh   rh   rh   )r   Zupper_triangular)r   Rrs   rs   rt   test_upper_triangular  s6    

r:  c                  C   s   t g dg dg dg dg} |  }|t g dg dg dg dgksPJ | d}|t g dg dg dg dgksJ | d}|t g dg dg dg dgksJ d S )Nr5  rh   r   r   r   rh   rh   r   r   rh   rh   rh   r   rf   r   r8  )r   Zlower_triangularr   Lrs   rs   rt   test_lower_triangular  s6    

r@  c                      s   t g dtttgdt dtt gg    t g ddt dt dt gdt ddt t ggkshJ t ddddgtt fdd	 d S )
Nrn   rf   rf   ri   rk   ri   rh   c                      s     S r   rs   rs   r   r  rs   rt   r     r   ztest_add.<locals>.<lambda>r   rO   rP   rQ   r^   rW   rs   rs   rD  rt   test_add  s    &BrF  c                  C   s   t ddgddgg} | dtks&J | dtks8J ztd W n" tyV   Y n tyf   Y n0 ztd W n" ty   Y n ty   Y n0 d S )Nrh   rf   rg   ri   z2 @ aza @ 2)r   
__matmul__NotImplemented__rmatmul__evalSyntaxErrorr#  r   rs   rs   rt   test_matmul  s    rL  c                  C   s   G dd dt } tddgddgg}|  }|| t|d| gd| d| ggksVJ || t|d| gd| d| ggksJ 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>.fooFrl   N)__name__
__module____qualname__Z	is_MatrixZis_MatrixLikeshapers   rs   rs   rt   foo  s   rQ  rh   rf   rg   ri   N)r   r   )rQ  r   rK   rs   rs   rt   test_non_matmul	  s
    ,rR  c                  C   s.   t ddddg} |  t ddddgks*J d S )Nrh   rf   r   r   r   r  rs   rs   rt   test_neg  s    rT  c                  C   s0   t ddddg} | |  t ddddgks,J d S )Nrh   rf   r   rS  r  rs   rs   rt   test_sub  s    rU  c                  C   s:   t ddddg} | d t ddtjtdd gks6J d S r   )r   r!   r   r  rs   rs   rt   test_div#  s    rV  c                   C   sj   t tddg dksJ t tdg dks6J ttdtksLJ ttjdtdtksfJ d S )Nrf   rh   r   r   rh   r  )rq   r   r-   typers   rs   rs   rt   test_eye(  s    rY  c                   C   s   t tddg dksJ t tdg dks6J tddtg dg dgksZJ ttdtkspJ ttjdtdtksJ d S )Nrf   r5  rg   rh   rh   rh   r  )rq   r   r4   rX  rs   rs   rs   rt   	test_ones/  s
    $r[  c                   C   s   t tddg dksJ t tdg dks6J tddtg dg dgksZJ ttdtkspJ ttjdtdtksJ d S )Nrf   r8  rg   r   r  )rq   r   rH   rX  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 g dg ddddtddgddtdddgdddddtgddddtdggksJ  t g dg ddddtdddgddtddddgdddddtdgddddtdtgddddtttggks J  t g dg ddddtdddgddtdtddgddtttddgddddddtgdddddtdggksJ t tttg t ddgdd	ggt d
dgg dt tdddddgtdddddgtdddddgg dg dg dg dgks$J tt fdd dt dggksVJ dddt ddgddggks|J dddt ddgddggksJ ddddt ddgddgddggksJ ddg t ddgddggksJ t ddgt dgdggksJ dddgd	gdddgddgd	ggdd  krrt ddgddgd	dggksxn J tdt ksJ tdt dt ksJ t g dt dddksJ t jg dddjdksJ t g dgjdksJ t jg dgddjdks$J t g dggjdksBJ t t	ddddt g dg dgkspJ t t	ddddt ddgddgddgddggksJ d S )Nrh   rf   rg   )rh   rf   r   r   r   r   )rf   rg   r   r   r   r   r   )rh   rf   r   r   r   r   r   )rf   rg   r   r   r   r   r   ri   rj   rk   r   )r   r   r   r   r   r   )r   r   rh   rf   r   r   )r   r   rg   ri   r   r   )r   r   r   r   rj   rk   c                      s    dddS )Nr   rj   ro   rs   rs   rJ   rK   rL   r)   rs   rt   r   l  r   z test_diag_make.<locals>.<lambda>r]  )rp   )ro   rp   F)unpackr  rn   r)  r&  r   r   rh   r   )r   r   r   rf   )
r   r)   rO   rP   rQ   r^   r3  rX  rP  r4   rs   rs   r^  rt   test_diag_make?  s     		&&.
" ra  c                     sB  t ddtd } | dks*J t| dks:J tddksPJ tddksfJ td	d
ks|J t tksJ tddddi}t| t|ksJ tt|ksJ 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>J d S )Nrg   r   r   )r   ri   r   rh   rh   rj   r   )rg   r   rf   rf   rl   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  r6   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  tuplerX  r"   r^   r3  r4   r&   ro   rp   )rM   srs   )r   r   rt   test_diagonal  s(    
ri  c                   C   s  t ddt jddd  kr|t jddd  kr|t jdddd  kr|t jdddd  kr|t g dg d	g d
gksn J t jddddt g dg dg dgksJ 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
J d S )Nrg   rf   
eigenvalue)sizerk  upper)Zband)rl  eigenvalrk  rf   rh   r   )r   rf   rh   r   lowerrf   r   r   r   r   c                   S   s
   t dS Nrf   r   jordan_blockrs   rs   rs   rt   r     r   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @rf   rs  rs   rs   rs   rt   r     r   c                   S   s   t jddS )Nrf   rj  rs  rs   rs   rs   rt   r     r   c                   S   s   t jdddS )Nrf   ri   )rk  rn  rs  rs   rs   rs   rt   r     s   )rl  rn  )r   rt  r^   r3  rs   rs   rs   rt   test_jordan_block  s:    
ru  c                     s$  t ddgddgg} | t dgdggt dgdgggks@J | jt dgdggddt dtd d gtdd gggksJ | 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sJ | t dgdggt dgdggt dgdgggksJ | t dgdggg ks4J t g dg dg dg}t dgdggt dgdggt dgdggg |j  t dgdggt tddgtddgggksJ t g dt g dt g dg tt fdd t g dt g dt g dg tt fdd d S )Nrh   rf   rg   ri   T	normalizerj   r   rk   r   )r   rh   r   )rg   rk   r   )r   rj   rf   r   r         r   rn   )rh   ri   rj   c                      s   t j ddiS NZ	rankcheckTr   orthogonalizers   vecsrs   rt   r     r   z$test_orthogonalize.<locals>.<lambda>rm   r   c                      s   t j ddiS r{  r|  rs   r~  rs   rt   r     r   )r   r}  rA   r   r^   r3  rD  rs   r~  rt   test_orthogonalize  s*    ,$"*"
 .*
""r  c               
   C   s   t d\} }| t g dg dg dgks0J |t g dg dg dgksRJ t d\} }| t g dg dg d	g d
g dg dg dgksJ |t g dg dg dg d
g dg dg dgksJ d S )Nrh   )r   rh   r   rh   r   rh   )r   rh   rh   rh   rh   r   rg   )r(  rh   r   r   r   r   r   )rh   r   rh   r   r   r   r   )r   rh   r   rh   r   r   r   )r   r   rh   r   rh   r   r   )r   r   r   rh   rh   rh   r   )r   r   r   r   rh   rf   rh   )r   r   r   r   r   rh   rg   )rg   rh   r   r   r   r   r   )rh   rf   rh   r   r   r   r   )r   rh   rh   rh   r   r   r   )r   Z	wilkinson)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sFJ tddt| |  f|ddfdd| d d ff}|| dtd|ddfd	fksJ d S )
Nx yrf   rh   rj   ri   r   r   )rh   ri   rh   )r   rj   rh   )rC   r   limitr   r@   )rO   rP   r   r   rs   rs   rt   
test_limit  s
    &0r  c                      sN   t g dg dg dg g dtt fdd tt fdd d S )Nrn   rm   r   rZ  c                      s     S r   rs   rs   r   vrs   rt   r     r   z"test_issue_13774.<locals>.<lambda>c                      s     S r   rs   rs   r  rs   rt   r     r   )r   r^   r#  rs   rs   r  rt   test_issue_13774   s    r  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sJ ttd	|| g td
|  gd	| ggksJ ttd	||| g td
d
|  gd	d
| gd
d	| ggksJ d S )NrO   rP   c                   S   s
   t dS Nrh   )r   	companionrs   rs   rs   rt   r   
  r   z test_companion.<locals>.<lambda>c                      s   t tdg S r  r   r  r   rs   rr   rs   rt   r     r   c                      s   t tddg S )Nrf   rh   r  rs   rr   rs   rt   r     r   c                      s   t t   gS r   r  rs   rO   rP   rs   rt   r     r   zc0:3rh   r   )r#   r^   r3  rC   r   r  r   )Zc0c1c2rs   r  rt   test_companion  s    $$r  c                  C   s   t d\} }}t| ||g}|t| ||gg d}|tdgdgdggksRJ t| | | | | g| | | | | g| | | | | gg}|t| gdg}|tg dg dg dgksJ d S )Nzx, y zrn   rh   rf   rg   )rh   rh   rh   rh   rh   )rC   r   r+  zip)rO   rP   rQ   r   r   rs   rs   rt   test_issue_10589  s    ,r  c                  C   sf   G dd dt } tddg d}| ddg d}|| }t|| sFJ |tddgddggksbJ d S )	Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{Gz?N)rM  rN  rO  r   Z_op_priorityrs   rs   rs   rt   Foo#  s   r  rf   r   r   r         )r   r   
isinstance)r  rJ   rK   rL   rs   rs   rt   test_rmul_pr19860"  s    r  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 )Nrh   rf   rg   ri   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   r  rs   rt   r   5  r   )r   r   r^   r#  rs   rs   r  rt   test_issue_189561  s    r  c                  C   sP   G dd dt } tddddg}||  ks.J G dd d| }|| ksLJ 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   )r  r   rs   rs   rt   __getitem__>  s    z"test__eq__.<locals>.My.__getitem__N)rM  rN  rO  r  r  rs   rs   rs   rt   My9  s   r  rf   rh   c                   @   s   e Zd Zdd ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | S r   rS  r  rs   rs   rt   _sympy_C  s    z$test__eq__.<locals>.My_sympy._sympy_N)rM  rN  rO  r  rs   rs   rs   rt   My_sympyB  s   r  )objectr   )r  rJ   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>J |jdkrVt|jtu sZJ |jdkrrt|jtu svJ | d st|	 t
ttfv sJ qt| tu sJ qd S )Nrg   rf   )rg   rf   c                 s   s   | ]}t |tu V  qd S r   )rX  r!  r  rs   rs   rt   r  L  r   ztest_args.<locals>.<genexpr>)	enumerateall_classesrH   rP  r  ro   rX  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 ]L} | dd}t  |j}W d    n1 s:0    Y  || ksJ qttfD ]L} | dd}t  |j}W d    n1 s0    Y  ||	 ks^J q^d S Nrg   rf   )
r   r   rH   rb   Z_matr   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s4J d S r   )r   rO   rP   rQ   )r  rs   rs   rt   test_divisionb  s    r  c                      s   t g dtttgdt dtt gg    t g ddt dt dt gdt ddt t ggkshJ t ddddgtt fdd	 d S )
Nrn   rf   rA  rB  ri   rC  rh   c                      s     S r   rs   rs   rD  rs   rt   r   k  r   ztest_sum.<locals>.<lambda>rE  rs   rs   rD  rt   test_sumg  s    &B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<J t dddtg} t dddttg}t| |kspJ d S )Nrh   r   rf   r(  rg   )r   rO   rP   absr   rD  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 J d S )N)rh   rf   r)  r  )rg   r   rf   ri   rk   rh   )r   addrJ   rK   rs   rs   rt   test_additionv  s    r  c               	   C   s(  t tfD ]f} | ddtd}||d d d d f ks:J |dd d f t ddg dks^J |d d df t g dks~J |ddgd d f t g dg dgksJ |ddgdf |ddgdgf ksJ |dddgf |dgddgf ksJ |d d ddgf t ddgdd	gd
dggks*J |d dks<J |ddd d f t g dg dgksjJ |d d ddf t ddgdd	gd
dggksJ |d d ddf |ddgdf ksJ |dd d df |dddgf ksJ | ddtd}|g dd d f t g dg dg dg dg dgks>J |d d g df t g dg dg dgksJ qtd}d|d< d|d< d	|d< |ddgdgt dgdggksJ |ddgg dt g dg dgksJ |g dg dt g dg dg dg dgks$J d S )Nrg   r   rh   r   r   r   r   rf   ri   rk   r   ry   )r   rf   rh   rf   rh   r   )rg   rj   ri   rj   ri   )rk   r   r   r   r   r  rz   rf   r   )rf   rf   rf   r   )rh   r   rh   rf   )rf   r   rh   r   rf   r   r   r   )r   r   rg   r   )r   ri   r   ri   )r   r"   r   rH   r   )r   rJ   rs   rs   rt   test_fancy_index_matrix  sZ    $ ,&&4.4((
r  c                     s4  t d t dtt fdd tt fdd   } | d dksNJ | d d	ks^J | d
 dksnJ | d dks~J | d dksJ | d dksJ   } | d dksJ | d d	ksJ | d
 dksJ | d dksJ | d dksJ | d dksJ t | }| | ks&J |d dks8J |d dksJJ |d
 dks\J |d dksnJ |d dksJ |d dksJ tt fdd td } t| t sJ | d tksJ | d d	t ksJ | d
 dt ks J | d dksJ t }| |ks(J d } t| t s@J | d dksRJ | d dksdJ | d
 dksvJ | d dksJ t t	dgdt	gg}|d	 |ksJ t t	t	gddgg}|d	 t t
t
gt
t
ggksJ t tdd}tdd	 }t |||g}||t |g|g|ggks0J d S )N)r  r)  r   rk   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   rf   r{   rk   rl   r     r%  r   ri   c                      s
   t  S r   )r2   rs   r  rs   rt   r     r   rO   rg   rj   r   r  rh   )r   r^   rW   r#  r2   Zmultiply_elementwiser#   r  rO   r5   r3   r4   r   )rL   hr  r   r   Z_hr   rs   r  rt   test_multiplication  sj    
"
r  c                	      s  t tdd  tddgddgg  d tddgd	d
ggksBJ tg dg dg dg  d tg dg dg dgksJ  d tdksJ  d  ksJ tdggd d dd ksJ tddgddggtd tddgddggksJ tddgddgg  jddd jdddks0J  td tddgdd ggksVJ tdd! tdkspJ td dgd"d#gg  tj d d  g d$ksJ tddgd%dgg  tj d  ksJ tddgddggtj tddgtjdggksJ tddgddggd& tddgd&dggks8J dd'lm	 tdt
gddgg tdt
 gddggkszJ ttt
gdtgg tt t
td    gdt ggksJ tt
 t
d   t
 d  t
   dt
d   gdt
 t
d   gddt
 ggs2J 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sJ tddgddgg  td dksJ tdgg  d td(gg  kr td  kr dksn J tg d)g d*g d+g d,g d-gt tfd.d t td/d  tg d0g d1g d2g  d3 tg d2g d2g d2gksJ t t fd4d t t fd5d td6dgddgg  d3 td7d8gd9d:ggksJ tg d1g d1g d1g  d3 tg d1g d1g d1gks<J tg d0g d1g d1g  d3 tg d1g d1g d1gks~J td;d<d=t  tsJ td;d<d<d>t t fd?d td;d<d<d@  ttdtdtd td d gdtddtd gg d1gks,J  d  tg d1g d1g d1gksXJ t t fdAd tg d1g dBg dCg  dD tg dEg dFg dGgksJ  dD  d ksJ tg d0g dHg d2g td;  d  d ks
J t tfdId   d  ks8J tg d2g d2g d2g td;d<d<dJ   ksrJ td;d<d<d@  td d d ksJ   dtdksJ   dtdksJ tg dKg dLg dMg  dN tdOdOdOksJ  t tdt dt dt ks<J tg d0g d1g d1g t t fdPd t t fdQd ttjtjgtjtjgg  tj  ksJ 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sJ d S )RNc                   S   s   t dd S Nr  rf   rS  rs   rs   rs   rt   r     r   ztest_power.<locals>.<lambda>rf   rg   ri   rj   i  i  i,*  i7  )rf   rh   rg   )ri   rf   ri   )rk   r-  rh   )i"  i     )i  i  ip  )i  i  i  r   rh   d   ry   r   r   r  r     Zcayleymethodmultiplyr   r-     !   i 0   9   )rj   rf   ri   r   r   g      ?r  i   )rg   r   r   r   r(  )r   r(  r(  r   rg   )r   rg   r   rg   r   )r   r   rg   r   rg   )rg   r   r   rg   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 )Nrh   rg   )r   r  r!   rs   rs   rs   rt   r   (  r   r   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   )rg   r   rh   )ri   rg   rh   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                      s     d S )Nr   )r+  r   rs   )Anr  rs   rt   r   E  r   )r  positiverq  )r   rf   r   r   r  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^   rV   r   r-   r   powr!   r   	sympy.abcr  rJ   rK   r  Z_eval_pow_by_recursionrU   r3  r#   r  r   r   r+  r   r)   rH   r   rs   rs   )r   r  r   r  rt   
test_power  s     & 4"& 626J<$0&("((*,(&&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sJ W d    n1 s0    Y  d S )Nrh   Trf   )r   rO   r[   r+   r,   r   rs   rs   rt   $test_issue_17247_expression_blowup_1\  s    $
00r  c                  C   sp   t dt dt gdt dt gg} td0 |  \}}|| |  sNJ W d    n1 sb0    Y  d S Nrh   T)r   rO   r[   jordan_forminv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` | d t dtd  d ddtd   gddtd   dtd  d ggks~J W d    n1 s0    Y  d S )Nrh   Tr  l                )r   rO   r[   r   rs   rs   rt   $test_issue_17247_expression_blowup_3k  s    $
r  c                  C   sP   t td} td( | d t tdks.J W d    n1 sB0    Y  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!   r[   r   rs   rs   rt   $test_issue_17247_expression_blowup_4s  s    
r  c                  C   s   t dddd } tdT | dttd ddt  td   dt td	   td
dks^J W d    n1 sr0    Y  d S )Nrk   c                 S   s   dd| |  t   S Nrh   r   r  r   rs   rs   rt   r     r   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>TrO   rj   $   ri   ZEXdomain)r   r[   charpolyr   rO   r   r   rs   rs   rt   $test_issue_17247_expression_blowup_5  s    
r  c                  C   sX   t dddd tdD } td" | ddks6J W d    n1 sJ0    Y  d S )Nr   c                 S   s   g | ]}t | qS rs   rr   r  rs   rs   rt   r     r   z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>@   TZbareissr   r   r   r[   detr   rs   rs   rt   $test_issue_17247_expression_blowup_6  s    
r  c                  C   sN   t dddd } td" | ddks,J W d    n1 s@0    Y  d S )Nrk   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   r[   r  r   rs   rs   rt   $test_issue_17247_expression_blowup_7  s    
r  c                  C   sX   t dddd tdD } td" | ddks6J W d    n1 sJ0    Y  d S )Nr   c                 S   s   g | ]}t | qS rs   rr   r  rs   rs   rt   r     r   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X |  t g dg dg dg dg dg dg dg dgd	fkslJ W d    n1 s0    Y  d S )
Nr   c                 S   s   g | ]}t | qS rs   rr   r  rs   rs   rt   r     r   z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>r  T)rh   r   r   r   r(  r   r   r  r   rh   rf   rg   ri   rj   rk   r   r   r   r   r   r   r   r   r   rz   )r   r   r[   rrefr   rs   rs   rt   $test_issue_17247_expression_blowup_9  s    
r  c                  C   sP   t dddd } td$ | dddks.J W d    n1 sB0    Y  d S )Nrk   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   r[   Zcofactorr   rs   rs   rt   %test_issue_17247_expression_blowup_10  s    
r  c                  C   sZ   t dddd } td. |  t dddgd ks8J W d    n1 sL0    Y  d S )Nrk   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   r[   Zcofactor_matrixr   rs   rs   rt   %test_issue_17247_expression_blowup_11  s    
r  c                  C   s\   t dddd } td0 |  dddt dddiks:J W d    n1 sN0    Y  d S )Nrk   c                 S   s   dd| |  t   S r  r  r   rs   rs   rt   r     r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Trh   r   ri   )r   r[   Z	eigenvalsr   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 g dgfksJ |d d ttdtd   d ksJ |d d dksJ |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s|J |d d ttdtd   d ksJ |d d dksJ |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s|J d S )	Nr   rh   rf   )r   r   r   rh   FT)deepZnumerr   )r   rO   Z
eigenvectsrA   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g dg dg dg dg dg dgksJ W d    n1 s0    Y  d S )Nr   rh   ri   Tr   r  )r   rO   r[   Zechelon_formr   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 |  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sJ W d    n1 s0    Y  d S )Nr   rh   ri   Tr   )r   rO   r[   Zrowspacer   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sJ W d    n1 s0    Y  d S )Nr   rh   ri   T)r   rO   r[   Zcolumnspacer   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J W d    n1 s20    Y  d S )Nr   c                 S   s   g | ]}t | qS rs   rr   r  rs   rs   rt   r     r   z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>r  Trh   r   r   rf   r(  rg   r   ri   r   rj   r  rk   r'  )r   r   r[   Z	nullspacer   rs   rs   rt   %test_issue_17247_expression_blowup_17  s    &&&&&&r  c                  C   sl   t dddt dt gd dt dt gd  d } td |  rJJ W d    n1 s^0    Y  d S )Nrk   rh   rg   T)r   rO   r[   is_nilpotentr   rs   rs   rt   %test_issue_17247_expression_blowup_18  s    4
r  c                  C   sD   t td} td |  r"J W d    n1 s60    Y  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!   r[   is_diagonalizabler   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g dg dg dgt g dddt ddgddtd dgdddtd ggfksJ W d    n1 s0    Y  d S )	Nrh   r   T)rh   r   r   r   r=  r7  r  rf   )r   rO   r[   diagonalizer   rs   rs   rt   %test_issue_17247_expression_blowup_20*  s(    
r  c                  C   sT   t td} td, | jddt tdks2J W d    n1 sF0    Y  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!   r[   r  r   rs   rs   rt   %test_issue_17247_expression_blowup_21=  s    
r  c                  C   sT   t td} td, | jddt tdks2J W d    n1 sF0    Y  d S )Nr  TLUr  r  r  r   rs   rs   rt   %test_issue_17247_expression_blowup_22K  s    
r
  c                  C   sX   t td} td0 | jdd t tdks6J W d    n1 sJ0    Y  d S )Nr  TADJr  r  )r   r!   r[   r  r,   r   rs   rs   rt   %test_issue_17247_expression_blowup_23Y  s    
r  c                  C   sT   t td} td, | jddttdks2J W d    n1 sF0    Y  d S )Nr  TCHr  r  r"   r!   r[   r  r   r   rs   rs   rt   %test_issue_17247_expression_blowup_24g  s    
r  c                  C   sT   t td} td, | jddttdks2J W d    n1 sF0    Y  d S )Nr  TLDLr  r  r  r   rs   rs   rt   %test_issue_17247_expression_blowup_25u  s    
r  c                  C   sH   t td} td  |  dks&J W d    n1 s:0    Y  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]]Tri   r   r!   r[   rankr   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L |  \}}| t td ksJ |t tdksJ W d    n1 s0    Y  d S )Nr   rh   Ta  [
            [    0,  4*x/(x**2 - 2*x + 1), -(-17*x**4 + 12*sqrt(2)*x**4 - 4*sqrt(2)*x**3 + 6*x**3 - 6*x - 4*sqrt(2)*x + 12*sqrt(2) + 17)/(-7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 + 8*x**3 - 2*x**2 + 8*x + 6*sqrt(2)*x - 5*sqrt(2) - 7), -(12*sqrt(2)*x**4 + 17*x**4 - 6*x**3 - 4*sqrt(2)*x**3 - 4*sqrt(2)*x + 6*x - 17 + 12*sqrt(2))/(7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 - 8*x**3 + 2*x**2 - 8*x + 6*sqrt(2)*x - 5*sqrt(2) + 7)],
            [x - 1, x/(x - 1) + 1/(x - 1),                       (-7*x**3 + 5*sqrt(2)*x**3 - x**2 + sqrt(2)*x**2 - sqrt(2)*x - x - 5*sqrt(2) - 7)/(-3*x**3 + 2*sqrt(2)*x**3 - 2*sqrt(2)*x**2 + 3*x**2 + 2*sqrt(2)*x + 3*x - 3 - 2*sqrt(2)),                       (7*x**3 + 5*sqrt(2)*x**3 + x**2 + sqrt(2)*x**2 - sqrt(2)*x + x - 5*sqrt(2) + 7)/(2*sqrt(2)*x**3 + 3*x**3 - 3*x**2 - 2*sqrt(2)*x**2 - 3*x + 2*sqrt(2)*x - 2*sqrt(2) + 3)],
            [    0,                     1,                                                                                            -(-3*x**2 + 2*sqrt(2)*x**2 + 2*x - 3 - 2*sqrt(2))/(-x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x + 1 + sqrt(2)),                                                                                            -(2*sqrt(2)*x**2 + 3*x**2 - 2*x - 2*sqrt(2) + 3)/(x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x - 1 + sqrt(2))],
            [1 - x,                     0,                                                                                                                                                                                               1,                                                                                                                                                                                             1]]a  [
            [0, 1,                       0,                       0],
            [0, 0,                       0,                       0],
            [0, 0, x - sqrt(2)*(x - 1) + 1,                       0],
            [0, 0,                       0, x + sqrt(2)*(x - 1) + 1]])r   rO   r[   r  r,   r!   r  rs   rs   rt   %test_issue_17247_expression_blowup_27  s    
r  c                  C   sL   t td} td$ |  tdks*J W d    n1 s>0    Y  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!   r[   Zsingular_valuesr   rs   rs   rt   %test_issue_17247_expression_blowup_28  s    
r  c                  C   sH   t td} td  |  dks&J W d    n1 s:0    Y  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 g d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	g dddddddddtd d g	g dddddddddtd d g	gdfksJ W d    n1 s0    Y  d S )N)	rh   rh   rh   rh   rh   r   rh   r   r   rh   rf   r   r   r'  r   r   r(  rg   r   ri   rx  r-  T)	r   r   r   r   rh   r   r   r   r   )	r   r   r   r   r   r   rh   r   r   r  )r   rA   r[   r  r!   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 d    n1 sT0    Y  t tg   krtddg ksn J tg gtd	dg ksJ tg g gtd
dg ksJ t 4 td	gdgg d	gdggksJ W d    n1 s0    Y  t : td	gdggj d	ggdggks8J W d    n1 sN0    Y  tdgg} t  tj| d< W d    n1 s0    Y  tt	dgddgg}|}|j
|jksJ |j
d
ksJ |d d  t	dddgksJ td
d
t	dddg}|}|j
|jksJ |j
d
ks(J |d d  t	dddgksFJ ||ksTJ t||ksfJ td
dtd	d}td	dtdd}t||g}|j
dksJ |jdksJ |d d  g dksJ ttd
td
ksJ tttd
ttd
ksJ t|| ks"J tt|t| ks@J |t|usRJ tdd
tddd
 gtd
dd td
d
d gg}t|} | tg dg dg dg dg dgksJ |  |ksJ t|dd |ksJ tdd
d
}td
|g}t|td	d	gd	d	g|d |d g|d |d ggks@J t 4 t|dd dd |D kslJ W d    n1 s0    Y  ttd
tdgttd
gksJ 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sJ d S )Nc                   S   s   t ddtdS )Nrj   r  )r   r   rs   rs   rs   rt   r     r   ztest_creation.<locals>.<lambda>c                   S   s   t ddg S )Nrj   r   rS  rs   rs   rs   rt   r     r   c                   S   s   t dd S r  rS  rs   rs   rs   rt   r     r   rj   r  rg   r   rh   rf   rc  ry   r   r   r   ri   )rh   rh   rf   rf   rf   )rg   rg   rg   ri   ri   Fr   r   rz   r{   rl   c                 S   s   g | ]
}|gqS rs   rs   r  rs   rs   rt   r   #  r   z!test_creation.<locals>.<listcomp>c                   S   s   t tdtddgS )Nrf   r   rg   r   r4   rs   rs   rs   rt   r   '  r   c                   S   s   t tdtddgS )Nrf   rg   r   r  rs   rs   rs   rt   r   (  r   )rj   rk   rk   )r^   r3  r   r   rb   r   r   r!   ZEmptySetrO   rp   ro   r   r-   r   as_immutableZ
as_mutabler4   r   )
r   rJ   r   rK   Zc23Zc13rL   datr   r   rs   rs   rt   test_creation  s    
*(BJ*"4D(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 g dg dg d	g d
gks~J d S )Nrg   rf   rh   ri   rj   rk   r   )rh   rf   rf   rf   rg   rg   )ri   rf   rf   rf   rj   rj   )rk   rk   r   r   rj   rj   )r   Z	irregularr4   rs   rs   rs   rt   test_irregular_block0  s    &0r  c                  C   s  t d} | d dd df t dks(J | ddddf tdksHJ tdddd }|dd d f tdddksxJ |dddf tddd	ksJ tg d
g dg dg dg}|d d df tddg dksJ |dd d d f tg dg dgks
J d S )Nri   rg   rf   r   c                 S   s   | | S r   rs   r   rs   rs   rt   r   >  r   ztest_slicing.<locals>.<lambda>rh   r   r   r   )ri   rj   rk   r   )r   r   r   r   )r-        r  r   )rg   r   r   r  r   )r-   rH   r   )m0r}   r~   rs   rs   rt   test_slicing9  s         $r!  c                  C   s   t d} td| ddddf< | tdks0J td| d dd df< | tdksXJ tddd| d d df< | tdksJ t d| d d d d f< | t dksJ g d| d d d d f< | tdksJ ddg| d ddf< | td	ksJ d S )
Nri   rf   )r8  r8  r`  r7  rh   r   r   )r;  )rf   rh   r   r   )rg   r   rh   r   )ri   r   r   rh   r   r   r/  r  r  r     ))r   rf   rg   ri   )r   rk   r   r   r/  r#  )rH   r-   r   r   rs   rs   rt   test_submatrix_assignmentG  s    r%  c                  C   sh   t d} | ddtdddks$J tdddd }|ddtdksLJ |d	d
tdksdJ d S )Nrg   rh   r   )	rh   r   r   r   rh   r   r   r   rh   ri   c                 S   s   | | S r   rs   r   rs   rs   rt   r   f  r   ztest_reshape.<locals>.<lambda>)r   r   )rg   ri   rf   r   rf   rk   ))r   rh   rf   rg   rh   rf   )rg   ri   rf   rg   ri   rj   )r-   reshaper   r   r}   rs   rs   rt   test_reshapec  s    r(  c                  C   sD   t d} | dd t dd ks&J | dd tdks@J d S )Nrg   c                 S   s   d|  S rr  rs   rr   rs   rs   rt   r   n  r   z test_applyfunc.<locals>.<lambda>rf   c                 S   s   dS Nr   rs   rr   rs   rs   rt   r   o  r   )r-   	applyfuncrH   )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sJ tddd}t tt| gjddt t|tt|  gksJ t g dg dg d	g t d
d
t	ddgg dg dgksJ d S )Nrf   rg   rJ   Tr   )complexr   )r   r   r   r   rh   )r   rh   r   r   )
r   rO   rP   r,   r#   r+   r   r(   r@   r   )r   r}   rJ   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sJ | tttt@ }|t td tgttd  td t ggksJ | t	tt	t@ }|t td t gt td  td  t ggks>J d S rr  )
r   r   rO   rA   rP   Zrefiner   r   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.J t dddd} t dddd} | t ddddks`J |  }|  || ks|J td}| t dd|dksJ d	D ],}d
D ]"}t |d||d} | | jksJ 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s2J d S )Nrg   )seedri   r      T)r/  	symmetric)r1  prng)r   r   )r  F      )r1  percentr2  r   rh   r3  )minr5  r4  )r7   r  r?   randomRandomr   r   rP  )r   r!   rngrl  r5  Z
zero_countr   r   rs   rs   rt   test_random  s,    

r:  c                     sz  t d} |  t dksJ | jddt dks4J | jddt dksLJ | jddt dksdJ | jddt dks|J | jddt dksJ tg dg d	g d
g} |  }| | t dksJ | jdd|ksJ | jdd|ksJ | jdd|ksJ | jdd|ksJ | jdd|ks4J tg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g}|jd%d| t |jd& ksJ t  g d'g d(g d)gt fd*d+d, D s6J t  g d'g d(g d)gt fd-d+d, D svJ d S ).Nri   r	  r  r  r  r  ZQR)rf   rg   rj   )rg   rk   rf   )r   rg   rk   rg   )r   r   r   r   rh   r   r   rh   r   rh   rh   rh   r   r   r   rh   rh   r   r   r   r   rh   rh   r   r   )rh   r   rh   r   r   rh   r   r   rh   r   rh   r   rh   rh   rh   r   rh   rh   r   r   r   r   r   rh   r   )rh   rh   rh   rh   r   rh   r   r   rh   rh   r   r   r   rh   rh   rh   rh   r   r   rh   rh   r   r   rh   rh   )rh   r   r   r   r   r   rh   rh   r   r   rh   rh   rh   r   r   r   r   r   r   rh   r   r   rh   r   r   )rh   r   r   rh   rh   rh   r   rh   r   r   rh   r   r   rh   rh   rh   r   rh   r   r   r   rh   r   r   r   )rh   r   r   r   r   r   r   r   rh   rh   rh   r   rh   r   rh   rh   rh   rh   r   r   r   rh   rh   r   rh   )r   rh   rh   rh   r   r   r   r   rh   rh   rh   r   rh   r   rh   r   rh   r   rh   r   rh   r   r   rh   r   )rh   rh   r   r   r   rh   rh   r   r   rh   rh   r   rh   rh   r   rh   rh   r   rh   r   rh   rh   r   rh   rh   )r   r   rh   rh   rh   r   r   rh   rh   r   rh   rh   r   rh   r   r   r   r   r   r   rh   r   rh   r   rh   )rh   r   rh   rh   rh   r   rh   r   r   rh   rh   r   rh   rh   r   rh   rh   rh   rh   r   rh   rh   rh   r   r   )r   rh   rh   r   r   r   r   rh   rh   r   rh   r   rh   r   rh   rh   r   r   rh   r   r   r   rh   rh   r   )rh   r   r   rh   r   rh   r   rh   rh   r   r   rh   r   rh   r   rh   r   rh   r   rh   r   rh   rh   r   r   )r   rh   rh   r   r   rh   rh   r   r   rh   rh   r   rh   r   r   r   rh   r   r   rh   r   rh   rh   r   rh   )rh   rh   rh   r   rh   r   r   rh   r   r   rh   r   rh   rh   r   r   rh   rh   rh   r   rh   r   rh   rh   r   )r   rh   r   r   r   r   rh   rh   r   rh   rh   r   r   r   r   rh   r   rh   rh   rh   r   r   rh   r   r   )rh   rh   rh   rh   r   rh   rh   rh   rh   rh   rh   r   r   r   rh   r   rh   r   rh   r   r   rh   r   r   r   )r   r   r   rh   r   rh   rh   r   rh   r   r   r   r   r   rh   r   rh   rh   r   rh   r   rh   rh   r   rh   )r   rh   r   rh   r   r   r   r   rh   rh   rh   r   r   rh   rh   rh   r   r   rh   r   rh   rh   r   rh   rh   )rh   r   rh   rh   r   rh   r   rh   rh   r   rh   rh   rh   r   rh   r   r   r   r   rh   r   r   rh   r   rh   )r   r   r   rh   r   r   rh   rh   r   rh   rh   r   rh   r   rh   rh   r   r   r   r   r   r   r   r   r   )rh   r   r   r   r   rh   r   rh   r   r   rh   rh   r   rh   r   rh   rh   rh   rh   r   rh   rh   rh   rh   rh   )r   r   rh   rh   r   rh   r   r   r   rh   r   r   rh   r   r   rh   r   r   r   rh   r   rh   r   rh   rh   )r   r   r   r   r   rh   rh   rh   r   rh   rh   rh   r   r   r   rh   r   rh   rh   r   rh   rh   r   r   r   )r   r   rh   r   rh   rh   r   rh   rh   rh   r   r   rh   r   rh   r   r   rh   r   rh   r   r   r   r   r   )r   r   r   rh   rh   r   rh   rh   rh   r   r   rh   r   rh   r   rh   rh   r   rh   rh   rh   r   r   rh   r   ZBLOCKr   )r  1      )r   G   ^   );      A   c                 3   s    | ]}t | u V  qd S r   rX  r  r   rh  r  r   rs   rt   r    r   ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   s    | ]}t | u V  qd S r   rB  rC  rD  rs   rt   r    r   )r-   r  r   rP  r   r  r"  r   )r   ZAinvZAArs   rD  rt   test_inverse  sr    $"rE  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sbJ td	d
 |t	D dk sJ d S )Nz)Tau Tau_syn_in Tau_syn_ex C_m Tau_syn_gap__hr         ?       @      rf   r   c                 s   s   | ]}t |V  qd S r   r  r   frs   rs   rt   r    r   z:test_inverse_symbolic_float_issue_26821.<locals>.<genexpr>     @@)
rC   r   r  r-   r*  rI   rH   maxatomsr
   )TauZ
Tau_syn_inZ
Tau_syn_exZC_mZTau_syn_gaprF  r   ZMirs   rs   rt   'test_inverse_symbolic_float_issue_26821  s    L<L<L<|
$rQ  c                  C   s   t d\} }}}}t d}tg dd|d  d| dddddgg dddd|d  d| dddgg d	ddddd|d  d| dgd
| dd
| dd
| dd|  gg}||  }||||  ttdksJ tdd |t	D dk sJ d S )Nz-Tau, Tau_syn_in, Tau_syn_ex, C_m, Tau_syn_gaprF  )r   rG  r   r   r   r   r   r   rf   r   r   )r   r   r   rG  r   r   r   )r   r   r   r   r   rh   r   rh   r   c                 s   s   | ]}t |V  qd S r   rJ  rK  rs   rs   rt   r    r   z6test_matrix_exponential_issue_26821.<locals>.<genexpr>rM  )
rC   r   r+   r*   r*  rI   rH   rN  rO  r
   )rJ   rK   rL   rM   r   rN   r   ZMers   rs   rt   #test_matrix_exponential_issue_26821  s     
$rR  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sfJ 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sJ td t }ttg}t||t dt dt gdt dggksJ 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sdJ 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sJ |t|t ttgjksJ 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>J d S )Nrh   rf   ri   rg   r   rk   )r   rO   rP   jacobianr/   rQ   r   )r?  ZsymsrL  gansrs   rs   rt   test_jacobian_hessian  s0    (6>0>
rV  c                  C   s8  t ttttgtttd ttd  ks2J t tttdt gttdt ks\J t tttgtttttt  ksJ t dttd gtdksJ 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sHJ t tttttd gtdd | ksvJ 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sJ t tttttd gtdd |ks J t g tdks4J d S )Nrf   rg   rh   r  rk   r  r  )rG   r(   rO   r@   r+   r,   )Zw1Zw2rs   rs   rt   test_wronskian4  s&    2**J*"
R*"
rW  c                  C   s   t dtgtdggtdit ddgddggks6J t tdgtt dggtdtdit ddgddggkstJ tD ]0} t ddgddgg| dddiksxJ qxd S )	Nrh   ri   rj   rf   r   r   r(  r   )r   rO   xreplacerP   r  r-   r  rs   rs   rt   test_xreplaceE  s    $rY  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sJ dt d }t|gg}|  |t|ggksJ |jtd |t|jtdggks"J 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sJ dt d }t	|gg}| t|ggksJ |jtdt|jtdggks<J tt	t
td ttd  ggt	dggksrJ tddgddgg}d|   tdd	ksJ d S )
Nr  rL  rh   rf   )Zratior4  rg   ri   "   )r#   r   r   rO   rP   r(   r6   r?   r5   r   r@   tracer   )r  rL  r   eqr   rs   rs   rt   test_simplifyN  sD     :&:&&"

r]  c                  C   s   t g dg dg} | jt ddgddgddgddgddgddgddgd	d	gd
d
gddgg
ksbJ | jj| ksrJ | j|  ksJ d S )N)
rh   rf   rg   ri   rj   rk   r   r   r   r   rh   rf   rg   ri   rj   rk   r   r   r   r   )r   r   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g dg} | jtg dt dddgt t ddgt t tdggkszJ d S )Nc                   S   s
   t djS r   )r-   r   rs   rs   rs   rt   r     r   z!test_conj_dirac.<locals>.<lambda>rh   r   r7  r;  r   )r^   AttributeErrorr   r   r   r   rs   rs   rt   test_conj_dirac  s    

r`  c                  C   s.   t g dg dg dg} |  dks*J d S )Nr   )r   rj   r   )r   r   r   r  r   r[  r   rs   rs   rt   
test_trace  s
    rb  c                  C   sH   t ddddg} | jdksJ t tddgdtdgg}|jdksDJ d S )Nrh   rf   r   r  r   )r   rP  rO   rP   )r   r   rs   rs   rt   
test_shape  s    
rc  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sLJ | ddd  | t td ddgdt td dggksJ | dt td ddggksJ | d}d|d< | d	 td ksJ | dd d
f }d|d< | d	 td ksJ | d}|t td dt gks$J d|d< | d	 td ksBJ | d d df }d|d< | d	 td kspJ d S )Nr   rh   c                 S   s   | | d S r  rs   )rr   rs   rs   rt   r     r   z!test_col_row_op.<locals>.<lambda>rf   rg   c                 S   s   | t |  S r   )rP   )rL   r   rs   rs   rt   r     r   *   ry   r   )r   rO   rP   Zrow_opZcol_opr   r   )r   Zr1r  rs   rs   rt   test_col_row_op  s2    
"

rf  c                  C   sT   t g dg dg} | dd | d dks0J | d dks@J | d d	ksPJ d S )
Nrn   rm   rh   rg   r{   r-  ry   r  r  )r   Zrow_multr   rs   rs   rt   test_row_mult  s    rg  c                  C   s\   t g dg dg dg} | ddd | d dks8J | d	 d
ksHJ | d dksXJ d S )Nrn   rm   rZ  rf   r   rj   ry   rk   r{   ri   r   rf   r   )r   Zrow_addr   rs   rs   rt   test_row_add  s    ri  c                  C   s   t D ]} | d}|dddd  || g dg dg dgksFJ | dd	 }d
|d< |dddd  | || g dg dg dgksJ qd S )Nrg   rh   r   c                 S   s   | d|  S rr  rs   r  urs   rs   rt   r     r   z!test_zip_row_op.<locals>.<lambda>r   ro  r   rf   r   rz   c                 S   s   | d|  S rr  rs   rj  rs   rs   rt   r     r   )rf   r   r   )ri   r   r   r   )mutable_classesr-   Z
zip_row_op)r  r   rs   rs   rt   test_zip_row_op  s    


rm  c                  C   sd   t g d} t g d}t g d}| dvs0J | dvs<J | dksHJ | |ksTJ | |ks`J d S )Nrn   )rf   rf   rg   rs   )rh   rh   rS  )r   rJ   rK   rs   rs   rt   test_issue_3950  s    rn  c                  C   s  G dd d} G dd d}|  }| }t g d}|| dksDJ d||< |d dks\J t g dg d	g}|||f d
ksJ |d|f d
ksJ ||df d
ksJ d|||f< |d dksJ d
|d|f< |d d
ksJ d||df< |d dksJ d S )Nc                   @   s   e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index1c                 S   s   dS r  rs   r  rs   rs   rt   	__index__  s    z)test_issue_3981.<locals>.Index1.__index__NrM  rN  rO  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 rr  rs   r  rs   rs   rt   ro    s    z)test_issue_3981.<locals>.Index2.__index__Nrp  rs   rs   rs   rt   Index2  s   rr  rn   rg   rj   rf   rm   rk   rh   ri   r  r   rS  )rq  rr  Zindex1index2r   rs   rs   rt   test_issue_3981  s$    rt  c                  C   sZ   t g dg} | jdu sJ t dgdgdgg} | jdu s>J tdd} | jdu sVJ d S )Nrn   Trh   rf   rg   Fri   )r   Zis_upperrH   r   rs   rs   rt   test_is_upper  s    
ru  c                  C   sB   t g dg} | jdu sJ t dgdgdgg} | jdu s>J d S )Nrn   Frh   rf   rg   T)r   is_lowerr   rs   rs   rt   test_is_lower  s    rw  c                  C   sT   t ddg d} |  sJ t ddgddgg} |  r<J t g } |  sPJ d S )Nri   )r   rf   rh   rk   r   r   rh   rf   r   r   r   rg   r   r   r   r   rh   r   r   r  r   rs   rs   rt   test_is_nilpotent  s    ry  c                  C   s  d\} }t | |}|d dt| | }||ks6J |j|j  krNdksTn J |j|j  krldksrn J |j|j  krdksn J t dt ddksJ tdtddksJ t ddtdddgd ksJ tddtdddgd ksJ |d |t | |ksJ d S )N)rg   rj   rj   rg   rf   r   rk   rh   )rH   fillr4   ro   rp   rP  r   )r  r   rJ   rK   rs   rs   rt   test_zeros_ones_fill'  s    

  
r{  c                  C   sf   t d} | t ksJ t dd} | jdks.J | jdks<J t dd} | jdksTJ | jdksbJ d S )Nr   rf   )rH   r   ro   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sZJ 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sJ 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 g dtdtdggks(J | 
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sJ d S )Nrf   rh   r   r  rg   )r   rO   rP   r@   r(   r*   r+   r  r5   r  r0   r   r   rs   rs   rt   test_issue_3749G  s,    ,."$

 &r}  c                  C   sD   t d} | dd dD ]&}| j|dd d| jdd	ksJ qd S )
Nri   r   rh   )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  )r   r  rs   rs   rt   test_inv_iszerofuncW  s    
r  c                  C   s   t d\} }t| t| | t| g}t| |g}||}|||jksRJ ||j|ksfJ ||j|jks|J |jt|jd  | }|t	}|tddgd| d ggksJ d S )Nrho,phir   rh   rf   )
rC   r   r(   r@   rS  r   r-   rP  r*  rF   )rhophiXYr  rT  rs   rs   rt   test_jacobian_metrics_  s    

r  c                  C   s   t d\} }t| t| | t| | d g}t| |g}tt||  t| gt|| t| gd|  dgg}|||ksJ d S )Nr  rf   r   )rC   r   r(   r@   rS  )r  r  r  r  r  rs   rs   rt   test_jacobian2l  s    "
r  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sJ |j|ksJ t|D ]}|d d |f |ksJ qqXqJd S Nrh   rg   )	r   r+   rO   rP   rQ   r   rS  ro   rp   )r  r  r   r   ZX_sliceZY_slicer  krs   rs   rt   test_issue_4564x  s    2
r  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   rS  r   rO   rP   rQ   rs   r  rs   rt   r     r   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
     S r   )rS  rs   r  r  rs   rt   r     r   c                      s     tttgttggS r   r  rs   r  rs   rt   r     r   )r   r+   rO   rP   rQ   r^   r#  rs   rs   r  rt   test_nonvectorJacobian  s     r  c                  C   sP   t ddgddgg} |  }|jdks*J tdD ]}|| |d ks2J q2d S Nrh   rg   rf   ri   )r   Zvecrp   r   )r   Zm_vecr   rs   rs   rt   test_vec  s
    r  c                  C   s6  t ddgddgg} |  }|jdks*J tdD ]}|| |d ks2J q2| jdd}|d dkshJ t dttt  gtt td  dgg} | jdd}|d tt td  ksJ t dttt  gtt dgg} | jddd}|d tt ksJ ttdd	  ttd
d	  ttdd	  ttdd	  d S )Nrh   rf   rg   Frd  r   )re  Zcheck_symmetryc                   S   s   t ddgg S r  r   vechrs   rs   rs   rt   r     r   ztest_vech.<locals>.<lambda>c                   S   s   t ddgddgg 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   c                   S   s   t ddgddgg S r  r  rs   rs   rs   rt   r     r   )	r   r  rp   r   rO   rP   r^   rW   r3  )r   Zm_vechr   rs   rs   rt   	test_vech  s"    ( r  c                      sZ   t g dtg dksJ dddgg tt fdd t  ddtg dksVJ d S )	Nrn   rh   rf   rg   c                      s   t  S r   )r)   rs   r   rs   rt   r     r   ztest_diag.<locals>.<lambda>F)strict)r)   r   r^   r3  rs   rs   r   rt   	test_diag  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| ||}|jddt|  | | ks|J t| ||}|jddt|  | | ksJ t| ||}|jddt|  | | ksJ t| | || || }|jddt|  |  | |  | |  ks2J |jdddt| jdd| jdd|jdd| jdd|jdd| jddksJ d S )	Nrh   rf   rg   T)try_block_diagr  )r  r  r  )r   rO   rP   rQ   r)   r  )rJ   rK   rL   r   rs   rs   rt   test_inv_block  s"     ((($r  c                   C   s   t tdd  t tdd  ttdtdks4J ttdtdksLJ t tdd  ttdtdksrJ ttdtdksJ t tdd  ttdtdtddksJ 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 )Nrg   r   rH   rs   rs   rs   rt   r     r   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddS Nrh   rf   rg   ri   r  rs   rs   rs   rt   r     r   rg   c                   S   s   t dS N      @r  rs   rs   rs   rt   r     r   c                   S   s   t dS r  r-   rs   rs   rs   rt   r     r   ri   c                   S   s   t dS r   rS  rs   rs   rs   rt   r     r   c                   S   s
   t ddS r   rS  rs   rs   rs   rt   r     r   c                   S   s   t ddggS r   rS  rs   rs   rs   rt   r     r   N)r^   r3  r#  rH   r!  r   r-   r4   rs   rs   rs   rt   test_creation_args  s     r  c                  C   s^  t ddg d} |  rJ |  s(J | jdds8J t ddg d} |  sTJ tddd} |  slJ |  sxJ t ddg d} | tdddksJ t ddtdd} |  rJ |  sJ t d	} |  sJ t d
} |  sJ t dddtd dt  d ttd d ddtddg	} |  s2J | jddrDJ |  jddsZJ d S )Nrf   r   Fr   rW  rh   rg   )	rh   r   r   r   rf   r   r   r   rg   ))rj   r   r  ry   )rj   r   r   )r   rk   r   r   )r   is_diagonalr   r)   rH   rO   rP   r,   r   rs   rs   rt   test_diagonal_symmetrical  s,    6r  c                     sv  t ddt gdt dgg   s(J t ddg d   rDJ   rPJ tt fdd tddd   \} }| tdksJ | ksJ t ddg d   sJ   sJ   \} }| 	   |  |ksJ t ddg d   sJ   sJ   \} }| 	   |  |ks2J | tdksDJ | ksRJ t ddg d	   spJ   \} }| 	   |  |ksJ t ddg d
   sJ   \} }| 	   |  |ksJ | D ]}|
 d dksJ qt ddg d   sJ   s(J   \} }| 	   |  |ksNJ | t ddgddggkslJ t ddg d  drJ tt fdd   sJ   \} }| 	   |  |ksJ t ddg d   rJ tt fdd t ddg d   r J tt fdd td\}}}}t dd||||g   sdJ   srJ d S )Nrh   rf   rg   r(  rh   r(  r  rg   r   c                      s      S r   r  rs   r   rs   rt   r   	  r   z&test_diagonalization.<locals>.<lambda>r   )rh   r   r   rg   r<  )	rh   rf   r   r   rg   r   rf   r   rf   r;  r   )r   rh   r   r   Tc                      s
     dS )NTr  rs   r   rs   rt   r   /	  r   r   rh   r   r   c                      s      S r   r  rs   r   rs   rt   r   7	  r   )	r(  rh   r(  r  rg   r   rf   r   ri   c                      s      S r   r  rs   r   rs   rt   r   ;	  r   za b c d)r   r   r   r   r^   rV   r)   r  r-   r  Zas_numer_denomr  rU   rC   )r  r   r   rJ   rK   rL   rM   rs   r   rt   test_diagonalization  sl    r  c                      sv   t ddgddgg   du s$J d d<   du s<J t ddgddgg    d d< tt fdd d S )Nr   rh   Tr{   Fc                      s      S r   r  rs   r   rs   rt   r   N	  r   z"test_issue_15887.<locals>.<lambda>)r   r   r  r^   rU   rs   rs   r   rt   test_issue_15887D	  s    r  c                     sD  t ddg d tt fdd t ddg d t ddg d}   \}}| |ksZJ |   d ksnJ t ddg d	 t ddg d
}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksRJ t ddg d t ddg d}   \}}| |ksJ t ddg d   rJ t ddg d}   \}}| |ksJ 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J qd S )Nrg   rf   r  c                      s      S r   )r  rs   r   rs   rt   r   T	  r   z"test_jordan_form.<locals>.<lambda>)	r   rx  rk   r   ir   r-  ir  )	r   r   r   r   rh   r   r   r   rh   rh   	r   rh   r   r   ri   r   r   rh   rf   )	rf   rh   r   r   rf   r   r   r   rf   )	rf   rk   rh   rh   r   rh   rf   r  )	r   rh   r   r   r   r   r   r   r   )	ri   r   rf   rj   r'  rg   rk   ri   )	r   rh   r   r   r   r   r   r   rh   ri   )rk   rj   r   r(  r(  r   rg   rg   rf   rh   r   r(  r   rh   rj   rj   )rf   rh   r   r   r   rf   r   r   r   r   rf   rh   r   r   r   rf   )rk   rf   r  r(  rf   r   rk   rf   r   r  r  r   r   rg   ri   )r   r   r   r   r   rf   rh   r   r   r   rf   r   r   r   r   rf   )rj   ri   rf   rh   r   rh   r   r   r   r   rg   r   rh   rh   r   rf   )rh   r   r   r   r   rf   r   r   r   r   ri   rh   r   r   r   ri   z1.0n   )Z	precisionz2.0z3.14159265358979323846264338327z4.0)
r   r^   rV   r  r  r   r
   r   r  Z_prec)ZJmustr  r  Ztermrs   r   rt   test_jordan_formQ	  sN    
r  c                  C   s   t g dg dg dg d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sJ t|| |  | ksJ d S )	N)rf   ri   rh   r   )r   rf   r   rh   )r   r   rf   ri   )r   r   r   rf   rf   ri   rh   r   )r   r   r  r?   r  )r   pqZJmust1ZJmust2r  r  rs   rs   rt   #test_jordan_form_complex_issue_9274	  s(    





r  c                  C   s   t g dg dg dg dg} |  \}}|t g dg dg dg dgksTJ |t g d	g dg dg dgks|J d S )
NrW  r   r6  r7  r   r;  r  r`  r<  )r   r  r  rs   rs   rt   test_issue_10220	  s"    
r  c               
   C   s   t g dg dg dg d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g d	gksJ |t t dddgdt ddgddtdgdddtggksJ d S )
Nr=  )r   r   r   r   )r   r   r   r   )r   r   rf   rh   rf   r   r   rh   r   )r   r  r,   r   r!   )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sJ t|tu sJ tddgddgg}| |t  krttd t d ksn J tddgtdgg}|t}|jtksLJ | 	|jttd dt  kstJ d S )	Nz
UA K_i K_wrf   zZZ(K_i,K_w,UA)r  rh   rg   r   rk   )
rC   r   r  rO   r   rX  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s0J td| }| tt| t| t| d gdt| t| gddt| ggksJ d S )Nlamdarh   rg   rf   r   )r#   r   rt  Z_eval_matrix_exp_jblockr+   )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\J t| |kslJ t ddgddgg} |  t tdgdtggksJ t| t tdgdtggksJ 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J d S )	Nrg   ri   r   r   r   rj   rh   r   )r   r+   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s0J 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sJ tg dg d	g d
g tt fdd d S )Nr  rh   ri   r   rf   rg   r   r   r   r  c                      s      S r   )r1   rs   r   rs   rt   r   
  r   ztest_log.<locals>.<lambda>)r#   r   rt  Z_eval_matrix_log_jblockr1   r^   rU   )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sNJ d S )NrO   rg   rh   rf   )r#   r   r(   r@   r!   r   rT   rO   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sjJ d S )NrO   rg   rh   rf   Zsimpfunc)r#   r   r(   r@   rT   rZ   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sjJ |d d dks~J |d d d|  ksJ |d d dksJ |d d dksJ d S )NrO   rg   rh   rf   r  r   )r#   r   r(   r@   rT   rZ   lenr  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g d,gtg d-g d.g d/g t t fd0d tg d-g d.g d/g t t fd1d d S )2Nc                   S   s   t ddgdggS r   rS  rs   rs   rs   rt   r   R
  r   ztest_errors.<locals>.<lambda>c                   S   s   t ddggd S )Nrh   rf   )g333333?rj   rS  rs   rs   rs   rt   r   S
  r   c                   S   s   t ddggd S )Nrh   rf   )rh   g@rS  rs   rs   rs   rt   r   T
  r   c                   S   s   t ddddS )Nrg   ri   T)rL   r1  )r7   rs   rs   rs   rt   r   U
  r   c                   S   s   t ddgddS )Nrh   rf   ri   rk   )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 g dg dg S )Nrn   )rf   rg   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 r  )r   r   rs   rs   rs   rt   r   ]
  r   c                   S   s"   t ddgt ddgddggS r  )r   r   rs   rs   rs   rt   r   _
  r   c                   S   s"   t dgdt ddgddggS r  )r   r   rs   rs   rs   rt   r   `
  s   c                   S   s"   t dgdt ddgddggS r  )r   r   rs   rs   rs   rt   r   b
  s   c                   S   s   t ddg S r   ra  rs   rs   rs   rt   r   d
  r   c                   S   s   t dgdS r  )r   r*  rs   rs   rs   rt   r   e
  r   c                   S   s   t ddgddggddS Nrh   rf   rg   ri   rj   )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 g ddS Nrn   rh   r   crossrs   rs   rs   rt   r   h
  r   c                   S   s   t g ddS r  r   dotrs   rs   rs   rt   r   i
  r   c                   S   s   t g dt ddgS )Nrn   rh   rf   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 )Nrh   rf   rJ   r  rs   rs   rs   rt   r   l
  r   c                   S   s   t ddgg dS )Nrh   rf   rn   r  rs   rs   rs   rt   r   m
  r   c                   S   s   t g d S )Nrn   )r   r+   rs   rs   rs   rt   r   n
  r   c                   S   s   t ddgddgg S r  )r   
normalizedrs   rs   rs   rt   r   o
  r   c                   S   s   t ddgjddS )Nrh   rf   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   rx  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 )Nrh   rf   rg   ri   zNot a real methodr  r  rs   rs   rs   rt   r   y
  r   c                   S   s(   t g dg dg dg dgjddS )Nr   r   r/  r#  zNot functionr~  r  rs   rs   rs   rt   r   {
  s   c                   S   s(   t g dg dg dg dgjddS )Nr   r   r/  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 r  r/   r   rs   rs   rs   rt   r   
  r   c                   S   s   t tddgddggg S r  r  rs   rs   rs   rt   r   
  r   c                   S   s   t tdd dS )NrO   rf   rJ   )r/   r#   rs   rs   rs   rt   r   
  r   c                   S   s   t dd S )Nrg   )rj   rf   r  rs   rs   rs   rt   r   
  r   c                   S   s   t dd S )Nrg   )rf   rj   r  rs   rs   rs   rt   r   
  r   r"  c                      s
     dS )Nzmethod=LU_decomposition())r  rs   r   rs   rt   r   
  r   )r   r   r   rn   rf   rg   ri   r   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^   r3  r   rW   r#  rV   r   rs   rs   r  rt   test_errorsQ
  sz    r  c                   C   s   t t dksJ t tddggt tdgdgg  krDdksJn J t tdddd t tdddd   kr~dksn J t tg dg dgd	ksJ tdgtdggksJ t rJ t tg ksJ d S )
Nr   rh   rf   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   r   r   rk   )r  r   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szJ | 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sJ t ddttg}|tt ddtd d tt gksJ d S )Nrh   ri   rf   r   rj   rg   )r   rO   rP   r0   )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@J | tt dddddt ffksfJ | tt d	ks|J t| tt dddddt ffksJ t| tt d	ksJ |  }t|tt|sJ |ttdddddt ffksJ |ttd	ksJ t|ttdddddt ffks>J t|ttd	ksVJ | jtd
dt| td
dksxJ t| td
dt| td
dksJ d S )Nrh   ri   rf   r   rj   r   r   r   )r   r   r   Fr   )	r   rO   rP   r  r*   rX  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sfJ 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sJ |  }||tddgddggddgddgggddgddggddgddggggksJ t||tddgddggddgddgggddgddggddgddggggkshJ | tt ddgddggksJ t	tt
g}| |tddddksJ | | tddgddggddgddgggddgddggddgddggggksJ |tt
gg}|jdks,J |tdgdggdgdgggksRJ td}|ttt  tttggt t t tgksJ  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 J tttt }|ttggttttt tttt gksjJ |tttffttttt tttt gksJ |tttffttt tt tttt gksJ |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sHJ  ttt tttffdd ks|J  ttt tttffdd ksJ  tttggtttfft fd	d
tttfD ksJ ttttgg}t|t	sJ |tddggks*J td tttgg}t|t	sRJ |tdtd  dggksrJ d S )Nrh   r   rf   )rf   rf   rh   rL  rg   r   ro  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   
  r   z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)rO   rP   rQ   )r   r  )r   rt   r   
  r   z'test_diff_by_matrix.<locals>.<listcomp>)r   rO   rP   rQ   rN   r*   r   r  rJ   r   rK   rH   rP  r   r@   r+   r(   r   r  )r   r  r   ZdBrL  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sdJ d S )Nrh   ri   rf   r   rj   c                      s    j S r   )Znonexistantattributers   r   rs   rt   r   
  r   ztest_getattr.<locals>.<lambda>r*   r   r   r   )r   rO   rP   r^   r_  getattrrs   rs   r   rt   test_getattr
  s    (r  c                  C   s   t g dg dg dg} | js$J | j} | js4J d| d< | jdu sJJ t g dg dg dg} | jrnJ tdd	} | jsJ d S )
Nr   r   r   rh   )r   r   Fr   rj   rf   )r   r   r   r   rH   r   rs   rs   rt   test_hessenberg
  s    



r  c                  C   s*  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sJ td} | jd
d}|tddgddtd t ggksJ ||j | ksJ td} |  }||j | ksJ |jsJ |tg dg dg dgks J 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sJ 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J t
d} | jd
d}|tddgddtd t ggksRJ ||j | ksfJ t
d} |  }||j | ksJ |jsJ |tg dg dg dgksJ 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s&J 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  )rg   ri   r  rs   rs   rs   rt   r     r   c                   S   s   t dt dfdf S Nrj   r   rz   )r   r   r  rs   rs   rs   rt   r     r   c                   S   s   t d S Nrb  )rj   rh   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   rj   r   rz   Fr  rh   r  rf   rk   ))rz  r  r   )r  r  r   )r   r   r   r  )rg   rg   r   )r   rh   rg   ri   r   r   r   rq  rg   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^   rV   r3  r   r   r  rA   r   rv  r,   r"   r>  rs   rs   rt   test_cholesky  sL    (
$@0*$@r  c                  C   s  t ddd} tt| t| g}t|ddks6J |dtt| d t| d  tddkshJ tdtddgg}| td	td
d tj	ksJ |t
t|ksJ |t
 t|ksJ tddgddgg}|ddksJ |ddksJ |ddksJ tddtdd  krFdksLn J |t
dks`J tdttg| tj	t gg}|dttdddttd   td  | d  ksJ tg dddtddgg}|dttddtdd  ks J |dtju sJ |dtdd ks2J 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u sJ |D ]B}	|D ]6}
|	||
| |	|
 | }|dksJ qʐq||||fD ]8}t|| |t|||  }|dksJ qqtdddt  dg}ttj	dt dg}tg d}tddtg}ttdtdddg}|||||g}t ddd}ddddtjtjtfD ]}|dkrtg d|tju sJ |dkrd|D ]L}	|D ]@}
|	||
| |	|
 | }t|dktju sJ qq|ddddtjtjfv r|D ]8}	t||	 |t||	|  }|dksJ qqtddg d}|ddksJ d S )NrO   Tr   rf   rh   r   rj   rg   rz  r   ri   r   r   Z	frobeniusfro%   )rh   rf   r(  r  i  r   iI3 r   alpha)r  rf   r   r(  )r   r   r   g      Y@r   )	rh   rg   r   r   r   r   rg   r   rk   )r#   r   r(   r@   rF   normr   r   r!   r   r5   rN  r6  r-   rP   r6   rA   r  r   r   rH   r?   r   InfinityNegativeInfinitytrue)rO   r  r   r   r   r   r?  r  orderr  r  Zdifr   rJ   rK   rL   rM   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:J | d
< |  tdtttddt kspJ 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 sJ tg  dksJ d S )NrO   Tr   rg   r   ry   rh   rf   rf   r  rl   c                 3   s(   | ] }t d  | V  qdS )rG  N)r
   Z
epsilon_eqr+  r  )r   valZMcrO   rs   rt   r    r   z(test_condition_number.<locals>.<genexpr>rj   rf   r   ri   r   )r#   r-   r   Zcondition_numberr   r   r   r   r(   r@   r  r!   r   r6   )r   r   rs   r  rt   test_condition_number  s    .&*r  c                  C   s   t d} t d}| | d d d d f ks,J | | d d d d f krHJ | |krTJ | |ks`J | dkslJ | dkrxJ td}t d}||ksJ ||krJ d S )N)rn   rm   r   ))r   r   r   )rk   rj   ri   )rg   rf   rh   r   )r   r   r   )r   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,J t g d t g dksLJ t g d} | jdd dt g dksxJ d S )	Nrg   ri   rj   r   )r   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   r   rs   rs   rt   test_normalized  s     
r  c                   C   s,   t dd dksJ t dd dks(J 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 )Nrg   r  r  rs   rs   rs   rt   r     r   z[.  ]
[ . ]
[  .]
)rc   rs   rs   rs   rt   test_print_nonzero  s    

r  c                  C   s   t dtdksJ t dtdks,J tddt dddgd ksLJ t ddgddgg} t ddgddgg}tD ]x}|d}| |ksJ | td|dksJ t||ksJ |d}||ksJ |td|dksJ t||ksxJ qxd S )Nrg   ri   rh   r-  r   rf   r  )r   r-   rH   r4   r  rX  )r   rQ   r  r   rs   rs   rt   test_zeros_eye  s     

r  c                  C   s
  t  jsJ t ddgddggjs&J tddjs6J tdjrDJ t tdgddggjd ksbJ ttdgddggjd ksJ ttdgddggjd ksJ ttdgddggjd ksJ t tdgddggjdksJ tddd} t | dgddggjdksJ d S )	Nr   rg   ri   rh   FrJ   T)Znonzero)	r   Zis_zero_matrixrH   r-   rO   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sZJ || td tdksvJ || td tdksJ | ddt|   ksJ | ddt|   ksJ | ddt|   ksJ tdtdksJ tdtdksJ tdtdks&J tg dt d }tg dt d }tg dt d }	tt  d |	 ks~J tt  d |	 ksJ tt  d |		 ksJ t
t 
 d |	 ksJ tt 
 d |	 ksJ tt 
 d |		 ks
J d S )Nrg   rh   rf   r   r   r   r   )r6   r:   r9   r8   r-   r[  r(   r   Zfrom_axis_angleZto_rotation_matrixr;   r<   r=   )
thetaZr3_plusZr3_minusZr2_plusZr2_minusZr1_plusZr1_minusZq1Zq2Zq3rs   rs   rt   test_rotation_matrices  s2    


r  c                   C   sj   t tdd dksJ ttdtdks0J ttdd  t tddksRJ ttddksfJ d S )	NZvectorri   z	vector[4]rM   c                   S   s   t dd S )NrM   r   )r   rs   rs   rs   rt   r     r   z%test_DeferredVector.<locals>.<lambda>testzDeferredVector('test'))strr   rD   r^   r   reprrs   rs   rs   rt   test_DeferredVector  s
    r  c                   C   s   t tdrJ d S )Nr  )rd   r   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sdJ t|j|jgtddddgtdd| dd | dd ggksJ 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J ttdg}t|tdgggks8J d S )Nrh   rf   rg   rj   r   Tr   )r   r   r   r   rA   r	   )r9  r}   r~   r?  rs   rs   rt   test_GramSchmidt  s    
.. r  c                   C   s4   t g dddksJ t g dddddks0J d S )Nr   rh   r   F)Zzero)r'   rs   rs   rs   rt   test_casoratian)  s    r  c                   C   s^   t  tdd jdksJ tddtdd tddks<J tddtdd t  ksZJ d S )Nr   rg   )r   rg   )r   rH   rP  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s2J  dd d f t ddggksTJ  d d df t ddggjksxJ  d d df t ddggjksJ tt fdd tt fdd d S )	Nrf   ri   rh   rg   r   c                      s    dd d f S rr  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   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 J t dddd d f tddg ksFJ d S )Nr   rg   r   rz   rh   )rH   rP  r   rs   rs   rs   rt   test_slice_issue_3401>  s     r	  c                  C   s  t dd} d| d< | d d df tg dks2J | d dksBJ | dd dgksXJ d| d< | d dkspJ | ddd f tddggksJ tdd	gg| ddd f< | dd d f tg d
gksJ ddgg| ddd f< | dd d f tg dgksJ d| d< | d d d df tg dks6J g d| d< | d d df tg dksdJ tg d| d< | d d df tg dksJ tg d| d< | d d df tg dksJ d S )Nrg   rh   r   r   ri   re  rl   rj   rk   )rh   rj   rk   +   )rh   re  r
     ry   )r  rh   r   rZ  )rH   r   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s4J ttdd  t g dtddgdtdgg t  d  jkszJ   d td	ksJ  jtd
d td	ksJ tt fdd tt fdd tt fdd d S )Nrh   rf   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   r   r   r   rg   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  r^   r3  rO   r  ro   r-   r>   rs   rs   r   rt   test_invertible_checkZ  s    4r  c                  C   s@   t d\} }| | }|| tg dtg d| ks<J d S )Nzx, y)rg   rj   rg   )rC   r+  r   )rO   rP   r   rs   rs   rt   test_issue_3959n  s    r  c                   C   s$   t tddgddggdks J d S )Nrh   rf   rg   ri   zMatrix([[1, 2], [3, 4]]))r  r   rs   rs   rs   rt   test_issue_5964t  s    r  c                  C   s<   t d\} }tt| d| g|d | d ggdks8J d S )Nr  rf   rg   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))rC   rB   r   r  rs   rs   rt   test_issue_7604x  s    "r  c                	   C   s   t djsJ t d js J tdjr.J tdjr<J tg dgjrPJ tddddddjsjJ tddtdjrJ tdddddjrJ tddddddddjrJ d S )	Nrg   r   rh   )ry   rl   r  rf   rk   )ry   rl   )ry   rl   r  rz   rh  )r-   Zis_Identityr  rH   r4   r   r"   r   rs   rs   rs   rt   test_is_Identity~  s    r  c                   C   s$  t ddt dddksJ t ddg ddks:J tg dtg ddks\J tdddt gttddt gdt ksJ tdddt gjttddt gdd	dt ksJ tdddt gjttddt gd
d	dt ksJ tdddt gjttddt gd
dddt ks4J tdddt gjtddt dgd
ddddt  ksrJ tdddt gjtddt dgd
ddddt  ksJ ttdt gjttdt gddddksJ ttdt gjttdt gdddksJ ttdd  d S )Nrh   rg   rZ  rn   r  rf   r   Fr  Tr  Zphysicsr  conjugate_conventionri   rj   rk   rightr   left)r  c                   S   s    t ddgjt ddgdddS )Nrh   rf   rg   ri   Tr  r  r  rs   rs   rs   rt   r     r   ztest_dot.<locals>.<lambda>)r4   r  r   r   r^   r3  rs   rs   rs   rt   test_dot  s    "266:>>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}| |sJ td tdsJ |  | sJ d S )NzB_x B_y B_z E_x E_y E_zTr   r   rg   )rC   r   Zdualequalsr-   rH   )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u sJ t dddtd dt  d ttd d  dtt t t t dg	} |  du slJ | jddd u sJ | jdd	 dd u sJ | d
  | d
< |  d u sJ | d
  | d
< |  } | jdddu sJ d| d< |  du sJ d S )Nrh   rf   Frg   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   rP   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 J | jddd\}}||j |j|   kr|t|jksn J || |  | ksJ d S )N)r  r%  Trv  )rw  sort)r   r  r   r-   rp   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 g dt ddg gS )Nrn   r   rh   rS  rs   rs   rs   rt   r     r   z!test_issue_5321.<locals>.<lambda>)r^   r3  rs   rs   rs   rt   test_issue_5321  s    r  c                  C   s   t tddtd t g dg dgks0J t tddtd t ddgddgddgddggkslJ t} | | td| dtd t g dg dgksJ d S )Nrf   )rh   r   rf   r   )r   rh   r   rf   rh   r   )r   r   r-   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s2J t || t dgdggksRJ d S r  )r   rD   r   r   )r   ZAImrs   rs   rt   test_issue_11944  s    r  c                     s   g d} g d}t g d}|j} fdd}tD ]\  | } |}|||| |||j| ||j|j| ||j|| q2ttdd  d S )Nrn   r   )r   ri   r   c                    s    || ksJ t |  ksJ d S r   )rX  )r   rU  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^   rW   )rJ   rK   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s6J |  	 sFJ |  
 | ksZJ d S r   )r   rO   rP   rQ   rJ   rK   rL   Zhatr  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J qtD ]} t| dtrDJ qDd S r  )immutable_classesr-   r  poprl  r  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*J q*d S Nr   rh   )r   r   r  Zadjoint)r  rU  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<J | tthksPJ d S r   )r   rO   rO  r!   r   ZNegativeOner#   r   rs   rs   rt   
test_atoms  s     r'  c            	         s  t ttgttgg} t| jddt|  ks4J t ddgddgddggt g d	g d
gt ttgg}|D ]d}|jdd}|| }|| }t|| |ksJ t|| |ksJ |j|ksJ |j|kspJ qp|D ]n}t|jdd}|| }|| }t|| |ksJ t|| |ks*J |j|ks:J |j|ksJ qddl	m
  | jdd}|  }tdtdtdtdi}t fddt||||D sJ d S )NZRDr  r  h   i  rg   r(  rj   )rh   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   rJ   rK   rL   rM   r?   pinvr  r   Zsympy.core.numbersr,  r  r  r+  )	A1Asr   A_pinvAApApAr  wZrepsrs   r+  rt   	test_pinv  s:     
r4  c                  C   s~   t g dg dg dg dg dg dgg} | D ]F}|jdd}|| }|| }|j|ks`J d	d
 }||j|s2J q2d S )N)=   r  7   r  r=  r   )>   `   U   r9  r$  r   )E   8   r  ri   6   r   )r   r<  [   )   r=  r   )r   r4  r   r  Z   r   )r   r   r   r   r   r   r*  r  c                 S   s<   |  t}dd |D }| | | }tdd |D S )Nc                 S   s   i | ]}||  qS rs   r  )r   rd  rs   rs   rt   rf  f  r   zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>c                 s   s   | ]}t |d k V  qdS )g|=NrJ  )r   r   rs   rs   rt   r  h  r   zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>)rO  r    rX  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   )r/  r   r0  r1  r2  r@  rs   rs   rt   3test_pinv_rank_deficient_when_diagonalization_failsG  s     	rA  c                   C   sL   t ddt dd tddg ks$J t ddt dd tddg ksHJ d S r%  )r4   r   rs   rs   rs   rt   test_issue_7201m  s    $rB  c                  C   s2   t tttfD ] } | tgdggjthksJ qd S r)  )r   r   r   r"   rO   Zfree_symbolsr   rs   rs   rt   test_free_symbolsr  s    rC  c                      s|  zddl m  W n ty*   td Y n0 t g dtg dksLJ t g dgtg dgkspJ t g dg dgtg dg dgksJ t tttgttttgksJ tt	 fdd t dd	g d
dggtdd	gd
dggksJ t dd	gd
dggtdd	gd
dggks>J t g  g gtd	dg   krrtg ksxn J dS )zSee issue 7465.r   r  r  rn   rm   c                      s(   t  ddgddggddgddgggS )	Nrh   rf   rg   ri   rj   rk   r   r   rS  rs   rD  rs   rt   r     r   z#test_from_ndarray.<locals>.<lambda>rh   rf   rg   ri   N)
r  r  r   r_   r   rO   rP   rQ   r^   NotImplementedErrorrs   rs   rD  rt   test_from_ndarrayw  s      $$
62rF  c                  C   s   ddl m}  zddlm}m} W n ty:   td Y n0 | |ddgddgg}|d dksdJ t|g d	ksxJ tt	( | |ddgddgg}W d    n1 s0    Y  |d dksJ t|g d	ksJ d S )
Nr   
_matrixify)r  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesrh   rf   rg   ri   r   )
sympy.matrices.commonrH  r  r  rI  r   r_   rq   r]   PendingDeprecationWarning)rH  r  rI  r   rs   rs   rt   test_17522_numpy  s    
6rL  c                  C   sx   ddl m}  zddlm} W n ty6   td Y n0 | |ddgddgg}|d d	ks`J t|g d
kstJ d S )Nr   rG  )rI  zEmpmath must be available to test indexing matrixified mpmath matricesrh   rf   rg   ri         @)rG  rH  r  rM  )rJ  rH  ZmpmathrI  r   r_   rq   )rH  rI  r   rs   rs   rt   test_17522_mpmath  s    rN  c                  C   sx   ddl m}  zddlm} W n ty6   td Y n0 | |ddgddgg}|d dks`J t|g d	kstJ d S )
Nr   rG  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesrh   rf   rg   ri   r   )rJ  rH  Zscipy.sparserO  r   r_   rq   )rH  rO  r   rs   rs   rt   test_17522_scipy  s    rP  c                  C   sr   t dtgt dgg} | js J dt | d< | jdu s:J t| d< | jd u sPJ | d t | d< | jdu snJ d S )Nrh   rf   ry   Fr{   rz   r   r   rs   rs   rt   test_hermitian  s    
rQ  c                     s  t g dg dg dg} | d | t g dg dgks@J t g dg dg dg}|d |t g dg dgksJ t g dg dg dg}|d |t g dg dgksJ t g dg dg dg tt fd	d
 t g dg dg dgttfdd
 t g dg dg dg} | d | t ddgddgddggks`J t g dg dg dg}|d |t ddgddgddggksJ t g dg dg dg tt fdd
 t g dg dg dgttfdd
 d S )Nrn   r  r   rh   r   )rj   rk   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   rg   rf   ri   rj   c                      s
     dS r  r   rs   rR  rs   rt   r     r   c                      s
     dS rS  r   rs   rT  rs   rt   r     r   )r   r   r^   r   r   )r   r  Ors   )r  r   rt   test_issue_9457_9467_9876  s.    



$
$rV  c                  C   s   t ddd\} }t d\}}td}tdd| ||tg}||  | | | | ksTJ || | || | kspJ | | ||  ksJ || || ksJ ||  | t||  dgd||  ggksJ d S )Nr  F)Zcommutativeza brf   r   )rC   r-   r   rQ   )rO   rP   rJ   rK   r   r   rs   rs   rt   test_issue_9422  s    rW  c            	      C   s   t g } ddgt g df}ddg|d jf}ddgt ddgdd	ggf}|||fD ]R\}}|D ]D}t| |}d
|v r~||n|d|}||krt|t|ks`J q`qTd S )Nr   r   )r   rk   rg   r   r   rh   rf   rg   ri   joinre  )r   r   r  id)	r   rJ   rK   rL   opsr   oprL  newrs   rs   rt   test_issue_10770  s    
r]  c                  C   sB  t g dg dg dg} | g dg dt ddgdd	gd
dggksLJ | g dg dt dgdgd
ggksxJ | g dg dt g dgksJ | g dg dt g dg dgksJ | g dg dt ddg ksJ | g dg dt ddg ksJ | g dg dt dgdggks>J d S )Nrn   rm   r   r   )TTFrh   rf   ri   rj   r   r   )TFF)TFT)FFFrg   r   )FTF)r   r   r   rs   rs   rt   test_issue_10658  s    ,&$&r^  c                  C   s  t ddtd  dgdtd d d dtd d gg} |  dksLJ 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sJ td
\}}}}}}}}}	}
}}t |||| || d	g|||| || d	g|||| || dg|||| || dg|	|
d|	 | |	|  d|
 | |
|  d	gg} |  dks|J d S )Nr   rj   rf   rh   rg   r  ri   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   rA   r  r   r?   r  rH   rC   )r   axZaybxZbyZcxcyZdxZdyexZeyt0t1rs   rs   rt   !test_opportunistic_simplification  s    <4F re  c                  C   s   t g dg dg} |  d t g dg dg  dk s@J t g dg dg d	g}t g d
g dg dg}t g dg dg d	g}| |  dk sJ | |  dk sJ d S )N)g~jth?gRM@g(\M@)gDl)@gQgp=
cG@r   )rG  r   r  )r   rG  rG  V瞯<)q7K<rG  ri   )rI  r   r   r   )rg  rG  rM  )rI                 @)rh  rh  rG  )r   rI  ri  )rG  rg  g      )r   r  r  r  )mmZm_mixedZm_floatZm_invrs   rs   rt   test_partial_pivoting  s(    
rk  c                  C   st   t g dg dg dg} | jdd dd }t g dg d	g d
g}|| }| dk s`J |d dkspJ 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ɿr   )皙rl  gٿr   )rm  rn  g333333?r   c                 S   s   t | dk S )Ng [n<rJ  rr   rs   rs   rt   r   2  r   z*test_iszero_substitution.<locals>.<lambda>r  r   )rG  r   g4iҤIӿr   )r   rG  glٲer   r8  rf  r  N)r   r  r  )r   Zm_rrefZ	m_correctZm_diffrs   rs   rt   test_iszero_substitution+  s    ro  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J |jd|	ddks6J |jd|	ddksNJ d S )Nr   )Pointr   r  -   rg   r  rf   r  r(  rh   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.pointrp  rE   r6   r   rA   r   r?   r  )
rp  xxyyp1p2Zp0r}   r~   r   Zrs   rs   rt   test_issue_11238:  s    0R

rw  c                  C   sh   t ddg d} | tj }| | }tD ]<}|| \}}t|t| ksNJ t|t| ks&J q&d S )Nrf   r   )r   r!   ZImaginaryUnitr  Zas_real_imagrq   )r}   r~   r   ZklsrJ   rK   rs   rs   rt   test_as_real_imagN  s    
rx  c                  C   sV   t ddg d} |  \}}|d t dddgks6J |d t ddg dksRJ d S )Nrg   r  rh   rf   r   )rf   rh   r   rf   )r   Zjordan_cells)r   r  ZJcellsrs   rs   rt   test_deprecatedY  s    ry  c                  C   s\   ddl m}  tg d}tg d}| |dtg dks>J | |dtg dksXJ d S )	Nr   )Mod)r   rh   rf   )r   r  r  rg   )rf   rh   rf   ri   )rf   r   rh   )Zsympy.core.modrz  r   )rz  r   r   rs   rs   rt   test_issue_14489d  s
    r{  c                  C   s\   zddl m}  W n ty*   td Y n0 tddgddgg}| |tdjjd	ksXJ d S )
Nr   rD  r  rh   rf   rg   ri   )dtypefloat64)r  r  r   r_   r   floatr|  name)r  r   rs   rs   rt   test_issue_14943m  s    r  c                  C   s4   t ddd} td}| d dk}t|dks0J d S )Nr   rh   rJ   ry   r   zm[0, 0] > 0)r   r#   r  )r   rJ   rs   rs   rt   test_case_6913x  s    r  c                  C   s.   t ddd} td}| ||| iks*J d S )Nr   rg   rJ   )r   r%   match)r   rJ   rs   rs   rt   test_issue_11948  s    r  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sJJ 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sJ t dtgdt gg}| \}}||j t dksJ d S )Nrh   r   rf   )r   r   r}  r!   ZQRdecompositionr   r-   )r  r  r   r9  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sVJ |dksbJ d S )NrJ   rg   rh   rK   ry   r   )r   r   r  r*   )rJ   rK   rL   rM   r   rs   rs   rt   test_issue_8207  s    
r  c                     sD  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shJ 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sJ t
tdd	  t
t fd
d	 tg dg dg dg dg  ttt  ks.J t
t fdd	 tddgddgg t t	ttd  ksvJ tg dg dg dg t | tdtd  ksJ tg dg dg dg dg  ttt  ksJ tg dg dg dg dg  ttt ttt t  ks@J d S )Nr   nthrootrh   rf   rg   rk   ri   c                   S   s   t dtttS r   )rH   analytic_funcr1   rO   rs   rs   rs   rt   r     r   ztest_func.<locals>.<lambda>c                      s    t  tt t S r   )rO   r  r1   rs   r   rs   rt   r     r   )r   r   r   rg   )r   rh   r   r   )r   r   r   rh   c                      s     tttS r   )r  rA   rO   rs   r   rs   rt   r     r   r>  r-  rZ  )rg   rx  ri   )r   r   r   )r   rj   r   r  )rh   rf   r   r   )r   rh   rg   r   )r   r   rh   rg   )r   rf   rh   rk   )r   r   rh   rf   )r   r   r   rg   r8  )Zsympy.simplify.simplifyr  r   r  r@   rO   rN   r6   r(   rA   r^   r3  r+   r?   r,   r  rs   r   rt   	test_func  s$    HT "$  r  z$Cannot create threads under pyodide.c               	   C   st   dd } t dP tj &}|| }| s4J W d    n1 sH0    Y  W d    n1 sf0    Y  d S )Nc                  S   s&   t jd ksJ tdgg} | |  } dS r  )rY   stater   r   rs   rs   rt   rL    s    ztest_issue_19809.<locals>.fT)r[   
concurrentZfuturesZThreadPoolExecutorZsubmitresult)rL  executorfuturers   rs   rt   test_issue_19809  s
    

r  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<J d S r%  )r   rO   rP   r0   r!   r   r   rs   rs   rt   test_issue_23276  s
    r  c                   C   s   t tdd  d S )Nc                   S   s   t tg dS )Nr  )r.   r   rs   rs   rs   rt   r     r   z"test_issue_27225.<locals>.<lambda>r  rs   rs   rs   rt   test_issue_27225  s    r  (T  concurrent.futuresr  r7  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   rI   r  rJ   rK   rL   rM   rN   rO   rP   rQ   Zsympy.core.kindrR   rS   Zsympy.matrices.determinantrT   Zsympy.matrices.exceptionsrU   rV   rW   Zsympy.matrices.kindrX   Zsympy.matrices.utilitiesrY   rZ   r[   Z$sympy.tensor.array.array_derivativesr\   Zsympy.testing.pytestr]   r^   r_   r`   ra   rb   Zsympy.utilities.iterablesrc   rd   importlib.metadatare   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,  r4  r:  r@  rF  rL  rR  rT  rU  rV  rY  r[  r\  ra  ri  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:  rE  rQ  rR  rV  rW  rY  r]  r^  r`  rb  rc  rf  rg  ri  rm  rn  rt  ru  rw  ry  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  r  r   r!  r$  r&  r'  r4  rA  rB  rC  rF  rL  rN  rP  rQ  rV  rW  r]  r^  re  rk  ro  rw  rx  ry  r{  r  r  r  r  r  r  r  r  r  rs   rs   rs   rt   <module>   s   %( 

		
$" O!,Jb-
R		:
	(	
		
 HK>
7(]%
		-%	
