o
    oh                    @   sJ  d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZVmWZW d dlXmYZY d dlZm[Z[m\Z\m]Z] d dl^m_Z_ d d	l`maZambZbmcZc d d
ldmeZe d dlfmgZgmhZhmiZimjZjmkZkmlZl d dlmmnZnmoZo d dlpmqZq ee%eefZree%fZseefZtdd Zudd Zvdd Zwdd Zxdd Zydd Zzdd Z{dd Z|dd Z}d d! Z~d"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zdd Zekdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d Zdd Zdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Z d&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 Zd2d3 Zd4d5 Zd6d7 Z	d8d9 Z
d:d; Zd<d= Zd>d? Zd@dA ZdBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Z dfdg Z!dhdi Z"djdk Z#dldm Z$dndo Z%dpdq Z&drds Z'dtdu Z(dvdw Z)dxdy Z*dzd{ Z+d|d} Z,d~d Z-dd Z.dd Z/dd Z0dd Z1dd Z2dd Z3dd Z4dd Z5dd Z6ekdd Z7dd Z8dd Z9dd Z:dd Z;dd Z<dd Z=dd Z>dd Z?dd Z@dd ZAdd ZBdd ZCdd ZDdd ZEdd ZFdd ZGdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNddÄ ZOejdădŐdƄ ZPdǐdȄ ZQdS (      N)Hashable)FAbsAddArrayDeferredVectorEExpr	FiniteSetFloatFunctionGramSchmidtIImmutableDenseMatrixImmutableMatrixImmutableSparseMatrixIntegerKroneckerDeltaMatPowMatrixMatrixSymbolMaxMinMutableDenseMatrixMutableSparseMatrixPolyPowPurePolyQ
QuaternionRationalRootOfSSparseMatrixSymbolTupleWildbanded
casoratiancosdiagdiffexpexpandeyehessian	integratelogmatrix_multiply_elementwisenanonesoopi
randMatrix	rot_axis1	rot_axis2	rot_axis3rot_ccw_axis1rot_ccw_axis2rot_ccw_axis3signsimpsimplifysinsqrtsstrsymbolssympifytantrigsimp	wronskianzeroscancel)abcdtxyz)
NumberKindUndefinedKind)_find_reasonable_pivot_naive)MatrixErrorNonSquareMatrixError
ShapeError)
MatrixKind)_dotprodsimp_state	_simplifydotprodsimp)ArrayDerivative)ignore_warningsraisesskipskip_under_pyodideslowwarns_deprecated_sympy)captureiterable)versionc                  C   sr  t ddg d} | jdksJ | jdksJ | d dksJ | d dks&J t| g dks0J t| dd d f g dks@J t| d d df ddgksPJ t| d d d d f t| ksbJ | d d d d f | kspJ t | | ksxJ t g dg dg| ksJ t g dg df| ksJ t ddg| ksJ t d	| ksJ t ddgdd
gddgg| krJ d S )N      )   re   rf            rg   rg   ri   rg   rh   ri   rj   rg   re   rf   )rm   rl   rh   rj   )r   rowscolslistrN    rr   x/var/www/html/construction_image-detection-poc/venv/lib/python3.10/site-packages/sympy/matrices/tests/test_matrixbase.pytest__MinimalMatrix#   s      $&rt   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s"J t ddg jttks/J t tggjttks<J t dt dggggjttksNJ tdggjttks[J tdt dggggjttksmJ d S Nrg   re   rf   rh   r   )r   kindrW   rQ   rN   rR   r"   rr   rr   rr   rs   	test_kind6   s   ""$(rw   c                  C   s   t d\} }}}t| |g||gg}t| |g||gg}t| |g||gg}t| |g||gg}| |   krR|   krR|   krR| |||dksUJ  J d S )Nza:d)r   r   r   rg   rg   r   rk   )rB   r   r   r   r   todok)rI   rJ   rK   rL   m1m2m3m4rr   rr   rs   
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sCJ d S )Nre   rf   rh   )	r!   OneHalfrN   rO   ZerorP   r   tolist)lstflat_lstmrr   rr   rs   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s%J d S )Nr   rg   r   rg   re   )r   r!   r   r   rN   todod)r   dictrr   rr   rs   
test_tododQ   s   r   c                      sH  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rEtg d
g dgksHJ  J  d d	  krdtddgddgddggksgJ  J  d d  krtg d
g dgksJ  J  d d  krtddgddgddggksJ  J d S )Nrf   	rg   re   rf   rh   ri   rj         	   c                      
     dS Nri   row_delrr   err   rs   <lambda>Y      
 z"test_row_col_del.<locals>.<lambda>c                      r   Nr   rr   r   rr   rs   r   Z   r   c                      r   r   col_delrr   r   rr   rs   r   [   r   c                      r   r   r   rr   r   rr   rs   r   \   r   re   rm   rl   rg   rh   ri   r   r   r   r   r   rj   r   )r   r]   
IndexErrorr   r   r   rr   rr   r   rs   test_row_col_delW   s   8>8B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s-J | |gks6J | |gks?J d S Nrg   re   rf   )r   rN   rO   rP   get_diag_blocks)rI   rJ   rK   rr   rr   rs   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siJ | | ||gkstJ | | ||gksJ | |||gksJ d S r   )r   rN   rO   rP   r)   rn   ro   r   )rI   rJ   rK   ABCDrr   rr   rs   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s&J d S )Nrf   r   r   rg   rm   rg   rh   r   )r   rowcolr   rr   rr   rs   test_row_col~   s   "r   c                   C   s8   t dtg dtg dg dg dgksJ d S )Nrf   r   r   r   )rg   r   r   r   )r   rg   r   r   )r   r   rg   r   )r-   row_joinr   rr   rr   rr   rs   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 )Nrf   r   rg   r   r   r   rg   r   r   r   rg   )r-   col_joinr   rr   rr   rr   rs   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rh   rh   rh   ri   r   rh   rf   r   )r   rangeinsertr-   
row_insertr   flat)r4ilrr   rr   rs   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s]J d S )Nr   r   ri   r   r   r   rh   rf   r   rj   re   )rg   r   r   re   re   r   r   r   )r   rg   r   re   re   r   r   r   )r   r   rg   re   re   r   r   r   )r   r   r   re   re   rg   r   r   )r   r   r   re   re   r   rg   r   )r   r   r   re   re   r   r   rg   )r   r   r   rG   
col_insertr   r   r-   )c4r   r   rr   rr   rs   test_col_insert   s   $6r   c                      s   t dddd   g dddgt ddg d	ksJ  ddgg d
t ddg dks0J  tdtd ks>J tt fdd tt fdd d S )Nrh   rf   c                 S      | d | S Nrf   rr   r   jrr   rr   rs   r          ztest_extract.<locals>.<lambda>)r   rg   rf   r   rg   re   )r   rg   rf   rh   r   
   r   r   re   )r   r   re   r   r      c                           dgdgS )Nrh   r   extractrr   r   rr   rs   r          c                      r   )Nr   rf   r   rr   r   rr   rs   r      r   )r   r   r   r]   r   rr   rr   r   rs   test_extract   s   ((r   c                     s   t dddd  t dddd    ksJ     t      kr<t g dg dg dg d	gks?J  J tt fd
d t  t  ksRJ t dd} t dd}t dd}t dd}t | |||  jdkr| jdks~J d S )Nrh   rf   c                 S   r   r   rr   r   rr   rr   rs   r      r   ztest_hstack.<locals>.<lambda>c                 S   r   r   rr   r   rr   rr   rs   r      r   )	r   rg   re   r   rg   re   r   rg   re   )	rf   rh   ri   rf   rh   ri   rf   rh   ri   )	rj   r   r   rj   r   r   rj   r   r   )	r   r   r   r   r   r   r   r   r   c                            S N)hstackrr   r   r}   rr   rs   r      r   r   rg   re   rj   )r   r   r]   rV   rG   rn   ro   )M1M2M3M4rr   r   rs   test_hstack   s"   "r   c                      s   t dddd  t dddd    ksJ     t      krTt 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sWJ  J tt fd
d t  t  ksjJ d S )Nrh   rf   c                 S   r   r   rr   r   rr   rr   rs   r      r   ztest_vstack.<locals>.<lambda>c                 S   r   r   rr   r   rr   rr   rs   r      r   r   rf   rh   ri   rj   r   r   r   r   r   c                      r   r   )vstackrr   r   rr   rs   r      r   )r   r   r]   rV   rr   rr   r   rs   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r,J d S )Nre   rf   re   )r   rN   rO   hasrP   r#   r   rr   rr   rs   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 s<J |jddd u sFJ |jd	d
 dd u sRJ tdddd |D }|jdddu sgJ tdddd tjgt|dd   D }| du sJ d S )NrN   re   rg   Frf   r   Tr>   c                 S      | S r   rr   rq   rr   rr   rs   r          z(test_is_anti_symmetric.<locals>.<lambda>c                 S      g | ]}|  qS rr   r,   .0rN   rr   rr   rs   
<listcomp>       z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   r   rr   r   r   rr   rr   rs   r      r   )rB   r   is_anti_symmetricrO   r!   r   rp   )rN   r   rr   rr   rs   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 s$J t ttgt dgg} | jd u s6J t tdgt dgg} | jdu sHJ d S )Nrg   re   Fr   r   is_hermitianrN   rI   rr   rr   rs   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 s$J t g dddtdgg} |  du s8J t dtd	gg} |  du sHJ t g d
g} |  du sWJ t dgtgd	gg} |  du siJ t dgdgd	gg} |  du s{J d S )NTrg   re   rf   rh   ri   rj   r   r   Fri   rj   r   rg   rf   rm   re   )r   rN   is_symbolicr   rr   rr   rs   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sJ d S Nrg   re   )r   	is_squarer   rr   rr   rs   test_is_square  s   
r   c                  C   s<   t ddg d} |  sJ t ddg d} |  rJ d S )Nre   r   rg   rg   r   r   rg   r   rg   )r   is_symmetricr   rr   rr   rs   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 s5J t g dg dg dg} | jrGJ d S )	Nrf   rh   rg   re   rh   ri   r   rf   )	rf   re   r   rh   rh   rg   rg   ri   re   )	rf   re   r   rh   rh   rg   rg   ri   re   Frf   rg   re   )r   is_upper_hessenbergis_lower_hessenbergr   rr   rr   rs   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s,J d S )	Nre   r   rg   re   rf   >   rg   re   rf   rN   Trealr   rg   )setr   valuesr#   rq   rr   rr   rs   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s7J | j| jjks@J | jt ddgt dgddggksSJ d S )Nr   ri   rg   re   r   rg   re   )r   r   Tr   	conjugateHMrr   rr   rs   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s#J d S )NFevaluater   re   )r   r   rN   doitr   rr   rr   rs   	test_doitG  s    r  c                      sr   t ddtddg t fddtdD sJ t fddtdD s(J t fddtdD s7J d S )	Nre   rg   ri   rj   c                 3   s(    | ]}   |  |   kV  qd S r   evalfr   r   r   rr   rs   	<genexpr>O  s   & ztest_evalf.<locals>.<genexpr>c                 3   ,    | ]}  d |  |  d kV  qdS re   Nr  r  r   rr   rs   r  P     * c                 3   r  r  nr  r   rr   rs   r  Q  r  )r   r@   allr   rr   rr   r   rs   
test_evalfM  s   "r  c                     sT   t dtd\ tddfdd} tdd fdd}| }|| ks(J d S )NF, Gclsre   c                        | | S r   rr   r   Grr   rs   r   V  r   ztest_replace.<locals>.<lambda>c                    r#  r   rr   r   Frr   rs   r   W  r   rB   r   r   replace)Kr  Nrr   r'  r%  rs   test_replaceT  s
   r-  c                     s   t dtd\ tdd fdd} |  d\}}|tddfddks)J | dd d	d	 ddiksAJ d S )
Nr   r!  re   c                    r#  r   rr   r   r&  rr   rs   r   ^  r   z"test_replace_map.<locals>.<lambda>Tc                    r#  r   rr   r   r$  rr   rs   r   `  r   r   rg   r(  )r  r+  rL   rr   r,  rs   test_replace_map\  s
   4r.  c                     s   z
ddl mm}  W n ty   td Y nw tddgddgg ddgddgg}|  |s5J |  dd	|s@J ttd
dd dkrYt	t
 fdd d S d S )Nr   )arrayarray_equal?NumPy must be available to test creating matrices from ndarraysrg   re   rf   rh   Tcopynumpy.c                      s    ddS )NFr2  rr   rr   r   r/  rr   rs   r   m  r   z'test_numpy_conversion.<locals>.<lambda>)r4  r/  r0  ImportErrorr^   r   intrd   splitr]   	TypeError)r0  np_arrayrr   r6  rs   test_numpy_conversionc  s   r<  c                  C   s   t ddgddgg} | | d  kr| dksJ  J | d| d  kr9| d  kr9t dks<J  J | d| d	  krW| d
  krWt dksZJ  J |  | d  krt| d  krtt dkswJ  J d S )Nrg   re   rf   rh   r   r   rj   ))rh   rf   re   rg   r   r   ))re   rh   rg   rf   )rf   rg   )rh   re   )r   rot90r   rr   rr   rs   
test_rot90o  s
   (<<>rC  c                   C   s@  t dtgtdggtdt ddgddggksJ t tdgtt dggtdgtdggt ddgddggks;J t tdgtt dggtdftdfgt ddgddggks\J t tdgtt dggtdtdit ddgddggks{J t tt ggjttd ttd idd	t td td  ggksJ d S )
Nrg   rh   ri   re   r   r   r@  T)simultaneous)r   rN   subsrO   rr   rr   rr   rs   	test_subsw  s   4(($(rF  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rDt g d
g dg dgksGJ  J  ddgdd	gg}  jddgdd	ggdd|   krst g dg dg dgksvJ  J  jddgdd	ggdd}  jddgdd	ggddd|   krt g dg dg dgksJ  J  g dt g d
g dg dgksJ ddlm}  |g dt g d
g dg dgksJ d S )Nrf   rh   )rg   re   rf   rh   ri   rj   r   r   r   r   r      c                      s     ddggS )Nr   ri   )permuterr   r   rr   rs   r     r   ztest_permute.<locals>.<lambda>c                           tdS )NrN   )rH  r#   rr   r   rr   rs   r         r   re   rg   r   r   r   r   rG  r   ro   )orientation)re   rf   rg   rh   )rj   r   ri   r   )r   r   r   rG  backward)	direction)rL  rN  )rf   rg   re   rh   )r   ri   rj   r   )r   r   r   rG  )rg   re   r   rf   )Permutation)	r   r]   r   
ValueErrorpermute_rowsrH  permute_colssympy.combinatoricsrO  )rJ   rO  rr   r   rs   test_permute  sH    "$rT  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s)J | d}|t g dg dg dg dgksBJ |  }|t g dg dg dg dgksZJ d S )Nrg   rg   rg   rg   re   r   r   rg   rg   r   r   r   rg   r   r   r   r   r   )r   rg   rg   rg   )r   upper_triangular)r   Rrr   rr   rs   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s(J | d}|t g dg dg dg dgksAJ | d}|t g dg dg dg dgksZJ d S )NrU  rg   r   r   r   rg   rg   r   r   rg   rg   rg   r   re   r   rX  )r   lower_triangularr   Lrr   rr   rs   test_lower_triangular  s6   

rb  c                         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s4J t ddddgtt fdd	 d S )
Nrm   re   re   rh   rj   rh   rg   c                           S r   rr   rr   r   r  rr   rs   r         ztest_add.<locals>.<lambda>r   rN   rO   rP   r]   rV   rr   rr   rh  rs   test_add     &Brk  c                  C   s   t ddgddgg} | dtksJ | dtksJ ztd W n ty+   Y n	 ty3   Y nw ztd W d S  tyE   Y d S  tyN   Y d S w )Nrg   re   rf   rh   z2 @ aza @ 2)r   
__matmul__NotImplemented__rmatmul__evalSyntaxErrorr:  r   rr   rr   rs   test_matmul  s"   rr  c                  C   s   G dd dt } tddgddgg}|  }|| t|d| gd| d| ggks+J || t|d| gd| d| ggksAJ dS )zd
    Test that if explicitly specified as non-matrix, mul reverts
    to scalar multiplication.
    c                   @   s   e Zd ZdZdZdZdS )ztest_non_matmul.<locals>.fooFrk   N)__name__
__module____qualname__	is_Matrixis_MatrixLikeshaperr   rr   rr   rs   foo  s    ry  rg   re   rf   rh   N)r   r   )ry  r   rJ   rr   rr   rs   test_non_matmul	  s
   ,0rz  c                  C   s.   t ddddg} |  t ddddgksJ d S )Nrg   re   r   r   r   r  rr   rr   rs   test_neg  s   r|  c                  C   s0   t ddddg} | |  t ddddgksJ d S )Nrg   re   r   r{  r  rr   rr   rs   test_sub  s    r}  c                  C   s:   t ddddg} | d t ddtjtdd gksJ d S r   )r   r!   r   r  rr   rr   rs   test_div#  s   *r~  c                   C   sj   t tddg dksJ t tdg dksJ ttdtks&J ttjdtdtks3J d S )Nre   rg   r   r   rg   r!  )rp   r   r-   typerr   rr   rr   rs   test_eye(  s   r  c                   C      t tddg dksJ t tdg dksJ tddtg dg dgks-J ttdtks8J ttjdtdtksEJ d S )Nre   rU  rf   rg   rg   rg   r!  )rp   r   r3   r  rr   rr   rr   rs   	test_ones/  
   $r  c                   C   r  )Nre   rX  rf   r   r!  )rp   r   rG   r  rr   rr   rr   rs   
test_zeros7  r  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sUJ  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sJ  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s)J 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sOJ ddddt ddgddgddggksfJ ddg t ddgddggksyJ t ddgt dgdggksJ dddgd	gdddgddgd	ggdd  krt ddgddgd	dggksJ  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s J t t	ddddt g dg dgks7J t t	ddddt ddgddgddgddggksTJ d S )Nrg   re   rf   )rg   re   r   r   r   r   )re   rf   r   r   r   r   r   )rg   re   r   r   r   r   r   )re   rf   r   r   r   r   r   rh   ri   rj   r   )r   r   r   r   r   r   )r   r   rg   re   r   r   )r   r   rf   rh   r   r   )r   r   r   r   ri   rj   c                      s    dddS )Nr   ri   rn   rr   rr   rI   rJ   rK   r)   rr   rs   r   l      z test_diag_make.<locals>.<lambda>r  )ro   )rn   ro   F)unpackr!  rm   rA  r>  r   r   rg   r   )r   r   r   re   )
r   r)   rN   rO   rP   r]   rP  r  rx  r3   rr   rr   r  rs   test_diag_make?  s    		&&.
" r  c                     s@  t ddtd } | dksJ t| dksJ tddks(J tddks3J td	d
ks>J t tksJJ tddddi}t| t|ks^J tt|kshJ 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sJ d S )Nrf   r   r   )r   rh   r   rg   rg   ri   r   )rf   r   re   re   rk   c                      r   r   diagonalrr   r   rr   rs   r     r   ztest_diagonal.<locals>.<lambda>c                      r   )Nr@  r  rr   r   rr   rs   r     r   c                      s
     tS r   )r  r5   rr   r   rr   rs   r     r   c                    s   i | ]
}|t  |qS rr   )rp   r  r  r  rr   rs   
<dictcomp>  s    z!test_diagonal.<locals>.<dictcomp>)r   r   r  tupler  r"   r]   rP  r3   r&   rn   ro   )rL   srr   )r  r   rs   test_diagonal  s(   
r  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sBJ  J t jddddt g dg dg dgksYJ 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sJ d S )Nrf   re   
eigenvalue)sizer  upper)band)r  eigenvalr  re   rg   r   )r   re   rg   r   lowerre   r   r   r
  r   c                   S   
   t dS Nre   r   jordan_blockrr   rr   rr   rs   r     r   z#test_jordan_block.<locals>.<lambda>c                   S   s   t ddS )Ng      @re   r  rr   rr   rr   rs   r     r   c                   S   s   t jddS )Nre   r  r  rr   rr   rr   rs   r     r   c                   S   s   t jdddS )Nre   rh   )r  r  r  rr   rr   rr   rs   r     s    )r  r  )r   r  r]   rP  rr   rr   rr   rs   test_jordan_block  s:   
r  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sBJ | 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slJ | t dgdggt dgdggt dgdgggksJ | t dgdggg ksJ 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 )Nrg   re   rf   rh   T	normalizeri   r   rj   r   )r   rg   r   )rf   rj   r   )r   ri   re   r   r         r   rm   )rg   rh   ri   c                         t j ddiS N	rankcheckTr   orthogonalizerr   vecsrr   rs   r     r   z$test_orthogonalize.<locals>.<lambda>rl   r   c                      r  r  r  rr   r  rr   rs   r     r   )r   r  r@   r   r]   rP  rh  rr   r  rs   test_orthogonalize  s*   ,$"*".*""r  c               
   C   s   t d\} }| t g dg dg dgksJ |t g dg dg dgks)J t d\} }| t g dg dg d	g d
g dg dg dgksMJ |t g dg dg dg d
g dg dg dgksjJ d S )Nrg   )r   rg   r   rg   r   rg   )r   rg   rg   )rg   rg   r   rf   )r@  rg   r   r   r   r   r   )rg   r   rg   r   r   r   r   )r   rg   r   rg   r   r   r   )r   r   rg   r   rg   r   r   )r   r   r   rg   rg   rg   r   )r   r   r   r   rg   re   rg   )r   r   r   r   r   rg   rf   )rf   rg   r   r   r   r   r   )rg   re   rg   r   r   r   r   )r   rg   rg   rg   r   r   r   )r   	wilkinson)wminuswplusrr   rr   rs   test_wilkinson  s<   
r  c                  C   s   t d\} }tddd|  |g}|| dtddtdd|gks#J tddt| |  f|ddfdd| d d ff}|| dtd|ddfd	fksMJ d S )
Nx yre   rg   ri   rh   r   r   )rg   rh   rg   )r   ri   rg   )rB   r   limitr   r?   )rN   rO   r   r   rr   rr   rs   
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 )Nrm   rl   r   r  c                      s     S r   rr   rr   r  vrr   rs   r     ri  z"test_issue_13774.<locals>.<lambda>c                           S r   rr   rr   r  rr   rs   r     ri  )r   r]   r:  rr   rr   r  rs   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sDJ ttd	|| g td
|  gd	| ggks]J ttd	||| g td
d
|  gd	d
| gd
d	| ggks~J d S )NrN   rO   c                   S   r  Nrg   )r   	companionrr   rr   rr   rs   r   
  r   z test_companion.<locals>.<lambda>c                      s   t tdg S r  r   r  r   rr   rq   rr   rs   r     r  c                      s   t tddg S )Nre   rg   r  rr   rq   rr   rs   r     r   c                      s   t t   gS r   r  rr   rN   rO   rr   rs   r         zc0:3rg   r   )r#   r]   rP  rB   r   r  r   )c0c1c2rr   r  rs   test_companion  s   $$r  c                  C   s   t d\} }}t| ||g}|t| ||gg d}|tdgdgdggks)J t| | | | | g| | | | | g| | | | | gg}|t| gdg}|tg dg dg dgksZJ d S )Nzx, y zrm   rg   re   rf   )rg   rg   rg   rg   rg   )rB   r   rE  zip)rN   rO   rP   r   r   rr   rr   rs   test_issue_10589  s   ,&r  c                  C   sf   G dd dt } tddg d}| ddg d}|| }t|| s#J |tddgddggks1J d S )	Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{Gz?N)rs  rt  ru  r   _op_priorityrr   rr   rr   rs   Foo#  s    r  re   r   r   r         )r   r   
isinstance)r  rI   rJ   rK   rr   rr   rs   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 )Nrg   re   rf   rh   c                      s     S r   rr   rr   r   r   rr   rs   r   4  ri  z"test_issue_18956.<locals>.<lambda>c                      rg  r   rr   rr   r  rr   rs   r   5  ri  )r   r   r]   r:  rr   rr   r  rs   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s&J 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   rr   selfrr   rr   rs   __iter__:  s   ztest__eq__.<locals>.My.__iter__c                 S   s   t | | S r   )rp   )r  r   rr   rr   rs   __getitem__>  s   z"test__eq__.<locals>.My.__getitem__N)rs  rt  ru  r  r  rr   rr   rr   rs   My9  s    r  re   rg   c                   @      e Zd Zdd ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | S r   r{  r  rr   rr   rs   _sympy_C  s   z$test__eq__.<locals>.My_sympy._sympy_N)rs  rt  ru  r  rr   rr   rr   rs   My_sympyB      r  )objectr   )r  rI   r  rr   rr   rs   
test__eq__8  s
   r  c                  C   s   t tD ]S\} }|dd}|jdkrtdd |jD sJ |jdkr+t|jtu s-J |jdkr9t|jtu s;J | d sMt|	 t
ttfv sLJ qt| tu sWJ qd S )Nrf   re   )rf   re   c                 s   s    | ]	}t |tu V  qd S r   )r  r8  r  rr   rr   rs   r  L      ztest_args.<locals>.<genexpr>)	enumerateall_classesrG   rx  r  rn   r  r8  ro   r   rp   r  r$   r{   r   )r  r"  r   rr   rr   rs   	test_argsH  s   "r  c               	   C   s   t tfD ]&} | dd}t  |j}W d    n1 sw   Y  || ks*J qttfD ]&} | dd}t  |j}W d    n1 sHw   Y  ||	 ksUJ q/d S Nrf   re   )
r   r   rG   ra   _matr   r"   r   _smatr{   )r"  r   matsmatrr   rr   rs   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sJ d S r   )r   rN   rO   rP   )r  rr   rr   rs   test_divisionb  s   (r  c                      rc  )
Nrm   re   rd  re  rh   rf  rg   c                      rg  r   rr   rr   rh  rr   rs   r   k  ri  ztest_sum.<locals>.<lambda>rj  rr   rr   rh  rs   test_sumg  rl  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s8J d S )Nrg   r   re   r@  rf   )r   rN   rO   absr   rh  rr   rr   rs   test_absn  s
   (r  c                  C   sJ   t d} t d}| | | |  kr t ddgddggks#J  J d S )N)rg   re   rA  r  )rf   r   re   rh   rj   rg   )r   addrI   rJ   rr   rr   rs   test_additionv  s   :r  c               	   C   s  t tfD ].} | ddtd}||d d d d f ksJ |dd d f t ddg dks/J |d d df t g dks?J |ddgd d f t g dg dgksUJ |ddgdf |ddgdgf kshJ |dddgf |dgddgf ks{J |d d ddgf t ddgdd	gd
dggksJ |d dksJ |ddd d f t g dg dgksJ |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s3J qtd}d|d< d|d< d	|d< |ddgdgt dgdggksYJ |ddgg dt g dg dgkspJ |g dg dt g dg dg dg dgksJ d S )Nrf   r   rg   r   r   r   r   re   rh   rj   r   rx   )r   re   rg   re   rg   r   )rf   ri   rh   ri   rh   )rj   r   r   r   r   r  ry   re   r   )re   re   re   r   )rg   r   rg   re   )re   r   rg   r   re   r   r   r   )r   r   rf   r   )r   rh   r   rh   )r   r"   r   rG   r   )r  rI   rr   rr   rs   test_fancy_index_matrix  sZ   $ ,&&2,2&&
r  c                     s  t d t dtt fdd tt fdd   } | d dks'J | d d	ks/J | d
 dks7J | d dks?J | d dksGJ | d dksOJ   } | d dks[J | d d	kscJ | d
 dkskJ | d dkssJ | d dks{J | d dksJ t | }| | 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 tt fdd td } t| t sJ | d tksJ | d d	t ksJ | d
 dt ksJ | d dksJ t }| |ksJ d } t| t sJ | d dksJ | d dks%J | d
 dks.J | d dks7J t t	dgdt	gg}|d	 |ksJJ t t	t	gddgg}|d	 t t
t
gt
t
ggkseJ t tdd}tdd	 }t |||g}||t |g|g|ggksJ d S )N)r  rA  r   rj   r  c                      r  r   rr   rr   r  rr   rs   r     ri  z%test_multiplication.<locals>.<lambda>c                      s    i  S r   rr   rr   r   rr   rs   r     ri  rx   r   ry   re   rz   rj   rk   r     r=  r   rh   c                      s
   t  S r   )r1   rr   r  rr   rs   r     r   rN   rf   ri   r   r  rg   )r   r]   rV   r:  r1   multiply_elementwiser#   r  rN   r4   r2   r3   r   )rK   hr  r  r   _hr   rr   r  rs   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s!J tg dg dg dg  d tg dg dg dgksAJ  d tdksKJ  d  ksSJ tdggd d dd kscJ tddgddggtd tddgddggks}J tddgddgg  jddd jdddksJ  td tddgdd ggksJ tdd! tdksJ 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sJ tddgddggd& tddgd&dggksJ dd'lm	 tdt
gddgg tdt
 gddggks7J ttt
gdtgg tt t
td    gdt ggks\J tt
 t
d   t
 d  t
   dt
d   gdt
 t
d   gddt
 ggsJ 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J  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sKJ t t fd4d t t fd5d td6dgddgg  d3 td7d8gd9d:ggksxJ tg d1g d1g d1g  d3 tg d1g d1g d1gksJ tg d0g d1g d1g  d3 tg d1g d1g d1gksJ 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s'J t t fdAd tg d1g dBg dCg  dD tg dEg dFg dGgksQJ  dD  d ks\J tg d0g dHg d2g td;  d  d ksJ t tfdId   d  ksJ tg d2g d2g d2g td;d<d<dJ   ksJ 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sPJ 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stJ d S )RNc                   S   s   t dd S Nr  re   r{  rr   rr   rr   rs   r     r   ztest_power.<locals>.<lambda>re   rf   rh   ri   i  i  i,*  i7  )re   rg   rf   )rh   re   rh   )rj   rG  rg   )i"  i     )i  i  ip  )i  i  i  r   rg   d   rx   r   r   r  r     cayleymethodmultiplyr   rG     !   i 0   9   )ri   re   rh   r   r   g      ?r  i   )rf   r   r   r   r@  )r   r@  r@  r   rf   )r   rf   r   rf   r   )r   r   rf   r   rf   )rf   r   r   rf   r   c                      rI  Nr   )_matrix_pow_by_jordan_blocksr!   rr   r   rr   rs   r   %  rJ  c                   S   s   t ddgddggtdS )Nrg   rf   )r   r  r!   rr   rr   rr   rs   r   (  s    r   r   r         $@c                          d S N @rr   rr   r   rr   rs   r   +  ri  c                          t dd S r  r   rr   r   rr   rs   r   ,  rJ  r   ihiO<iv0ir  T)integer)r  negativec                      s     S r   rr   rr   )r   r  rr   rs   r   6  ri  )r  nonnegativec                      r	  r  r
  rr   r   rr   rs   r   =  rJ  )rf   r   rg   )rh   rf   rg   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                      s     d S )Nr   )rE  r  rr   )Anr  rr   rs   r   E  r   )r  positiver  )r   re   r   r   r  gd%%@c                      r  r  rr   rr   r   rr   rs   r   T  ri  c                      s    t  S r   r   rr   r   rr   rs   r   U  ri  )r]   rU   r   r-   r   powr!   r   	sympy.abcr  rI   rJ   r  _eval_pow_by_recursionrT   rP  r#   r  r   r   rE  r  r)   rG   r   rr   rr   )r   r  r   r  rs   
test_power  s    & 4 $426J<$0&("((*,(&&8r  c                  C   s   t dt dt gdt dt gg} tdE |   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sSJ W d    d S 1 s^w   Y  d S )Nrg   Tre   )r   rN   rZ   r+   r,   r  rr   rr   rs   $test_issue_17247_expression_blowup_1\  s   $
00"r  c                  C   sr   t dt dt gdt dt gg} td |  \}}|| |  s'J W d    d S 1 s2w   Y  d S Nrg   T)r   rN   rZ   jordan_forminvr  PJrr   rr   rs   $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1 | 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    d S 1 sJw   Y  d S )Nrg   Tr  l                )r   rN   rZ   r  rr   rr   rs   $test_issue_17247_expression_blowup_3k  s   $
"r#  c                  C   sR   t td} td | d t tdksJ W d    d S 1 s"w   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!   rZ   r  rr   rr   rs   $test_issue_17247_expression_blowup_4s  s   
"r$  c                  C   s   t dddd } td+ | dttd ddt  td   dt td	   td
dks/J W d    d S 1 s:w   Y  d S )Nrj   c                 S      dd| |  t   S Nrg   r   r  r   rr   rr   rs   r     r   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>TrN   ri   $   rh   EXdomain)r   rZ   charpolyr   rN   r   r  rr   rr   rs   $test_issue_17247_expression_blowup_5  s   
F"r-  c                  C   Z   t dddd tdD } td | ddksJ W d    d S 1 s&w   Y  d S )Nr   c                 S      g | ]}t | qS rr   rq   r  rr   rr   rs   r     r   z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>@   Tbareissr   r   r   rZ   detr  rr   rr   rs   $test_issue_17247_expression_blowup_6     
"r4  c                  C   sP   t dddd } td | ddksJ W d    d S 1 s!w   Y  d S )Nrj   c                 S   r%  r&  r  r   rr   rr   rs   r     r   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>T	berkowitzr   )r   rZ   r3  r  rr   rr   rs   $test_issue_17247_expression_blowup_7  s   
"r7  c                  C   r.  )Nr   c                 S   r/  rr   rq   r  rr   rr   rs   r     r   z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>r0  Tlur   r2  r  rr   rr   rs   $test_issue_17247_expression_blowup_8  r5  r9  c                  C   s   t dddd tdD } td- |  t g dg dg dg dg dg dg dg dgd	fks6J W d    d S 1 sAw   Y  d S )
Nr   c                 S   r/  rr   rq   r  rr   rr   rs   r     r   z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>r0  T)rg   r   r   r   r@  r   r   r'  r   rg   re   rf   rh   ri   rj   r   r   r   r   r   r   r   r   r   ry   )r   r   rZ   rrefr  rr   rr   rs   $test_issue_17247_expression_blowup_9  s   
"r=  c                  C   sR   t dddd } td | dddksJ W d    d S 1 s"w   Y  d S )Nrj   c                 S   r%  r&  r  r   rr   rr   rs   r     r   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>Tr   )r   rZ   cofactorr  rr   rr   rs   %test_issue_17247_expression_blowup_10  s   
"r?  c                  C   s\   t dddd } td |  t dddgd ksJ W d    d S 1 s'w   Y  d S )Nrj   c                 S   r%  r&  r  r   rr   rr   rs   r     r   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>Tr   r(  )r   rZ   cofactor_matrixr  rr   rr   rs   %test_issue_17247_expression_blowup_11  s   
 "rA  c                  C   s^   t dddd } td |  dddt dddiksJ W d    d S 1 s(w   Y  d S )Nrj   c                 S   r%  r&  r  r   rr   rr   rs   r     r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Trg   r   rh   )r   rZ   	eigenvalsr   r  rr   rr   rs   %test_issue_17247_expression_blowup_12  s   
""rC  c               	   C   sz  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s@J |d d ttdtd   d ksTJ |d d dks^J |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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 S )	Nr   rg   re   )r   r   r   rg   FT)deepnumerr   )r   rN   
eigenvectsr@   r,   )r  evrr   rr   rs   %test_issue_17247_expression_blowup_13  s0    ("P"("P"rH  c                  C   s   t dddt dt gd dt dt gd  d } tdO |  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seJ W d    d S 1 spw   Y  d S )Nr   rg   rh   Tr   r;  )r   rN   rZ   echelon_formr  rr   rr   rs   %test_issue_17247_expression_blowup_14  s   4
2""rJ  c                  C   s   t dddt dt gd dt dt gd  d } tdA |  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sWJ W d    d S 1 sbw   Y  d S )Nr   rg   rh   Tr   )r   rN   rZ   rowspacer  rr   rr   rs   %test_issue_17247_expression_blowup_15  s   4
r"rL  c                  C   s   t dddt dt gd dt dt gd  d } tdW |  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smJ W d    d S 1 sxw   Y  d S )Nr   rg   rh   T)r   rN   rZ   columnspacer  rr   rr   rs   %test_issue_17247_expression_blowup_16  s   4
"rN  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sJ W d    d S 1 sw   Y  d S )Nr   c                 S   r/  rr   rq   r  rr   rr   rs   r     r   z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>r0  Trg   r   r   re   r@  rf   r   rh   r   ri   r'  rj   r?  )r   r   rZ   	nullspacer  rr   rr   rs   %test_issue_17247_expression_blowup_17  s   
&&&&&&"rP  c                  C   sn   t dddt dt gd dt dt gd  d } td |  r%J W d    d S 1 s0w   Y  d S )Nrj   rg   rf   T)r   rN   rZ   is_nilpotentr  rr   rr   rs   %test_issue_17247_expression_blowup_18  s   4
"rR  c                  C   sF   t td} td |  rJ W d    d S 1 sw   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!   rZ   is_diagonalizabler  rr   rr   rs   %test_issue_17247_expression_blowup_19   s   
"rT  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C |  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sgJ W d    d S 1 srw   Y  d S )	Nrg   r   T)rg   r   r   r   r^  rW  r  re   )r   rN   rZ   diagonalizer  rr   rr   rs   %test_issue_17247_expression_blowup_20*  s*   
"rV  c                  C   V   t td} td | jddt tdksJ W d    d S 1 s$w   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!   rZ   r  r  rr   rr   rs   %test_issue_17247_expression_blowup_21=     
"r\  c                  C   rW  )NrX  TLUr  rZ  r[  r  rr   rr   rs   %test_issue_17247_expression_blowup_22K  r]  r_  c                  C   sZ   t td} td | jdd t tdksJ W d    d S 1 s&w   Y  d S )NrX  TADJr  rZ  )r   r!   rZ   r  r,   r  rr   rr   rs   %test_issue_17247_expression_blowup_23Y  s   
""ra  c                  C   V   t td} td | jddttdksJ W d    d S 1 s$w   Y  d S )NrX  TCHr  rZ  r"   r!   rZ   r  r   r  rr   rr   rs   %test_issue_17247_expression_blowup_24g  r]  re  c                  C   rb  )NrX  TLDLr  rZ  rd  r  rr   rr   rs   %test_issue_17247_expression_blowup_25u  r]  rg  c                  C   J   t td} td |  dksJ W d    d S 1 sw   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]]Trh   r   r!   rZ   rankr  rr   rr   rs   %test_issue_17247_expression_blowup_26  s   
	"rk  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' |  \}}| t td ksEJ |t tdksOJ W d    d S 1 sZw   Y  d S )Nr   rg   Ta  [
            [    0,  4*x/(x**2 - 2*x + 1), -(-17*x**4 + 12*sqrt(2)*x**4 - 4*sqrt(2)*x**3 + 6*x**3 - 6*x - 4*sqrt(2)*x + 12*sqrt(2) + 17)/(-7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 + 8*x**3 - 2*x**2 + 8*x + 6*sqrt(2)*x - 5*sqrt(2) - 7), -(12*sqrt(2)*x**4 + 17*x**4 - 6*x**3 - 4*sqrt(2)*x**3 - 4*sqrt(2)*x + 6*x - 17 + 12*sqrt(2))/(7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 - 8*x**3 + 2*x**2 - 8*x + 6*sqrt(2)*x - 5*sqrt(2) + 7)],
            [x - 1, x/(x - 1) + 1/(x - 1),                       (-7*x**3 + 5*sqrt(2)*x**3 - x**2 + sqrt(2)*x**2 - sqrt(2)*x - x - 5*sqrt(2) - 7)/(-3*x**3 + 2*sqrt(2)*x**3 - 2*sqrt(2)*x**2 + 3*x**2 + 2*sqrt(2)*x + 3*x - 3 - 2*sqrt(2)),                       (7*x**3 + 5*sqrt(2)*x**3 + x**2 + sqrt(2)*x**2 - sqrt(2)*x + x - 5*sqrt(2) + 7)/(2*sqrt(2)*x**3 + 3*x**3 - 3*x**2 - 2*sqrt(2)*x**2 - 3*x + 2*sqrt(2)*x - 2*sqrt(2) + 3)],
            [    0,                     1,                                                                                            -(-3*x**2 + 2*sqrt(2)*x**2 + 2*x - 3 - 2*sqrt(2))/(-x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x + 1 + sqrt(2)),                                                                                            -(2*sqrt(2)*x**2 + 3*x**2 - 2*x - 2*sqrt(2) + 3)/(x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x - 1 + sqrt(2))],
            [1 - x,                     0,                                                                                                                                                                                               1,                                                                                                                                                                                             1]]a  [
            [0, 1,                       0,                       0],
            [0, 0,                       0,                       0],
            [0, 0, x - sqrt(2)*(x - 1) + 1,                       0],
            [0, 0,                       0, x + sqrt(2)*(x - 1) + 1]])r   rN   rZ   r  r,   r!   r  rr   rr   rs   %test_issue_17247_expression_blowup_27  s   
"rl  c                  C   sN   t td} td |  tdksJ W d    d S 1 s w   Y  d S )NrX  Ta  [
            sqrt(14609315/131072 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2)])r   r!   rZ   singular_valuesr  rr   rr   rs   %test_issue_17247_expression_blowup_28  s   
"rn  c                  C   rh  )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   ri  r  rr   rr   rs   test_issue_16823  s   
"ro  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 |  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sWJ W d    d S 1 scw   Y  d S )N)	rg   rg   rg   rg   rg   r   rg   r   r   rg   re   r   r   r?  r   r   r@  rf   r   rh   r  rG  T)	r   r   r   r   rg   r   r   r   r   )	r   r   r   r   r   r   rg   r   r   r:  )r   r@   rZ   r<  r!   r  rr   rr   rs   test_issue_18531  s0   6DDDDD6

$rp  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 s*w   Y  t tg   krAtddg ksDJ  J tg gtd	dg ksQJ tg g gtd
dg ks_J t  td	gdgg d	gdggksuJ W d    n1 sw   Y  t  td	gdggj d	ggdggksJ W d    n1 sw   Y  tdgg} t  tj| d< W d    n1 sw   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sJ ||ks%J t||ks.J td
dtd	d}td	dtdd}t||g}|j
dksNJ |jdksVJ |d d  g dkscJ ttd
td
kspJ tttd
ttd
ksJ t|| ksJ tt|t| ksJ |t|usJ 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  t|dd dd |D ks1J W d    n	1 s<w   Y  ttd
tdgttd
gksUJ 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sJ d S )Nc                   S   s   t ddtdS )Nri   r  )r   r   rr   rr   rr   rs   r     r   ztest_creation.<locals>.<lambda>c                   S   s   t ddg S )Nri   r   r{  rr   rr   rr   rs   r     r   c                   S      t dd S r  r{  rr   rr   rr   rs   r     r   ri   r  rf   r   rg   re   r  rx   r   r   r   rh   )rg   rg   re   re   re   )rf   rf   rf   rh   rh   Fr  r   ry   rz   rk   c                 S   s   g | ]}|gqS rr   rr   r  rr   rr   rs   r   #  r  z!test_creation.<locals>.<listcomp>c                   S      t tdtddgS )Nre   r   rf   r   r3   rr   rr   rr   rs   r   '      c                   S   rr  )Nre   rf   r   rs  rr   rr   rr   rs   r   (  rt  )ri   rj   rj   )r]   rP  r   r   ra   r   r  r!   EmptySetrN   ro   rn   r   r-   r   as_immutable
as_mutabler3   r   )
r  rI   r   rJ   c23c13rK   datr   r   rr   rr   rs   test_creation  s   
*&*"4&((r{  c                   C   s   t dtddtddd tddd tddd tddd tddd tddd t g dg dg d	g d
gks?J d S )Nrf   re   rg   rh   ri   rj   r   )rg   re   re   re   rf   rf   )rh   re   re   re   ri   ri   )rj   rj   r   r   ri   ri   )r   	irregularr3   rr   rr   rr   rs   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s$J tdddd }|dd d f tdddks<J |dddf tddd	ksLJ tg d
g dg dg dg}|d d df tddg dksnJ |dd d d f tg dg dgksJ d S )Nrh   rf   re   r   c                 S      | | S r   rr   r   rr   rr   rs   r   >  ri  ztest_slicing.<locals>.<lambda>rg   r   r   r  )rh   ri   rj   r   )r   r   r   r   )rG        r  r   )rf   r   r   r  r   )r-   rG   r   )m0r|   r}   rr   rr   rs   test_slicing9  s        $0r  c                  C   s   t d} td| ddddf< | tdksJ td| d dd df< | tdks,J tddd| d d df< | tdks@J t d| d d d d f< | t dksTJ g d| d d d d f< | tdkshJ ddg| d ddf< | td	kszJ d S )
Nrh   re   )rX  rX  r  rW  rg   r   r   )r\  )re   rg   r   r   )rf   r   rg   r   )rh   r   r   rg   r   r   rK  r  r  r     ))r   re   rf   rh   )r   rj   r   r   rK  r  )rG   r-   r   r   rr   rr   rs   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s&J |d	d
tdks2J d S )Nrf   rg   r   )	rg   r   r   r   rg   r   r   r   rg   rh   c                 S   r~  r   rr   r   rr   rr   rs   r   f  ri  ztest_reshape.<locals>.<lambda>)r   r   )rf   rh   re   r   re   rj   ))r   rg   re   rf   rg   re   )rf   rh   re   rf   rh   ri   )r-   reshaper   r  r|   rr   rr   rs   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 )Nrf   c                 S   s   d|  S r  rr   rq   rr   rr   rs   r   n  ri  z test_applyfunc.<locals>.<lambda>re   c                 S      dS Nr   rr   rq   rr   rr   rs   r   o  r   )r-   	applyfuncrG   )r  rr   rr   rs   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sJJ tddd}t tt| gjddt t|tt|  gkslJ t g dg dg d	g t d
d
t	ddgg dg dgksJ d S )Nre   rf   rI   Tr  )complexr   )r   r   r   r   rg   )r   rg   r   r   )
r   rN   rO   r,   r#   r+   r   r(   r?   r   )r  r|   rI   rr   rr   rs   test_expandr  s   8F
r  c                  C   s@  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sQJ | tttt@ }|t td tgttd  td t ggksvJ | t	tt	t@ }|t td t gt td  td  t ggksJ d S r  )
r   r   rN   r@   rO   refiner   r  r  r  r  rr   rr   rs   test_refine  s   .<0:r  c                  C   s0  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s0J |  }|  || ks>J td}| t dd|dksNJ d	D ]}d
D ]}t |d||d} | | jkseJ qTqPt dddd} d}t| jd D ]}t| jd D ]}| ||f dkr|d7 }qqw|dksJ d S )Nrf   )seedrh   r      T)r  	symmetric)r  prng)r   r   )r  F      )r  percentr  r   rg   r  )minr  r  )r6   r3  r>   randomRandomr  r   rx  )r  r!   rngr  r  
zero_countr   r   rr   rr   rs   test_random  s2   

r  c                     sr  t d} |  t dksJ | jddt dksJ | jddt dks&J | jddt dks2J | jddt dks>J | jddt dksJJ tg dg d	g d
g} |  }| | t dkseJ | jdd|ksoJ | jdd|ksyJ | jdd|ksJ | jdd|ksJ | jdd|ksJ 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 sJ t  g d'g d(g d)gt fd-d+d, D s7J d S ).Nrh   r^  r  r`  rc  rf  QR)re   rf   ri   )rf   rj   re   )r   rf   rj   rf   )r   r   r   r   rg   r   r   rg   r   rg   rg   rg   r   r   r   rg   rg   r   r   r   r   rg   rg   r   r   )rg   r   rg   r   r   rg   r   r   rg   r   rg   r   rg   rg   rg   r   rg   rg   r   r   r   r   r   rg   r   )rg   rg   rg   rg   r   rg   r   r   rg   rg   r   r   r   rg   rg   rg   rg   r   r   rg   rg   r   r   rg   rg   )rg   r   r   r   r   r   rg   rg   r   r   rg   rg   rg   r   r   r   r   r   r   rg   r   r   rg   r   r   )rg   r   r   rg   rg   rg   r   rg   r   r   rg   r   r   rg   rg   rg   r   rg   r   r   r   rg   r   r   r   )rg   r   r   r   r   r   r   r   rg   rg   rg   r   rg   r   rg   rg   rg   rg   r   r   r   rg   rg   r   rg   )r   rg   rg   rg   r   r   r   r   rg   rg   rg   r   rg   r   rg   r   rg   r   rg   r   rg   r   r   rg   r   )rg   rg   r   r   r   rg   rg   r   r   rg   rg   r   rg   rg   r   rg   rg   r   rg   r   rg   rg   r   rg   rg   )r   r   rg   rg   rg   r   r   rg   rg   r   rg   rg   r   rg   r   r   r   r   r   r   rg   r   rg   r   rg   )rg   r   rg   rg   rg   r   rg   r   r   rg   rg   r   rg   rg   r   rg   rg   rg   rg   r   rg   rg   rg   r   r   )r   rg   rg   r   r   r   r   rg   rg   r   rg   r   rg   r   rg   rg   r   r   rg   r   r   r   rg   rg   r   )rg   r   r   rg   r   rg   r   rg   rg   r   r   rg   r   rg   r   rg   r   rg   r   rg   r   rg   rg   r   r   )r   rg   rg   r   r   rg   rg   r   r   rg   rg   r   rg   r   r   r   rg   r   r   rg   r   rg   rg   r   rg   )rg   rg   rg   r   rg   r   r   rg   r   r   rg   r   rg   rg   r   r   rg   rg   rg   r   rg   r   rg   rg   r   )r   rg   r   r   r   r   rg   rg   r   rg   rg   r   r   r   r   rg   r   rg   rg   rg   r   r   rg   r   r   )rg   rg   rg   rg   r   rg   rg   rg   rg   rg   rg   r   r   r   rg   r   rg   r   rg   r   r   rg   r   r   r   )r   r   r   rg   r   rg   rg   r   rg   r   r   r   r   r   rg   r   rg   rg   r   rg   r   rg   rg   r   rg   )r   rg   r   rg   r   r   r   r   rg   rg   rg   r   r   rg   rg   rg   r   r   rg   r   rg   rg   r   rg   rg   )rg   r   rg   rg   r   rg   r   rg   rg   r   rg   rg   rg   r   rg   r   r   r   r   rg   r   r   rg   r   rg   )r   r   r   rg   r   r   rg   rg   r   rg   rg   r   rg   r   rg   rg   r   r   r   r   r   r   r   r   r   )rg   r   r   r   r   rg   r   rg   r   r   rg   rg   r   rg   r   rg   rg   rg   rg   r   rg   rg   rg   rg   rg   )r   r   rg   rg   r   rg   r   r   r   rg   r   r   rg   r   r   rg   r   r   r   rg   r   rg   r   rg   rg   )r   r   r   r   r   rg   rg   rg   r   rg   rg   rg   r   r   r   rg   r   rg   rg   r   rg   rg   r   r   r   )r   r   rg   r   rg   rg   r   rg   rg   rg   r   r   rg   r   rg   r   r   rg   r   rg   r   r   r   r   r   )r   r   r   rg   rg   r   rg   rg   rg   r   r   rg   r   rg   r   rg   rg   r   rg   rg   rg   r   r   rg   r   BLOCKr   )r   1      )r   G   ^   );      A   c                 3   "    | ]}t | u V  qd S r   r  r  r   r  r"  r   rr   rs   r         ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   r  r   r  r  r  rr   rs   r    r  )r-   r  r   rx  r   r  r9  r   )r   AinvAArr   r  rs   test_inverse  sr   ""&r  c                  C   s  t d\} }}}}t d}tdddddd|  | d| |  d|  d|   d|  | d|  d|   gdddddd|  | d| |  d|  | d|d    dgdd|  | d| |  d|  d|   d|  | d|  d|   ddddgdd|  | d| |  d|  | d|d    dddddgdddd|  | d| |  d|  d|   d|  | d|  d|   ddgdddd|  | d| |  d|  | d|d    dddgdd|  | | d| |  d| |   dd|  | | d| |  d| |   dd|  | | d| |  d| |   dgg}| }|| td ttdks1J td	d
 |t	D dk sBJ d S )Nz)Tau Tau_syn_in Tau_syn_ex C_m Tau_syn_gap__hr         ?       @      re   r   c                 s       | ]}t |V  qd S r   r  r   frr   rr   rs   r        z:test_inverse_symbolic_float_issue_26821.<locals>.<genexpr>     @@)
rB   r   r  r-   r  rH   rG   maxatomsr
   )Tau
Tau_syn_in
Tau_syn_exC_mTau_syn_gapr  r  Mirr   rr   rs   'test_inverse_symbolic_float_issue_26821  s   L<L<L<|
$&r  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slJ tdd |t	D dk s|J d S )Nz-Tau, Tau_syn_in, Tau_syn_ex, C_m, Tau_syn_gapr  )r   r  r   r   r   r   r   r   re   r   r   )r   r   r   r  r   r   r   )r   r   r   r   r   rg   r   rg   r   c                 s   r  r   r  r  rr   rr   rs   r    r  z6test_matrix_exponential_issue_26821.<locals>.<genexpr>r  )
rB   r   r+   r*   r  rH   rG   r  r  r
   )rI   rJ   rK   rL   r   rM   r  Merr   rr   rs   #test_matrix_exponential_issue_26821  s    
$$r  c                  C   s:  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s3J 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s`J td t }ttg}t||t dt dt gdt dggksJ 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sJ 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 )Nrg   re   rh   rf   r   rj   )r   rN   rO   jacobianr.   rP   r  )ra  symsr  gansrr   rr   rs   test_jacobian_hessian  s0   (6>.>r  c                  C   s2  t ttttgtttd ttd  ksJ 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sCJ t dttd gtdksQJ 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sJ t tttttd gtdd | ksJ 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sJ d S )Nre   rf   rg   r'  rj   r6  r  )rF   r(   rN   r?   r+   r,   )w1w2rr   rr   rs   test_wronskian4  s&   2**J("R("
r  c                  C   s   t dtgtdggtdit ddgddggksJ t tdgtt dggtdtdit ddgddggks:J tD ]} t ddgddgg| dddiksTJ q<d S )	Nrg   rh   ri   re   r   r   r@  r   )r   rN   xreplacerO   r  r-   r!  rr   rr   rs   test_xreplaceE  s   $.r  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sbJ dt d }t|gg}|  |t|ggks|J |jtd |t|jtdggksJ 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s7J tddgddgg}d|   tdd	ksQJ d S )
Nr  r  rg   re   )ratior  rf   rh   "   )r#   r   r   rN   rO   r(   r5   r>   r4   r   r?   tracer   )r  r  r  eqr   rr   rr   rs   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s1J | jj| ks9J | j|  ksBJ d S )N)
rg   re   rf   rh   ri   rj   r   r   r   r   rg   re   rf   rh   ri   rj   r   r   r   r   )r   r  	transposer  rr   rr   rs   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s=J d S )Nc                   S   s
   t djS r   )r-   r   rr   rr   rr   rs   r     r   z!test_conj_dirac.<locals>.<lambda>rg   r   rW  r\  r   )r]   AttributeErrorr   r   r   r  rr   rr   rs   test_conj_dirac  s   

r  c                  C   s.   t g dg dg dg} |  dksJ d S )Nr   )r   ri   r   )r   r   r   r  r   r  r  rr   rr   rs   
test_trace  s
   r  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s"J d S )Nrg   re   r   r  r   )r   rx  rN   rO   )r   r  rr   rr   rs   
test_shape  s   
r  c                  C   sn  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s&J | ddd  | t td ddgdt td dggksDJ | dt td ddggksUJ | d}d|d< | d	 td kshJ | dd d
f }d|d< | d	 td ks~J | d}|t td dt gksJ d|d< | d	 td ksJ | d d df }d|d< | d	 td ksJ d S )Nr   rg   c                 S   s   | | d S r  rr   )rr   rr   rr   rs   r     r   z!test_col_row_op.<locals>.<lambda>re   rf   c                 S   s   | t |  S r   )rO   )rK   r   rr   rr   rs   r     r   *   rx   r   )r   rN   rO   row_opcol_opr   r   )r  r1r  rr   rr   rs   test_col_row_op  s2   
"

r  c                  C   sT   t g dg dg} | dd | d dksJ | d dks J | d d	ks(J d S )
Nrm   rl   rg   rf   rz   rG  rx   r  r  )r   row_multr  rr   rr   rs   test_row_mult  s   r  c                  C   s\   t g dg dg dg} | ddd | d dksJ | d	 d
ks$J | d dks,J d S )Nrm   rl   r  re   r   ri   rx   rj   rz   rh   r   re   r   )r   row_addr  rr   rr   rs   test_row_add  s   r  c                  C   s   t D ]H} | d}|dddd  || g dg dg dgks#J | dd	 }d
|d< |dddd  | || g dg dg dgksJJ qd S )Nrf   rg   r   c                 S      | d|  S r  rr   r  urr   rr   rs   r     r   z!test_zip_row_op.<locals>.<lambda>r   r  r   re   r   ry   c                 S   r  r  rr   r  rr   rr   rs   r     r   )re   r   r   )rh   r   r   r   )mutable_classesr-   
zip_row_op)r"  r  rr   rr   rs   test_zip_row_op  s   


r  c                  C   sd   t g d} t g d}t g d}| dvsJ | dvsJ | dks$J | |ks*J | |ks0J d S )Nrm   )re   re   rf   rr   )rg   rg   r{  )r   rI   rJ   rr   rr   rs   test_issue_3950  s   r  c                  C   s  G dd d} G dd d}|  }| }t g d}|| dks"J d||< |d dks.J t g dg d	g}|||f d
ksBJ |d|f d
ksLJ ||df d
ksVJ d|||f< |d dksdJ d
|d|f< |d d
ksrJ d||df< |d dksJ d S )Nc                   @   r  )ztest_issue_3981.<locals>.Index1c                 S   r  r  rr   r  rr   rr   rs   	__index__     z)test_issue_3981.<locals>.Index1.__index__Nrs  rt  ru  r  rr   rr   rr   rs   Index1  r  r  c                   @   r  )ztest_issue_3981.<locals>.Index2c                 S   r  r  rr   r  rr   rr   rs   r    r  z)test_issue_3981.<locals>.Index2.__index__Nr  rr   rr   rr   rs   Index2  r  r  rm   rf   ri   re   rl   rj   rg   rh   r  r   r{  )r  r  index1index2r   rr   rr   rs   test_issue_3981  s$   r  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 s+J d S )Nrm   Trg   re   rf   Frh   )r   is_upperrG   r   rr   rr   rs   test_is_upper  s   
r  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 )Nrm   Frg   re   rf   T)r   is_lowerr   rr   rr   rs   test_is_lower  s   r  c                  C   sT   t ddg d} |  sJ t ddgddgg} |  rJ t g } |  s(J d S )Nrh   )r   re   rg   rj   r   r   rg   re   r   r   r   rf   r   r   r   r   rg   r   r   rQ  r   rr   rr   rs   test_is_nilpotent  s   r  c                  C   s"  d\} }t | |}|d dt| | }||ksJ |j|j  kr(dks+J  J |j|j  kr8dks;J  J |j|j  krHdksKJ  J t dt ddksVJ tdtddksaJ t ddtdddgd ksqJ tddtdddgd ksJ |d |t | |ksJ d S )N)rf   ri   ri   rf   re   r   rj   rg   )rG   fillr3   rn   ro   rx  r   )r  r   rI   rJ   rr   rr   rs   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s*J | jdks1J d S )Nr   re   )rG   r   rn   ro   r   rr   rr   rs   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s-J 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s\J 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sJ | 
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 )Nre   rg   r   r  rf   )r   rN   rO   r?   r(   r*   r+   r  r4   r  r/   r   r   rr   rr   rs   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 )
Nrh   r   rg   )rY  r^  c                 S   s   | dkS r  rr   rq   rr   rr   rs   r   [  ri  z%test_inv_iszerofunc.<locals>.<lambda>)r  
iszerofuncr`  r  )r-   col_swapr  )r   r  rr   rr   rs   test_inv_iszerofuncW  s   

r  c                  C   s   t d\} }t| t| | t| g}t| |g}||}|||jks)J ||j|ks3J ||j|jks>J |jt|jd  | }|t	}|tddgd| d ggks_J d S )Nrho,phir   rg   re   )
rB   r   r(   r?   r  r  r-   rx  r  rE   )rhophiXYr!  r  rr   rr   rs   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sBJ d S )Nr  re   r   )rB   r   r(   r?   r  )r  r  r  r  r!  rr   rr   rs   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 ]D}tddD ]<}| d |d d f }|d |d d f }||}|j|ksNJ |j|ksUJ t|D ]}|d d |f |ksgJ qYq,q%d S Nrg   rf   )	r   r+   rN   rO   rP   r   r  rn   ro   )r  r  r   r   X_sliceY_slicer!  krr   rr   rs   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   r  r   rN   rO   rP   rr   r  rr   rs   r     r   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
     S r   )r  rr   r  r  rr   rs   r     r   c                      s     tttgttggS r   r  rr   r  rr   rs   r         )r   r+   rN   rO   rP   r]   r:  rr   rr   r  rs   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s%J qd S Nrg   rf   re   rh   )r   vecro   r   )r   m_vecr   rr   rr   rs   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s%J q| jdd}|d dks4J t dttt  gtt td  dgg} | jdd}|d tt td  ks\J t dttt  gtt dgg} | jddd}|d tt ks}J ttdd	  ttd
d	  ttdd	  ttdd	  d S )Nrg   re   rf   Fr  r   )r  check_symmetryc                   S      t ddgg S r	  r   vechrr   rr   rr   rs   r     r  ztest_vech.<locals>.<lambda>c                   S      t ddgddgg S r  r  rr   rr   rr   rs   r     r  c                   S   r  r	  r  rr   rr   rr   rs   r     r  c                   S   r  r  r  rr   rr   rr   rs   r     r  )	r   r  ro   r   rN   rO   r]   rV   rP  )r   m_vechr   rr   rr   rs   	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s+J d S )	Nrm   rg   re   rf   c                      s   t  S r   )r)   rr   r   rr   rs   r     ri  ztest_diag.<locals>.<lambda>F)strict)r)   r   r]   rP  rr   rr   r   rs   	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sXJ t| ||}|jddt|  | | ksrJ t| | || || }|jddt|  |  | |  | |  ksJ |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 )	Nrg   re   rf   T)try_block_diagr`  )r   r  r  )r   rN   rO   rP   r)   r  )rI   rJ   rK   r   rr   rr   rs   test_inv_block  s"    ((($
r!  c                   C   s   t tdd  t tdd  ttdtdksJ ttdtdks&J t tdd  ttdtdks9J ttdtdksEJ t tdd  ttdtdtddks\J 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   
   t ddS )Nrf   r   rG   rr   rr   rr   rs   r     r   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddS Nrg   re   rf   rh   r#  rr   rr   rr   rs   r     rJ  rf   c                   S      t dS N      @r#  rr   rr   rr   rs   r     ri  c                   S   r%  r&  r-   rr   rr   rr   rs   r     ri  rh   c                   S   r%  r   r{  rr   rr   rr   rs   r     ri  c                   S   r"  r   r{  rr   rr   rr   rs   r     r   c                   S   s   t ddggS r   r{  rr   rr   rr   rs   r     rJ  N)r]   rP  r:  rG   r8  r   r-   r3   rr   rr   rr   rs   test_creation_args  s    r)  c                  C   sX  t ddg d} |  rJ |  sJ | jddsJ t ddg d} |  s*J tddd} |  s6J |  s<J t ddg d} | tdddksNJ t ddtdd} |  r]J |  scJ t d	} |  smJ t d
} |  swJ t dddtd dt  d ttd d ddtddg	} |  sJ | jddrJ |  jddsJ d S )Nre   r   Fr   r  rg   rf   )	rg   r   r   r   re   r   r   r   rf   ))ri   r   r  rx   )ri   r   r   )r   rj   r   r   )r   is_diagonalr   r)   rG   rN   rO   r,   r   rr   rr   rs   test_diagonal_symmetrical  s,   6r,  c                     sb  t ddt gdt dgg   sJ t ddg d   r"J   r(J tt fdd tddd   \} }| tdksEJ | ksKJ t ddg d   sYJ   s_J   \} }| 	   |  |ksqJ t ddg d   sJ   sJ   \} }| 	   |  |ksJ | tdksJ | ksJ t ddg d	   sJ   \} }| 	   |  |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sJ | t ddgddggks,J t ddg d  dr<J tt fdd   sLJ   \} }| 	   |  |ks_J t ddg d   rnJ tt fdd t ddg d   rJ tt fdd td\}}}}t dd||||g   sJ   sJ d S )Nrg   re   rf   r@  rg   r@  r  rf   r   c                            S r   rU  rr   r   rr   rs   r   	  ri  z&test_diagonalization.<locals>.<lambda>r   )rg   r   r   rf   r]  )	rg   re   r   r   rf   r   re   r   re   r\  r   )r   rg   r   r   Tc                      r   )NTr/  rr   r   rr   rs   r   /	  r   r   rg   r   r   c                      r.  r   r/  rr   r   rr   rs   r   7	  ri  )	r@  rg   r@  r  rf   r   re   r   rh   c                      r.  r   r/  rr   r   rr   rs   r   ;	  ri  za b c d)r   r   rS  r   r]   rU   r)   rU  r-   r  as_numer_denomr+  rT   rB   )r   r   r   rI   rJ   rK   rL   rr   r   rs   test_diagonalization  sl   r2  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   rg   Trz   Fc                      r.  r   r/  rr   r   rr   rs   r   N	  ri  z"test_issue_15887.<locals>.<lambda>)r   rS  rU  r]   rT   rr   rr   r   rs   test_issue_15887D	  s   r3  c                     s:  t ddg d tt fdd t ddg d t ddg d}   \}}| |ks-J |   d ks7J t ddg d	 t ddg d
}   \}}| |ksSJ t ddg d t ddg d}   \}}| |ksoJ 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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 )Nrf   re   r-  c                      r.  r   )r  rr   r   rr   rs   r   T	  ri  z"test_jordan_form.<locals>.<lambda>)	r   r  rj   r   ir   rG  ir  )	r   r   r   r   rg   r   r   r   rg   rg   	r   rg   r   r   rh   r   r   rg   re   )	re   rg   r   r   re   r   r   r   re   )	re   rj   rg   rg   r   rg   re   r'  )	r   rg   r   r   r   r   r   r   r   )	rh   r   re   ri   r?  rf   rj   rh   )	r   rg   r   r   r   r   r   r   rg   rh   )rj   ri   r   r@  r@  r   rf   rf   re   rg   r   r@  r   rg   ri   ri   )re   rg   r   r   r   re   r   r   r   r   re   rg   r   r   r   re   )rj   re   r'  r@  re   r   rj   re   r   r7  r'  r   r   rf   rh   )r   r   r   r   r   re   rg   r   r   r   re   r   r   r   r   re   )ri   rh   re   rg   r   rg   r   r   r   r   rf   r   rg   rg   r   re   )rg   r   r   r   r   re   r   r   r   r   rh   rg   r   r   r   rh   z1.0n   )	precisionz2.0z3.14159265358979323846264338327z4.0)
r   r]   rU   r  rU  rS  r
   r  r  _prec)Jmustr   r!  termrr   r   rs   test_jordan_formQ	  sR   
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s\J t|| |  | ksjJ d S )	N)re   rh   rg   r   )r   re   r   rg   )r   r   re   rh   )r   r   r   re   re   rh   rg   r   )r   r   r  r>   r  )r   pqJmust1Jmust2r   r!  rr   rr   rs   #test_jordan_form_complex_issue_9274	  s(   





 rB  c                  C   s   t g dg dg dg dg} |  \}}|t g dg dg dg dgks*J |t g d	g dg dg dgks>J d S )
Nr  r   rV  rW  r   r\  r0  r  r]  )r   r  r  rr   rr   rs   test_issue_10220	  s"   
rC  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sNJ |t t dddgdt ddgddtdgdddtggkslJ d S )
Nr^  )r   r   r   r   )r   r   r   r   )r   r   re   rg   re   r   r   rg   r   )r   r  r,   r   r!   )r   r   r!  rr   rr   rs   test_jordan_form_issue_15858	  s&   .

rD  c                  C   sr  t d\} }}t| |  |d ||   || ||  g|| ||  | |d ||   gg}|t}|ttd ||  ||   d| |  ||  t  || |  ||   tddksaJ t|tu siJ tddgddgg}| |t  krttd t d ksJ  J tddgtdgg}|t}|jtksJ | 	|jttd dt  ksJ d S )	Nz
UA K_i K_wre   zZZ(K_i,K_w,UA)r*  rg   rf   r   rj   )
rB   r   r,  rN   r   r  r   genas_exprrE  )UAK_iK_wr   r,  r>  rr   rr   rs   test_Matrix_berkowitz_charpoly	  s&   *$
06
*rJ  c                  C   s   t d} td| }| tt| ggksJ td| }| tt| t| t| d gdt| t| gddt| ggksBJ d S )Nlamdarg   rf   re   r   )r#   r   r  _eval_matrix_exp_jblockr+   )r   r   rr   rr   rs   test_exp_jordan_block	  s   rM  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s6J t ddgddgg} |  t tdgdtggksPJ t| t tdgdtggks`J 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sJ d S )	Nrf   rh   r   r   r   ri   rg   r   )r   r+   r   r(   r?   )r   m_exprr   rr   rs   test_exp	  s   8  FrO  c               
      s   t d} td|    tt| ggksJ 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s\J tg dg d	g d
g tt fdd d S )NrK  rg   rh   r   re   rf   r   r   r   r  c                      r.  r   )r0   rr   r   rr   rs   r   
  ri  ztest_log.<locals>.<lambda>)r#   r   r  _eval_matrix_log_jblockr0   r]   rT   )r   rr   r   rs   test_log
  s(   *
rQ  c                  C   sR   t d} tdd| t| d t| d  tjg}t|\}}}}|tjks'J d S )NrN   rf   rg   re   )r#   r   r(   r?   r!   r   rS   rN   columnpivot_offset	pivot_valpivot_assumed_nonzero
simplifiedrr   rr   rs   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1!
  s
   (
rX  c                  C   sn   t d} tdd| t| d t| d  | d  t| d t| d  g}t|td\}}}}|dks5J d S )NrN   rf   rg   re   simpfunc)r#   r   r(   r?   rS   rY   rR  rr   rr   rs   :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s5J |d d dks?J |d d d|  ksKJ |d d dksUJ |d d dks_J d S )NrN   rf   rg   re   rY  r   )r#   r   r(   r?   rS   rY   lenrR  rr   rr   rs   +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   r{  rr   rr   rr   rs   r   R
  r  ztest_errors.<locals>.<lambda>c                   S      t ddggd S )Nrg   re   )g333333?ri   r{  rr   rr   rr   rs   r   S
  r  c                   S   r^  )Nrg   re   )rg   g@r{  rr   rr   rr   rs   r   T
  r  c                   S   s   t ddddS )Nrf   rh   T)rK   r  )r6   rr   rr   rr   rs   r   U
  rJ  c                   S   s   t ddgddS )Nrg   re   rh   rj   )r   r  rr   rr   rr   rs   r   V
  r   c                   S   s(   t ddgddggddgt ddgS ru   )r   copyin_matrixrr   rr   rr   rs   r   X
     ( c                   S   s"   t ddgddggddgt S ru   )r   copyin_listr  rr   rr   rr   rs   r   Y
  s
    c                   S   s   t g dg dg S )Nrm   )re   rf   r   r   r  rr   rr   rr   rs   r   [
  r  c                   S   s&   t ddddgt ddgddggS r$  )r   r   rr   rr   rr   rs   r   ]
     & c                   S   s"   t ddgt ddgddggS r$  )r   r   rr   rr   rr   rs   r   _
  s   " c                   S   "   t dgdt ddgddggS r$  )r   r   rr   rr   rr   rs   r   `
  
    c                   S   rd  r$  )r   r   rr   rr   rr   rs   r   b
  re  c                   S      t ddg S r   r  rr   rr   rr   rs   r   d
  r   c                   S   s   t dgdS r  )r   r  rr   rr   rr   rs   r   e
  r   c                   S      t ddgddggddS Nrg   re   rf   rh   ri   )r   minorrr   rr   rr   rs   r   f
      c                   S   rg  rh  )r   minor_submatrixrr   rr   rr   rs   r   g
  rj  c                   S      t g ddS Nrm   rg   r   crossrr   rr   rr   rs   r   h
  r  c                   S   rl  rm  r   dotrr   rr   rr   rs   r   i
  r  c                   S   s   t g dt ddgS )Nrm   rg   re   rp  rr   rr   rr   rs   r   j
  r  c                   S   s   t ddgg S r   rp  rr   rr   rr   rs   r   k
  r  c                   S   s   t ddgdS )Nrg   re   rI   rp  rr   rr   rr   rs   r   l
  r  c                   S   s   t ddgg dS )Nrg   re   rm   rp  rr   rr   rr   rs   r   m
  rt  c                   S   s   t g d S )Nrm   )r   r+   rr   rr   rr   rs   r   n
  r   c                   S   r  r$  )r   
normalizedrr   rr   rr   rs   r   o
  r  c                   S   s   t ddgjddS )Nrg   re   znot a methodr  rb  rr   rr   rr   rs   r   p
  r   c                   S   rf  r   r   
inverse_GErr   rr   rr   rs   r   q
  r   c                   S      t ddgddgg S r   rs  rr   rr   rr   rs   r   r
  r  c                   S   rf  r   r   inverse_ADJrr   rr   rr   rs   r   s
  r   c                   S   ru  r   rv  rr   rr   rr   rs   r   t
  r  c                   S   rf  r   )r   
inverse_LUrr   rr   rr   rs   r   u
  r   c                   S   rf  r   r  rr   rr   rr   rs   r   v
  r   c                   S   rf  r   r   r3  rr   rr   rr   rs   r   w
  r   c                   S   s   t ddgddggjddS )Nrg   re   rf   rh   zNot a real methodr  ry  rr   rr   rr   rs   r   y
  rj  c                   S   (   t g dg dg dg dgjddS )Nr   r   rK  r  zNot functionr  ry  rr   rr   rr   rs   r   {
  
    c                   S   rz  )Nr   r   rK  r  Fr{  ry  rr   rr   rr   rs   r   ~
  r|  c                   S   s*   t tddgddggtddgddggS r$  r.   r   rr   rr   rr   rs   r   
  s   * c                   S   s   t tddgddggg S r$  r}  rr   rr   rr   rs   r   
  r  c                   S   s   t tdd dS )NrN   re   rI   )r.   r#   rr   rr   rr   rs   r   
  r  c                   S   rq  )Nrf   )ri   re   r(  rr   rr   rr   rs   r   
  r   c                   S   rq  )Nrf   )re   ri   r(  rr   rr   rr   rs   r   
  r   r  c                      r   )Nzmethod=LU_decomposition())r3  rr   r  rr   rs   r   
  r   )r   r   r   rm   re   rf   rh   r   c                           dS )Ng@)r   rr   r  Vrr   rs   r   
  r   c                      r  )Ng)r   rr   r  rr   rs   r   
  r   )r]   rP  r   rV   r:  rU   r   rr   rr   r  rs   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r#dks&J  J t tdddd t tdddd   krAdksDJ  J t tg dg dgd	ksTJ tdgtdggksaJ t rfJ t tg ksoJ d S )
Nr   rg   re   c                 S   r  r  rr   r   rr   rr   rs   r   
  r   ztest_len.<locals>.<lambda>c                 S   r  r  rr   r   rr   rr   rs   r   
  r   r   r   rj   )r\  r   rr   rr   rr   rs   test_len
  s   : 
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s=J | 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shJ t ddttg}|tt ddtd d tt gksJ d S )Nrg   rh   re   r   ri   rf   )r   rN   rO   r/   )r   r   rr   rr   rs   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s3J | tt d	ks>J t| tt dddddt ffksQJ t| tt d	ks\J |  }t|tt|slJ |ttdddddt ffksJ |ttd	ksJ t|ttdddddt ffksJ t|ttd	ksJ | jtd
dt| td
dksJ t| td
dt| td
dksJ d S )Nrg   rh   re   r   ri   r   r   r   )r   r   r   Fr  )	r   rN   rO   r  r*   r  rv  r   r[   )r   A_immrr   rr   rs   	test_diff
  s   (&&&& $r  c               
      sn  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s3J t| | tddgddggddgddgggddgddggddgddggggks\J |  }||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||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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s%J td}|ttt  tttggt t t tgksKJ  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sJ tttt }|ttgg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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s J  ttt tttffdd ks:J  ttt tttffdd ksTJ  tttggtttfft fd	d
tttfD kssJ ttttgg}t|t	sJ |tddggksJ td tttgg}t|t	sJ |tdtd  dggksJ d S )Nrg   r   re   )re   re   rg   r  rf   r   r  c                    s&   g | ]  fd dt ttfD qS )c                    s   g | ]
}  | qS rr   )r*   r  )fxyzr   rr   rs   r   
  rj  z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)rN   rO   rP   )r   r  )r   rs   r   
  rc  z'test_diff_by_matrix.<locals>.<listcomp>)r   rN   rO   rP   rM   r*   r   rv  rI   r   rJ   rG   rx  r   r?   r+   r(   r   r  )r   r  r   dBr  exprresrr   r  rs   test_diff_by_matrix
  sF   RRRR"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s2J d S )Nrg   rh   re   r   ri   c                      s    j S r   )nonexistantattributerr   r   rr   rs   r   
  s    ztest_getattr.<locals>.<lambda>r*   r   r   r   )r   rN   rO   r]   r  getattrrr   rr   r   rs   test_getattr
  s   (.r  c                  C   s   t g dg dg dg} | jsJ | j} | jsJ d| d< | jdu s%J t g dg dg dg} | jr7J tdd	} | jsAJ d S )
Nr   r   r   rg   )r   r   Fr   ri   re   )r   r  r  r  rG   r   rr   rr   rs   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sAJ td} | jd
d}|tddgddtd t ggks_J ||j | kshJ td} |  }||j | ksyJ |js~J |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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s'J ||j | ks1J t
d} |  }||j | ksCJ |jsIJ |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 d S )Nc                   S      t d S Nr  r   choleskyrr   rr   rr   rs   r     r   ztest_cholesky.<locals>.<lambda>c                   S   r  Nr  )rf   rh   r  rr   rr   rr   rs   r     r   c                   S      t dt dfdf S Nri   r   ry   )r   r   r  rr   rr   rr   rs   r     r  c                   S   r  Nr  )ri   rg   r  rr   rr   rr   rs   r   	  r   c                   S      t djddS Nr  F	hermitianr  rr   rr   rr   rs   r   
  r   ri   r   ry   Fr  rg   r  re   rj   ))r  r  r   )r  r  r   )r   r   r   r*  )rf   rf   r   )r   rg   rf   rh   r   r   r   r  rf   c                   S   r  r  r"   r  rr   rr   rr   rs   r     r   c                   S   r  r  r  rr   rr   rr   rs   r     r   c                   S   r  r  )r"   r   r  rr   rr   rr   rs   r     r  c                   S   r  r  r  rr   rr   rr   rs   r     r   c                   S   r  r  r  rr   rr   rr   rs   r     r   )r]   rU   rP  r   r   r  r@   r  r  r,   r"   r`  rr   rr   rs   test_cholesky  sL   (
"@.*$@0r  c                  C   s  t ddd} tt| t| g}t|ddksJ |dtt| d t| d  tddks4J tdtddgg}| td	td
d tj	ksOJ |t
t|ksZJ |t
 t|ksfJ tddgddgg}|ddksyJ |ddksJ |ddksJ tddtdd  krdksJ  J |t
dksJ 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sJ |dtju sJ |dtdd ksJ tddgddgg}tddgddgg}tdt gtdgg}tddgddgg}||||g}t ddd}dD ]W}td|tju sYJ |D ]!}	|D ]}
|	||
| |	|
 | }|dksyJ q_q[||||fD ]}t|| |t|||  }|dksJ qqJt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 ]q}|dkrtg d|tju sJ |dkr,|D ]&}	|D ] }
|	||
| |	|
 | }t|dktju s(J q	q|ddddtjtjfv rX|D ]}	t||	 |t||	|  }|dksVJ q;qtddg d}|ddkslJ d S )NrN   Tr  re   rg   r   ri   rf   r  r   rh   r   r   	frobeniusfro%   )rg   re   r@  r  i  r   iI3 r   alpha)r  re   r   r@  )r   r   r   g      Y@r   )	rg   rf   r   r   r   r   rf   r   rj   )r#   r   r(   r?   rE   normr   r   r!   r   r4   r  r  r-   rO   r5   r@   r  r   r   rG   r>   r   InfinityNegativeInfinitytrue)rN   r  r   r   r   r   ra  r  orderr  r  difr  rI   rJ   rK   rL   r   rr   rr   rs   test_matrix_norm-  s   2"0,(

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s8J 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 sqJ tg  dks{J d S )NrN   Tr  rf   r   rx   rg   re   re   r  rk   c                 3   s*    | ]}t d  | V  qdS )r  N)r
   
epsilon_eqrE  r  )r   valMcrN   rr   rs   r    s   ( z(test_condition_number.<locals>.<genexpr>ri   re   r   rh   r   )r#   r-   r   condition_numberr   r   r   r   r(   r?   r  r!   r   r5   )r   r  rr   r  rs   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r$J | |kr*J | |ks0J | dks6J | dkr<J td}t d}||ksJJ ||krPJ d S )N)rm   rl   r   ))r   r   r   )rj   ri   rh   )rf   re   rg   r   )r   r   r   )r   r"   )r   r   r   r   rr   rr   rs   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s&J t g d} | jdd dt g dks<J d S )	Nrf   rh   ri   r   )r   r   g0.++c                 S   s   | j dddjS )Nr   T)r  chop)r  is_zerorq   rr   rr   rs   r     r   z!test_normalized.<locals>.<lambda>r{  )r   rr  r   r   rr   rr   rs   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   r  r   r-   print_nonzerorr   rr   rr   rs   r     r   z$test_print_nonzero.<locals>.<lambda>z[X  ]
[ X ]
[  X]
c                   S   s   t ddS )Nrf   r5  r  rr   rr   rr   rs   r     rJ  z[.  ]
[ . ]
[  .]
)rb   rr   rr   rr   rs   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s&J t ddgddgg} t ddgddgg}tD ]<}|d}| |ksIJ | td|dksSJ t||ks[J |d}||ksfJ |td|dkspJ t||ksxJ q<d S )Nrf   rh   rg   rG  r   re   r!  )r   r-   rG   r3   r  r  )r   rP   r"  r   rr   rr   rs   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sJ tdjr"J t tdgddggjd ks1J ttdgddggjd ks@J ttdgddggjd ksOJ ttdgddggjd ks^J t tdgddggjdksmJ tddd} t | dgddggjdksJ d S )	Nr   rf   rh   rg   FrI   T)nonzero)	r   is_zero_matrixrG   r-   rN   r"   r   r   r#   r   rr   rr   rs   test_is_zero  s   "r  c            
      C   s  t d } t| }t|  }t| }t|  }t| }t|  }|| td tdks-J || td tdks;J || td tdksIJ | ddt|   ksWJ | ddt|   kseJ | ddt|   kssJ tdtdks}J tdtdksJ tdtdksJ tg dt d }tg dt d }tg dt d }	tt  d |	 ksJ tt  d |	 ksJ tt  d |		 ksJ t
t 
 d |	 ksJ tt 
 d |	 ksJ tt 
 d |		 ksJ d S )Nrf   rg   re   r   r   r   r   )r5   r9   r8   r7   r-   r  r(   r   from_axis_angleto_rotation_matrixr:   r;   r<   )
thetar3_plusr3_minusr2_plusr2_minusr1_plusr1_minusq1q2q3rr   rr   rs   test_rotation_matrices  s2   


r  c                   C   sj   t tdd dksJ ttdtdksJ ttdd  t tddks)J ttddks3J d S )	Nvectorrh   z	vector[4]rL   c                   S   rq  )NrL   r   )r   rr   rr   rr   rs   r     r   z%test_DeferredVector.<locals>.<lambda>testzDeferredVector('test'))strr   rC   r]   r   reprrr   rr   rr   rs   test_DeferredVector  s
   r  c                   C   s   t tdrJ d S )Nr  )rc   r   rr   rr   rr   rs    test_DeferredVector_not_iterable  s   r  c                   C      t tdd  d S )Nc                   S   s   t tdS )Nr  )r   r   rr   rr   rr   rs   r     r   z,test_DeferredVector_Matrix.<locals>.<lambda>)r]   r:  rr   rr   rr   rs   test_DeferredVector_Matrix     r  c                  C   s8  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s2J t|j|jgtddddgtdd| dd | dd ggksTJ 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sJ ttdg}t|tdgggksJ d S )Nrg   re   rf   ri   r   Tr   )r   r   r   r  r@   r	   )rZ  r|   r}   ra  rr   rr   rs   test_GramSchmidt  s   
.. 
r  c                   C   s4   t g dddksJ t g dddddksJ d S )Nr   rg   r   F)zero)r'   rr   rr   rr   rs   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s-J d S )Nr   rf   )r   rf   )r   rG   rx  rr   rr   rr   rs   test_zero_dimension_multiply.  s   ""r  c                      s   t ddtd  dd d f t ddggksJ  dd d f t ddggks*J  d d df t ddggjks<J  d d df t ddggjksNJ tt fdd tt fdd d S )	Nre   rh   rg   rf   r   c                      s    dd d f S r  rr   rr   r   rr   rs   r   :  r   z'test_slice_issue_2884.<locals>.<lambda>c                      s    d S )Nr  rr   rr   r   rr   rs   r   ;  ri  )r   r   r  r]   r   rr   rr   r   rs   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s#J d S )Nr   rf   r   ry   rg   )rG   rx  r   rr   rr   rr   rs   test_slice_issue_3401>  s    *r  c                  C   s  t dd} d| d< | d d df tg dksJ | d dks!J | dd dgks,J d| d< | d dks8J | ddd f tddggksIJ tdd	gg| ddd f< | dd d f tg d
gksgJ ddgg| ddd f< | dd d f tg dgksJ d| d< | d d d df tg dksJ 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 tg d| d< | d d df tg dksJ d S )Nrf   rg   r   r   rh   r  rk   ri   rj   )rg   ri   rj   +   )rg   r  r     rx   )r  rg   r   r  )rG   r   r"   )r  rr   rr   rs   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sJ ttdd  t g dtddgdtdgg t  d  jks=J   d td	ksIJ  jtd
d td	ksWJ tt fdd tt fdd tt fdd d S )Nrg   re   r   )r   c                   S   ru  r   rb  rr   rr   rr   rs   r   ^  r  z'test_invertible_check.<locals>.<lambda>)r   r   r   r   rf   r   c                          j ddS )Nr`  r  r  rr   r   rr   rs   r   i  r   c                      r  )NrY  r  r  rr   r   rr   rs   r   j  r   c                      r  )Nr^  r  r  rr   r   rr   rs   r   k  r   )	r   r<  r]   rP  rN   r\  rn   r-   r=   rr   rr   r   rs   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)rf   ri   rf   )rB   rE  r   )rN   rO   r   rr   rr   rs   test_issue_3959n  s   ,r  c                   C   s$   t tddgddggdksJ d S )Nrg   re   rf   rh   zMatrix([[1, 2], [3, 4]]))r  r   rr   rr   rr   rs   test_issue_5964t  s   $r  c                  C   s<   t d\} }tt| d| g|d | d ggdksJ d S )Nr  re   rf   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))rB   rA   r   r  rr   rr   rs   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r(J tddddddjs5J tddtdjr@J tdddddjrLJ tddddddddjr[J d S )	Nrf   r   rg   )rx   rk   r  re   rj   )rx   rk   )rx   rk   r  ry   r  )r-   is_Identityrv  rG   r3   r   r"   r   rr   rr   rr   rs   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sGJ tdddt gjttddt gdd	dt ksbJ tdddt gjttddt gd
d	dt ks}J tdddt gjttddt gd
dddt ksJ tdddt gjtddt dgd
ddddt  ksJ 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 )Nrg   rf   r  rm   r  re   r   Fr  Tr  physicsr  conjugate_conventionrh   ri   rj   rightr   left)r  c                   S   s    t ddgjt ddgdddS )Nrg   re   rf   rh   Tr  r  rp  rr   rr   rr   rs   r     s     ztest_dot.<locals>.<lambda>)r3   rq  r   r   r]   rP  rr   rr   rr   rs   test_dot  s   "2668<<0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}| |sQJ td tds^J |  | sjJ d S )NzB_x B_y B_z E_x E_y E_zTr  r   rf   )rB   r   dualequalsr-   rG   )B_xB_yB_zE_xE_yE_zr'  Fdrr   rr   rs   	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 s6J | jddd u s@J | jdd	 dd u sLJ | d
  | d
< |  d u s[J | d
  | d
< |  } | jdddu spJ d| d< |  du s|J d S )Nrg   re   Frf   r   Tr   c                 S   r   r   rr   rq   rr   rr   rs   r     r   z%test_anti_symmetric.<locals>.<lambda>r=  rx   )r   r   rN   rO   r,   r   rr   rr   rs   test_anti_symmetric  s   Dr  c                  C   s   t d} | jdd\}}||j |j|   kr t|jks#J  J | jddd\}}||j |j|   kr@t|jksCJ  J || |  | ksOJ d S )N)r  r=  Tr  )r  sort)r   rU  r  r-   ro   r  )r   r   r   rr   rr   rs   #test_normalize_sort_diogonalization  s   ..r  c                   C   r  )Nc                   S   s   t g dt ddg gS )Nrm   r   rg   r{  rr   rr   rr   rs   r     r  z!test_issue_5321.<locals>.<lambda>)r]   rP  rr   rr   rr   rs   test_issue_5321  r  r  c                  C   s   t tddtd t g dg dgksJ t tddtd t ddgddgddgddggks6J t} | | td| dtd t g dg dgksTJ d S )Nre   )rg   r   re   r   )r   rg   r   re   rg   r   )r   r   r-   r   r"   r!  rr   rr   rs   test_issue_5320  s    r  c                  C   sV   t dgg} t| }t || t ddggksJ t || t dgdggks)J d S r  )r   rC   r   r   )r   AImrr   rr   rs   test_issue_11944  s   $r  c                     s   g d} g d}t g d}|j} fdd}tD ].  | } |}|||| |||j| ||j|j| ||j|| qttdd  d S )Nrm   r   )r   rh   r   c                    s    || ksJ t |  ksJ d S r   )r  )r  r  r!  rr   rs   r    s   ztest_cross.<locals>.testc                   S   s"   t ddddgt ddddgS r   rn  rr   rr   rr   rs   r     s   "ztest_cross.<locals>.<lambda>)r   r  r  ro  r]   rV   )rI   rJ   r   r   r  r   r   rr   r!  rs   
test_cross  s   r  c                  C   s^   t tttg} t tttg}|  | | |ksJ |  	 s#J |  
 | ks-J d S r   )r   rN   rO   rP   rI   rJ   rK   hatro  r   vee)v1v2rr   rr   rs   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r.J q"d S r  )immutable_classesr-   r\  popr  r  r   )r"  r  rr   rr   rs   	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   rg   )r   r   r  adjoint)rz  r  r"  rr   rr   rs   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s(J d S r   )r   rN   r  r!   r   NegativeOner#   r   rr   rr   rs   
test_atoms  s    r	  c            	         s  t ttgttgg} t| jddt|  ksJ t ddgddgddggt g d	g d
gt ttgg}|D ]2}|jdd}|| }|| }t|| |ksRJ t|| |ks\J |j|kscJ |j|ksjJ q8|D ]4}t|jdd}|| }|| }t|| |ksJ t|| |ksJ |j|ksJ |j|ksJ qmddl	m
  | jdd}|  }tdtdtdtdi}t fddt||||D sJ d S )NRDr  r  h   i  rf   r@  ri   )rg   r   r   )r   r     EDr   compi_ib,  i  ij  c                 3   s&    | ]\}} |  |  V  qd S r   r  )r   r   r   r  rr   rs   r  A  s
    
ztest_pinv.<locals>.<genexpr>)r   rI   rJ   rK   rL   r>   pinvr  r  sympy.core.numbersr  r  r  rE  )	A1Asr   A_pinvAApApAr?  wrepsrr   r  rs   	test_pinv  s:    
r  c                  C   s~   t g dg dg dg dg dg dgg} | D ]#}|jdd}|| }|| }|j|ks0J d	d
 }||j|s<J qd S )N)=   r  7   r  r  r   )>   `   U   r  r  r   )E   8   r  rh   6   r   )r   r!  [   )   r  r   )r   r  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 rr   r  )r   r  rr   rr   rs   r  f  rt  zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>c                 s   s    | ]	}t |d k V  qdS )g|=Nr  )r   r   rr   rr   rs   r  h  r  zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>)r  r    r  r  r  )r   r   rootofsrootofs_approxdiff_approxrr   rr   rs   allclosed  s   
zEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose)r   r  r  )r  r   r  r  r  r(  rr   rr   rs   3test_pinv_rank_deficient_when_diagonalization_failsG  s"   	r)  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s$J d S r  )r3   r   rr   rr   rr   rs   test_issue_7201m  s   $(r*  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"   rN   free_symbolsr  rr   rr   rs   test_free_symbolsr  s   r,  c                      sv  zddl m  W n ty   td Y nw t g dtg dks&J t g dgtg dgks8J t g dg dgtg dg dgksPJ t tttgttttgksbJ tt	 fdd t dd	g d
dggtdd	gd
dggksJ t dd	gd
dggtdd	gd
dggksJ t g  g gtd	dg   krtg ksJ  J dS )zSee issue 7465.r   r/  r1  rm   rl   c                      s(   t  ddgddggddgddgggS )	Nrg   re   rf   rh   ri   rj   r   r   r{  rr   r-  rr   rs   r     r`  z#test_from_ndarray.<locals>.<lambda>rg   re   rf   rh   N)
r4  r/  r7  r^   r   rN   rO   rP   r]   NotImplementedErrorrr   rr   r-  rs   test_from_ndarrayw  s"    $$
40<r/  c                  C   s   ddl m}  z
ddlm}m} W n ty   td Y nw | |ddgddgg}|d dks2J t|g d	ks<J tt	 | |ddgddgg}W d    n1 sWw   Y  |d dksdJ t|g d	ksnJ d S )
Nr   
_matrixify)r/  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesrg   re   rf   rh   r   )
sympy.matrices.commonr1  r4  r/  r2  r7  r^   rp   r\   PendingDeprecationWarning)r1  r/  r2  r   rr   rr   rs   test_17522_numpy  s   
r5  c                  C   sx   ddl m}  zddlm} W n ty   td Y nw | |ddgddgg}|d d	ks0J t|g d
ks:J d S )Nr   r0  )r2  zEmpmath must be available to test indexing matrixified mpmath matricesrg   re   rf   rh         @)r  r  r'  r6  )r3  r1  mpmathr2  r7  r^   rp   )r1  r2  r   rr   rr   rs   test_17522_mpmath     r8  c                  C   sx   ddl m}  zddlm} W n ty   td Y nw | |ddgddgg}|d dks0J t|g d	ks:J d S )
Nr   r0  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesrg   re   rf   rh   r   )r3  r1  scipy.sparser:  r7  r^   rp   )r1  r:  r   rr   rr   rs   test_17522_scipy  r9  r<  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 s(J | d t | d< | jdu s7J d S )Nrg   re   rx   Frz   ry   r   r   rr   rr   rs   test_hermitian  s   
r=  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s@J 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 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sJ 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 )Nrm   r~  r   rg   r   )ri   rj   r   r   r   c                      r   r  r   rr   r   rr   rs   r     r   z+test_issue_9457_9467_9876.<locals>.<lambda>c                      r   Nr  r   rr   r   rr   rs   r     r   rf   re   rh   ri   c                      r   r  r   rr   r>  rr   rs   r     r   c                      r   r?  r   rr   r@  rr   rs   r     r   )r   r   r]   r   r   )r  r+  Orr   )r   r   rs   test_issue_9457_9467_9876  s.   



"
"rB  c                  C   s   t ddd\} }t d\}}td}tdd| ||tg}||  | | | | ks*J || | || | ks8J | | ||  ksBJ || || ksLJ ||  | t||  dgd||  ggksbJ d S )Nr  F)commutativeza bre   r   )rB   r-   r   rP   )rN   rO   rI   rJ   r  r   rr   rr   rs   test_issue_9422  s   0rD  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 ])\}}|D ]"}t| |}d
|v r?||n|d|}||krPt|t|ksRJ q0q*d S )Nr   r   )r   rj   rf   r   r   rg   re   rf   rh   joinr  )r   r  r  id)	r  rI   rJ   rK   opsr   opr  newrr   rr   rs   test_issue_10770  s   
rJ  c                  C   s>  t g dg dg dg} | g dg dt ddgdd	gd
dggks&J | g dg dt dgdgd
ggks<J | g dg dt g dgksOJ | g dg dt g dg dgkseJ | g dg dt ddg kswJ | g dg dt ddg ksJ | g dg dt dgdggksJ d S )Nrm   rl   r   r   )TTFrg   re   rh   ri   r   r   )TFF)TFT)FFFrf   r   )FTF)r   r   r   rr   rr   rs   test_issue_10658  s   ,&$$rK  c                  C   s~  t ddtd  dgdtd d d dtd d gg} |  dks&J 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scJ td
\}}}}}}}}}	}
}}t |||| || d	g|||| || d	g|||| || dg|||| || dg|	|
d|	 | |	|  d|
 | |
|  d	gg} |  dksJ d S )Nr   ri   re   rg   rf   r6  rh   r@  r   z/a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1)r   r@   rj  r   r>   r<  rG   rB   )r   axaybxbycxcydxdyexeyt0t1rr   rr   rs   !test_opportunistic_simplification  s   <4F rX  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 sSJ | |  dk s_J d S )N)g~jth?gRM@g(\M@)gDl)@gQgp=
cG@r   )r  r   r  )r   r  r  V瞯<)q7K<r  rh   )r  r   r   r   )rZ  r  r6  )r                 @)r[  r[  r  )r   r  r\  )r  rZ  g      )r   r<  r  r  )mmm_mixedm_floatm_invrr   rr   rs   test_partial_pivoting  s(   ra  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 s0J |d dks8J 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   )皙rb  gٿr   )rc  rd  g333333?r   c                 S   s   t | dk S )Ng [n<r  rq   rr   rr   rs   r   2  r   z*test_iszero_substitution.<locals>.<lambda>r{  r   )r  r   g4iҤIӿr   )r   r  glٲer   rX  rY  r  N)r   r<  r  )r   m_rref	m_correctm_diffrr   rr   rs   test_iszero_substitution+  s   rh  c            
      C   sL  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sJ |jd|	ddksJ |jd|	ddksJ d S )Nr   )Pointr   r  -   rf   r7  re   r  r@  rg   c                 S   s   t |  dk S )Ng#B;)r  r  rq   rr   rr   rs   r   H  r   z"test_issue_11238.<locals>.<lambda>T)r>   r  )	sympy.geometry.pointri  rD   r5   r   r@   r   r>   rj  )
ri  xxyyp1p2p0r|   r}   r~   Zrr   rr   rs   test_issue_11238:  s   0R

rr  c                  C   sh   t ddg d} | tj }| | }tD ]}|| \}}t|t| ks'J t|t| ks1J qd S )Nre   r   )r   r!   ImaginaryUnitr  as_real_imagrp   )r|   r}   r~   klsrI   rJ   rr   rr   rs   test_as_real_imagN  s   
rv  c                  C   sV   t ddg d} |  \}}|d t dddgksJ |d t ddg dks)J d S )Nrf   r4  rg   re   r   )re   rg   r   re   )r   jordan_cells)r   r   Jcellsrr   rr   rs   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s,J d S )	Nr   )Mod)r   rg   re   )r   r  r5  rf   )re   rg   re   rh   )re   r   rg   )sympy.core.modrz  r   )rz  r   r   rr   rr   rs   test_issue_14489d  s
   r|  c                  C   s\   zddl m}  W n ty   td Y nw tddgddgg}| |tdjjd	ks,J d S )
Nr   r-  r1  rg   re   rf   rh   )dtypefloat64)r4  r/  r7  r^   r   floatr}  name)r/  r  rr   rr   rs   test_issue_14943m  s   r  c                  C   s4   t ddd} td}| d dk}t|dksJ d S )Nr   rg   rI   rx   r   zm[0, 0] > 0)r   r#   r  )r   rI   rr   rr   rs   test_case_6913x  s   r  c                  C   s.   t ddd} td}| ||| iksJ d S )Nr   rf   rI   )r   r%   match)r   rI   rr   rr   rs   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s%J t dtdgt tdt gg} t j|  t dgtgdggt td gtdd gt gggksVJ t dtgdt gg}| \}}||j t dkssJ d S )Nrg   r   re   )r   r   r  r!   QRdecompositionr  r-   )r  r  r   rZ  rr   rr   rs   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s+J |dks1J d S )NrI   rf   rg   rJ   rx   r   )r   r   rq  r*   )rI   rJ   rK   rL   r   rr   rr   rs   test_issue_8207  s   
r  c                     s<  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s4J 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shJ t
tdd	  t
t fd
d	 tg dg dg dg dg  ttt  ksJ t
t fdd	 tddgddgg t t	ttd  ksJ 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   nthrootrg   re   rf   rj   rh   c                   S   s   t dtttS r   )rG   analytic_funcr0   rN   rr   rr   rr   rs   r     r   ztest_func.<locals>.<lambda>c                      s    t  tt t S r   )rN   r  r0   rr   r   rr   rs   r     r   )r   r   r   rf   )r   rg   r   r   )r   r   r   rg   c                      s     tttS r   )r  r@   rN   rr   r   rr   rs   r     r   r#  rG  r  )rf   r  rh   )r   r   r   )r   ri   r   r  )rg   re   r   r   )r   rg   rf   r   )r   r   rg   rf   )r   re   rg   rj   )r   r   rg   re   )r   r   r   rf   rX  )sympy.simplify.simplifyr  r   r  r?   rN   rM   r5   r(   r@   r]   rP  r+   r>   r,   r  rr   r   rs   	test_func  s$   HT  "  2r  z$Cannot create threads under pyodide.c               	   C   s   dd } t d1 tj }|| }| sJ W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Nc                  S   s&   t jd ksJ tdgg} | |  } dS r  )rX   stater   r   rr   rr   rs   r    s   ztest_issue_19809.<locals>.fT)rZ   
concurrentfuturesThreadPoolExecutorsubmitresult)r  executorfuturerr   rr   rs   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   rN   rO   r/   r!   r   r  rr   rr   rs   test_issue_23276  s
   r  (R  concurrent.futuresr  r  collections.abcr   sympyr   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r  rI   rJ   rK   rL   rM   rN   rO   rP   sympy.core.kindrQ   rR   sympy.matrices.determinantrS   sympy.matrices.exceptionsrT   rU   rV   sympy.matrices.kindrW   sympy.matrices.utilitiesrX   rY   rZ   $sympy.tensor.array.array_derivativesr[   sympy.testing.pytestr\   r]   r^   r_   r`   ra   sympy.utilities.iterablesrb   rc   importlib.metadatard   r  r  r  rt   rw   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r	  r  r  r  r-  r.  r<  rC  rF  rT  r[  rb  rk  rr  rz  r|  r}  r~  r  r  r  r  r  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  r7  r9  r=  r?  rA  rC  rH  rJ  rL  rN  rP  rR  rT  rV  r\  r_  ra  re  rg  rk  rl  rn  ro  rp  r{  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r)  r,  r2  r3  r=  rB  rC  rD  rJ  rM  rO  rQ  rX  r[  r]  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r)  r*  r,  r/  r5  r8  r<  r=  rB  rD  rJ  rK  rX  ra  rh  rr  rv  ry  r|  r  r  r  r  r  r  r  r  rr   rr   rr   rs   <module>   s   " ( 

		
$" O!,Jb-
R		:
	(	
		
 HK>
7(]%
		-%	
