a
    kh|}                    @   s  d dl Z d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z- d dl.m/Z/m0Z0m1Z1 d dl2m3Z3m4Z4 d dl5m6Z6 d dl7m8Z8 d dl9m:Z: d dl;m<Z<m=Z= d dl>m?Z? d dl@mAZAmBZBmCZC d dlDmEZE d dlFmGZG d dlHmIZI d dlJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZb d dlHmcZc d dldmeZemfZf d dlgmhZh d dlimjZjmkZkmlZl d d lmmnZn d d!lompZpmqZqmrZrmsZsmtZtmuZu d d"lvmwZw d d#lxmyZy d d$lzm{Z{ d d%l|m}Z} d d&l~mZ d d'lmZ d d(lmZmZmZmZmZmZmZmZ eNeOeLeMfZd d)lmZmZ d d*lmZmZ eu $ G d+d, d,eeeZW d   n1 s.0    Y  eu $ G d-d. d.eeeZW d   n1 sj0    Y  d/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZdQdR ZdSdT ZdUdV ZdWdX ZdYdZ Zd[d\ Zd]d^ Zd_d` Zdadb Zdcdd Zdedf Zdgdh Zdidj Zdkdl Zdmdn Zdodp Zdqdr Zdsdt Zdudv Zdwdx Zdydz Zd{d| 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 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd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d/d0 Zd1d2 Zd3d4 Zd5d6 Zd7d8 Zd9d: Zd;d< Zd=d> Zd?d@ ZdAdB ZdCdD ZdEdF ZdGdH Z dIdJ Z!dKdL Z"dMdN Z#dOdP Z$dQdR Z%dSdT Z&dUdV Z'dWdX Z(dYdZ Z)eqd[d\ Z*d]d^ Z+d_d` Z,dadb Z-dcdd Z.dedf Z/dgdh Z0erdidj Z1dkdl Z2dmdn Z3dodp Z4dqdr Z5dsdt Z6dudv Z7dwdx Z8dydz 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 ZJetddd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYdd ZZdS (      N)Hashable)Add)Functiondiffexpand)EFloatIIntegerRationalnanoopi)Pow)S)Symbolsymbols)sympify)Abs)explog)MaxMinsqrt)cossintan)	integrate)	transpose)HermitianOperatorOperatorDagger)PolyPurePoly)RootOf)sstr)	FiniteSet)signsimpsimplify)trigsimp)
ShapeErrorMatrixErrorNonSquareMatrixErrorDeferredVector)_find_reasonable_pivot_naive)	_simplify)GramSchmidtImmutableMatrixImmutableSparseMatrixMatrixSparseMatrix
casoratiandiageyehessianmatrix_multiply_elementwiseones
randMatrix	rot_axis1	rot_axis2	rot_axis3	wronskianzerosMutableDenseMatrixImmutableDenseMatrixMatrixSymboldotprodsimprot_ccw_axis1rot_ccw_axis2rot_ccw_axis3)_dotprodsimp_state)TupleWild)KroneckerDelta)flattencaptureiterable)ignore_warnings)raisesXFAILslowskipskip_under_pyodidewarns_deprecated_sympyQ)Array)ArrayDerivative)MatPow)
Quaternion)O)abcdxyzt)_MinimalMatrix_CastableMatrix)MatrixSubspacesMatrixReductionsc                   @   s   e Zd ZdS )SubspaceOnlyMatrixN__name__
__module____qualname__ ro   ro   P/var/www/auris/lib/python3.9/site-packages/sympy/matrices/tests/test_matrices.pyrj   G   s   rj   c                   @   s   e Zd ZdS )ReductionsOnlyMatrixNrk   ro   ro   ro   rp   rq   L   s   rq   c                 C   s   t | | dd S )Nc                 S   s   t | |kS N)intijro   ro   rp   <lambda>Q       z eye_Reductions.<locals>.<lambda>rq   nro   ro   rp   eye_ReductionsP   s    r|   c                 C   s   t | | dd S )Nc                 S   s   dS Nr   ro   rt   ro   ro   rp   rw   U   rx   z"zeros_Reductions.<locals>.<lambda>ry   rz   ro   ro   rp   zeros_ReductionsT   s    r~   c                  C   s   t tD ]\} }|dd}|jdkr:tdd |jD s>J |jdkrVt|jtu sZJ |jdkrrt|jtu svJ | d st|	 t
ttfv sJ qt| tu sJ qd S )N      )r   r   c                 s   s   | ]}t |tu V  qd S rr   )typers   .0ru   ro   ro   rp   	<genexpr>\   rx   ztest_args.<locals>.<genexpr>)	enumerateclassesrA   shapeallrowsr   rs   colsflatlisttuplerJ   todokdict)r{   clsmro   ro   rp   	test_argsX   s    "r   c               	   C   s   t tfD ]L} | dd}t  |j}W d    n1 s:0    Y  || ksJ qttfD ]L} | dd}t  |j}W d    n1 s0    Y  ||	 ks^J q^d S Nr   r   )
r4   r2   rA   rV   Z_matr   r5   r3   Z_smatr   )r   r   matZsmatro   ro   rp   test_deprecated_mat_smate   s    $$r   c                  C   s8   t ddttg} | t t ddtt tt gks4J d S N   r   )r4   rb   rc   rd   )vro   ro   rp   test_divisionr   s    r   c                      s   t g dtttgdt dtt gg    t g ddt dt dt gdt ddt t ggkshJ t ddddgtt fdd	 d S )
Nr   r   r   r   i)r         r   ir   c                      s     S rr   ro   ro   r   r{   ro   rp   rw   {   rx   ztest_sum.<locals>.<lambda>)r4   rb   rc   rd   rQ   r*   ro   ro   r   rp   test_sumw   s    &Br   c                  C   s8   t dddtg} t dddttg}t| |ks4J d S )Nr   r   r   )r4   rb   r   absr   ro   ro   rp   test_abs}   s    r   c                  C   sH   t d} t d}| | | |  kr>t ddgddggksDn J d S )N)r   r   r   r   r   )r   r   r   r   r   r   )r4   addr^   r_   ro   ro   rp   test_addition   s    r   c               	   C   s(  t tfD ]f} | ddtd}||d d d d f ks:J |dd d f t ddg dks^J |d d df t g dks~J |ddgd d f t g dg dgksJ |ddgdf |ddgdgf ksJ |dddgf |dgddgf ksJ |d d ddgf t ddgdd	gd
dggks*J |d dks<J |ddd d f t g dg dgksjJ |d d ddf t ddgdd	gd
dggksJ |d d ddf |ddgdf ksJ |dd d df |dddgf ksJ | ddtd}|g dd d f t g dg dg dg dg dgks>J |d d g df t g dg dg dgksJ qtd}d|d< d|d< d	|d< |ddgdgt dgdggksJ |ddgg dt g dg dgksJ |g dg dt g dg dg dg dgks$J d S )Nr   	   r   r   r      )r   r      r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r      )r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   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   r5   rangerA   extract)Mr^   ro   ro   rp   test_fancy_index_matrix   sZ    $ ,&&4.4((
r   c                     s  t d t d  } | d dks(J | d dks8J | d dksHJ | d	 dksXJ | d
 dkshJ | d dksxJ ztd W n ty   Y nb0 | 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 | }| | ksJ |d dks(J |d dks:J |d dksLJ |d	 dks^J |d
 dkspJ |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sJ t	 }| |ksJ d } t| t s0J | d dksBJ | d dksTJ | d dksfJ | d	 dksxJ ztd W n ty   Y nZ0 t| t sJ | d dksJ | d dksJ | d dksJ | d	 dksJ d S )N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      r   r   r   z	c = a @ br   c                      s
   t  S rr   )r:   ro   r   ro   rp   rw      rx   z%test_multiplication.<locals>.<lambda>rb   r   r   
      z	c = 5 @ b)
r4   evalSyntaxErrorr:   Zmultiply_elementwiserQ   r*   r   
isinstancerb   )r`   hc2ro   r   rp   test_multiplication   sf    
r   c                     s  t tdgdtgg} | d | ks$J t ttgddgg} | d t ttgttggksXJ t dddtd d gg dg dtd d dddgg t ttd  dtt td  d tt td  d  ttd  ttd  d ttd  td	  d
  tt t td	  d  ttd  td	  d
  ttd  gdttd  d ttd	 ttd gtt td  d tt td  d  ttd  ttd	 ttd  td	  d
 tt t td	  d  ttd  td	  d
  ttd  tt td	  d tt td	  d  ttd  gttd  d ttd  td	  d
  tt t td	  d  ttd  td	  d
  ttd  ttd tt td	  d tt td	  d  ttd  ttd	  d dt td  td  d  tt t td  d
  dt td  td  d  ttd  ggt t td  d ttd  td	  d  tt t td	  d  ttd  td	  d  ttd  ttd t t td	  d tt td	  d  ttd  t td	  d	 dt td  td  d  tt t td  d  dt td  td  d  ttd  gdttd  d ttd	 ttd gtt td  d tt td  d  ttd  ttd	 ttd  td	  d
 tt t td	  d  ttd  td	  d
  ttd  tt td	  d tt td	  d  ttd  gt td  d dt t td  d tt td  d  ttd  t td  d ttd  td	  d  tt t td	  d  ttd  td	  d  ttd  gg}t dd fdd}  |  kr|ksn J d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r       0   r      r   @   r   `            c                    s    t  fddtdD  S )Nc                 3   s&   | ]} |f |f  V  qd S rr   ro   )r   k)ABru   rv   ro   rp   r     rx   zAtest_multiplication_inf_zero.<locals>.<lambda>.<locals>.<genexpr>r   )r   r   rt   r   r   rt   rp   rw     rx   z.test_multiplication_inf_zero.<locals>.<lambda>)	r4   r   r   r   r   rb   r_   r^   r]   )r   CZC2ro   r   rp   test_multiplication_inf_zero  s4     &  &r   c               	      s  t tdd  t} tddgddgg  d d d  | dd	 | d
d	 | dd | dd gksfJ  d d d  g dksJ tg dg dg dg  d d d  g dksJ  d tdksJ  d  ksJ tdggd d dd ksJ tdd tdksJ tddgddggtd tddgddggksLJ 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sVJ ttt
gdtgg tt t
td    gdt ggksJ tt
 t
d   t
 d  t
   dt
d   gdt
 t
d   gddt
 ggsJ 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spJ 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sn J tg d$g d%g d&g d'g d(gt tfd)d t td*d  tg d+g d,g d-g  d. tg d-g d-g d-gks|J t t fd/d t t fd0d td	dgddgg  d. td1d2gd3d4ggksJ tg d,g d,g d,g  d. tg d,g d,g d,gksJ tg d+g d,g d,g  d. tg d,g d,g d,gksZJ td5d6d7t  tszJ td5d6d6d8t t fd9d td5d6d6d:  ttdtdtd td d gdtddtd gg d,gksJ  d  tg d,g d,g d,gks4J t t fd;d tg d,g d<g d=g  d> tg d?g d@g dAgksJ  d>  d ksJ tg d+g dBg d-g td5  d  d ksJ t tfdCd   d  ksJ tg d-g d-g d-g td5d6d6dD   ksNJ td5d6d6d:  td d d ksJ   dtdksJ   dtdksJ tg dEg dFg dGg  dH tdIdIdIksJ  t tdt dt dt ksJ tg d+g d,g d,g t t fdJd t t fdKd ttjtjgtjtjgg  tj  ksJ tddgddgg  tj ttjtjgdtj dtj ggksJ d S )LNc                   S   s   t dd S Nr   r   r4   ro   ro   ro   rp   rw   #  rx   ztest_power.<locals>.<lambda>r   r   r   r   r   ir      3   i)i  i  i,*  i7  )r   r   r   )r   r   r   )r   r   r   )	i"  i     i  i  ip  i  i  i  r   r   d   r   i r   r   r      !   r   r   9   )r   r   r   r   g      ?rz   i   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   c                      s     tdS Nr   )_matrix_pow_by_jordan_blocksr   ro   r   ro   rp   rw   L  rx   c                   S   s   t ddgddggtdS )Nr   r   )r4   r   r   ro   ro   ro   rp   rw   O  rx   r   r   r   r   r   r   r         $@c                      s    d S N @ro   ro   r   ro   rp   rw   R  rx   c                      s    t dd S r   r   ro   r   ro   rp   rw   S  rx   ihiO<iv0ir{   T)integer)r   negativec                      s     S rr   ro   ro   )r   r{   ro   rp   rw   ]  rx   )r   Znonnegativec                      s    t dd S r   r   ro   r   ro   rp   rw   d  rx   )r   r   r   )r   r   r   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                      s     d S )N)subsdoitro   )Anr{   ro   rp   rw   l  rx   )r   positiver   r   r   )r   r   r   r   r   r   r   gd%%@c                      s    d S r   ro   ro   r   ro   rp   rw   {  rx   c                      s    t  S rr   r	   ro   r   ro   rp   rw   |  rx   )rQ   r,   r   r4   r8   r
   r   Half	sympy.abcr{   r^   r_   r   Z_eval_pow_by_recursionr+   
ValueErrorr   r   r[   rL   r   r   r7   rA   r	   )Rro   )r   r   r   r{   rp   
test_power"  s    @ 6 626J<$0&("((*,(&&r   c                  C   s   t dt dt gdt dt gg} td |   t tdt td d tdt  td d gtdt  td d tdt td d ggksJ W d    n1 s0    Y  d S )Nr   Tr   )r4   rb   rE   r   r   r   ro   ro   rp   $test_issue_17247_expression_blowup_1  s    $
00r   c                  C   sp   t dt dt gdt dt gg} td0 |  \}}|| |  sNJ W d    n1 sb0    Y  d S Nr   T)r4   rb   rE   jordan_forminvr   PJro   ro   rp   $test_issue_17247_expression_blowup_2  s    $
r  c                  C   s   t dt dt gdt dt gg} td` | d t dtd  d ddtd   gddtd   dtd  d ggks~J W d    n1 s0    Y  d S )Nr   Tr   l                )r4   rb   rE   r   ro   ro   rp   $test_issue_17247_expression_blowup_3  s    $
r  c                  C   sP   t td} td( | d t tdks.J W d    n1 sB0    Y  d S )Na1  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128]]Tr   a  [
            [     7369525394972778926719607798014571861/604462909807314587353088 - 229284202061790301477392339912557559*I/151115727451828646838272,   -19704281515163975949388435612632058035/1208925819614629174706176 + 14319858347987648723768698170712102887*I/302231454903657293676544,      -3623281909451783042932142262164941211/604462909807314587353088 - 6039240602494288615094338643452320495*I/604462909807314587353088,    109260497799140408739847239685705357695/2417851639229258349412352 - 7427566006564572463236368211555511431*I/2417851639229258349412352, -16095803767674394244695716092817006641/2417851639229258349412352 + 10336681897356760057393429626719177583*I/1208925819614629174706176,    -42207883340488041844332828574359769743/2417851639229258349412352 - 182332262671671273188016400290188468499*I/4835703278458516698824704],
            [50566491050825573392726324995779608259/1208925819614629174706176 - 90047007594468146222002432884052362145*I/2417851639229258349412352,  74273703462900000967697427843983822011/1208925819614629174706176 + 265947522682943571171988741842776095421*I/1208925819614629174706176, -116900341394390200556829767923360888429/2417851639229258349412352 - 53153263356679268823910621474478756845*I/2417851639229258349412352, 195407378023867871243426523048612490249/1208925819614629174706176 - 1242417915995360200584837585002906728929*I/9671406556917033397649408,   -863597594389821970177319682495878193/302231454903657293676544 + 476936100741548328800725360758734300481*I/9671406556917033397649408, -3154451590535653853562472176601754835575/19342813113834066795298816 - 232909875490506237386836489998407329215*I/2417851639229258349412352],
            [   -1715444997702484578716037230949868543/302231454903657293676544 + 5009695651321306866158517287924120777*I/302231454903657293676544,     -30551582497996879620371947949342101301/604462909807314587353088 - 7632518367986526187139161303331519629*I/151115727451828646838272,           312680739924495153190604170938220575/18889465931478580854784 - 108664334509328818765959789219208459*I/75557863725914323419136,    -14693696966703036206178521686918865509/604462909807314587353088 + 72345386220900843930147151999899692401*I/1208925819614629174706176,  -8218872496728882299722894680635296519/1208925819614629174706176 - 16776782833358893712645864791807664983*I/1208925819614629174706176,      143237839169380078671242929143670635137/2417851639229258349412352 + 2883817094806115974748882735218469447*I/2417851639229258349412352],
            [   3087979417831061365023111800749855987/151115727451828646838272 + 34441942370802869368851419102423997089*I/604462909807314587353088, -148309181940158040917731426845476175667/604462909807314587353088 - 263987151804109387844966835369350904919*I/9671406556917033397649408,   50259518594816377378747711930008883165/1208925819614629174706176 - 95713974916869240305450001443767979653*I/2417851639229258349412352,  153466447023875527996457943521467271119/2417851639229258349412352 + 517285524891117105834922278517084871349*I/2417851639229258349412352,  -29184653615412989036678939366291205575/604462909807314587353088 - 27551322282526322041080173287022121083*I/1208925819614629174706176,   196404220110085511863671393922447671649/1208925819614629174706176 - 1204712019400186021982272049902206202145*I/9671406556917033397649408],
            [     -2632581805949645784625606590600098779/151115727451828646838272 - 589957435912868015140272627522612771*I/37778931862957161709568,     26727850893953715274702844733506310247/302231454903657293676544 - 10825791956782128799168209600694020481*I/302231454903657293676544,      -1036348763702366164044671908440791295/151115727451828646838272 + 3188624571414467767868303105288107375*I/151115727451828646838272,     -36814959939970644875593411585393242449/604462909807314587353088 - 18457555789119782404850043842902832647*I/302231454903657293676544,      12454491297984637815063964572803058647/604462909807314587353088 - 340489532842249733975074349495329171*I/302231454903657293676544,      -19547211751145597258386735573258916681/604462909807314587353088 + 87299583775782199663414539883938008933*I/1208925819614629174706176],
            [  -40281994229560039213253423262678393183/604462909807314587353088 - 2939986850065527327299273003299736641*I/604462909807314587353088, 331940684638052085845743020267462794181/2417851639229258349412352 - 284574901963624403933361315517248458969*I/1208925819614629174706176,      6453843623051745485064693628073010961/302231454903657293676544 + 36062454107479732681350914931391590957*I/604462909807314587353088,  -147665869053634695632880753646441962067/604462909807314587353088 - 305987938660447291246597544085345123927*I/9671406556917033397649408,  107821369195275772166593879711259469423/2417851639229258349412352 - 11645185518211204108659001435013326687*I/302231454903657293676544,     64121228424717666402009446088588091619/1208925819614629174706176 + 265557133337095047883844369272389762133*I/1208925819614629174706176]])r4   r   rE   r   ro   ro   rp   $test_issue_17247_expression_blowup_4  s    
r  c                  C   s   t dddd } tdT | dttd ddt  td   dt td	   td
dks^J W d    n1 sr0    Y  d S )Nr   c                 S   s   dd| |  t   S Nr   r   r   rt   ro   ro   rp   rw     rx   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>Trb   r   $   r   ZEXdomain)r4   rE   charpolyr#   rb   r	   r   ro   ro   rp   $test_issue_17247_expression_blowup_5  s    
r  c                  C   sX   t dddd tdD } td" | ddks6J W d    n1 sJ0    Y  d S )Nr   c                 S   s   g | ]}t | qS ro   rb   r   ro   ro   rp   
<listcomp>  rx   z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>r   TZbareissr   r4   r   rE   detr   ro   ro   rp   $test_issue_17247_expression_blowup_6  s    
r  c                  C   sN   t dddd } td" | ddks,J W d    n1 s@0    Y  d S )Nr   c                 S   s   dd| |  t   S r	  r   rt   ro   ro   rp   rw     rx   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>T	berkowitzr   )r4   rE   r  r   ro   ro   rp   $test_issue_17247_expression_blowup_7  s    
r  c                  C   sX   t dddd tdD } td" | ddks6J W d    n1 sJ0    Y  d S )Nr   c                 S   s   g | ]}t | qS ro   r  r   ro   ro   rp   r    rx   z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>r   TZlur   r  r   ro   ro   rp   $test_issue_17247_expression_blowup_8  s    
r  c                  C   s   t dddd tdD } tdX |  t g dg dg dg dg dg dg dg dgd	fkslJ W d    n1 s0    Y  d S )
Nr   c                 S   s   g | ]}t | qS ro   r  r   ro   ro   rp   r    rx   z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>r   T)r   r   r   r   r   r
  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r4   r   rE   rrefr   ro   ro   rp   $test_issue_17247_expression_blowup_9  s    
r  c                  C   sP   t dddd } td$ | dddks.J W d    n1 sB0    Y  d S )Nr   c                 S   s   dd| |  t   S r	  r   rt   ro   ro   rp   rw     rx   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>Tr   )r4   rE   Zcofactorr   ro   ro   rp   %test_issue_17247_expression_blowup_10  s    
r  c                  C   sZ   t dddd } td. |  t dddgd ks8J W d    n1 sL0    Y  d S )Nr   c                 S   s   dd| |  t   S r	  r   rt   ro   ro   rp   rw     rx   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>Tr   r  )r4   rE   Zcofactor_matrixr   ro   ro   rp   %test_issue_17247_expression_blowup_11  s    
r  c                  C   s\   t dddd } td0 |  dddt dddiks:J W d    n1 sN0    Y  d S )Nr   c                 S   s   dd| |  t   S r	  r   rt   ro   ro   rp   rw     rx   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Tr   r   r   )r4   rE   Z	eigenvalsr	   r   ro   ro   rp   %test_issue_17247_expression_blowup_12  s    
r   c               	   C   s  t ddt td dt gdt td dtd gddt td dt gdddt dgg} |  }|d ddt g dgfksJ |d d ttdtd   d ksJ |d d dksJ |d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggks|J |d d ttdtd   d ksJ |d d dksJ |d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggks|J d S )	Nr   r   r   )r   r   r   r   FT)deepZnumerr  )r4   rb   Z
eigenvectsr   r   )r   Zevro   ro   rp   %test_issue_17247_expression_blowup_13  s0     ("P"*"P"r"  c                  C   s   t dddt dt gd dt dt gd  d } td |  t td dt td dt td dt td dt gddt ddt ddt ddt gg dg dg dg dg dg dgksJ W d    n1 s0    Y  d S )Nr   r   r   Tr   r  )r4   rb   rE   echelon_formr   ro   ro   rp   %test_issue_17247_expression_blowup_14  s    4
2"r$  c                  C   s   t dddt dt gd dt dt gd  d } td |  t td dt td dt td dt td dt ggt ddt ddt ddt ddt gggksJ W d    n1 s0    Y  d S )Nr   r   r   Tr   )r4   rb   rE   rowspacer   ro   ro   rp   %test_issue_17247_expression_blowup_15  s    4
r&  c                  C   s   t dddt dt gd dt dt gd  d } td |  t td gdt gtd gdt gtd gdt gtd gdt ggt dt gtd gdt gtd gdt gtd gdt gtd gggksJ W d    n1 s0    Y  d S )Nr   r   r   T)r4   rb   rE   columnspacer   ro   ro   rp   %test_issue_17247_expression_blowup_16!  s    4
r(  c                  C   s@  t dddd tdD } td |  t dgdgdgdgdgdgdgdggt d	gd
gdgdgdgdgdgdggt dgdgdgdgdgdgdgdggt dgdgdgdgdgdgdgdggt dgdgdgdgdgdgdgdggt dgdgdgdgdgdgdgdgggksJ W d    n1 s20    Y  d S )Nr   c                 S   s   g | ]}t | qS ro   r  r   ro   ro   rp   r  '  rx   z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>r   Tr   r   r   r   r   r   r  r   r  r   r
  r   )r4   r   rE   	nullspacer   ro   ro   rp   %test_issue_17247_expression_blowup_17&  s    &&&&&&r+  c                  C   sl   t dddt dt gd dt dt gd  d } td |  rJJ W d    n1 s^0    Y  d S )Nr   r   r   T)r4   rb   rE   is_nilpotentr   ro   ro   rp   %test_issue_17247_expression_blowup_181  s    4
r-  c                  C   sD   t td} td |  r"J W d    n1 s60    Y  d S )Nay  [
        [             -3/4,                     0,         1/4 + I/2,                     0],
        [                0, -177/128 - 1369*I/128,                 0, -2063/256 + 541*I/128],
        [          1/2 - I,                     0,                 0,                     0],
        [                0,                     0,                 0, -177/128 - 1369*I/128]]T)r4   r   rE   is_diagonalizabler   ro   ro   rp   %test_issue_17247_expression_blowup_196  s    
r/  c                  C   s   t td dt ddgdt td dtd gddt td dgdddtd gg} td |  t dddtd td  gg dg dg dgt g dddt ddgddtd dgdddtd ggfksJ W d    n1 s0    Y  d S )	Nr   r   T)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r4   rb   rE   diagonalizer   ro   ro   rp   %test_issue_17247_expression_blowup_20?  s(    
r3  c                  C   sT   t td} td, | jddt tdks2J W d    n1 sF0    Y  d S )N  [
        [             -3/4,       45/32 - 37*I/16,                   0,                     0],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,                   0, -2063/256 + 541*I/128],
        [                0,         9/4 + 55*I/16, 2473/256 + 137*I/64,                     0],
        [                0,                     0,                   0, -177/128 - 1369*I/128]]TGEmethodv  [
            [-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]]r4   r   rE   r  r   ro   ro   rp   %test_issue_17247_expression_blowup_21Q  s    
r:  c                  C   sT   t td} td, | jddt tdks2J W d    n1 sF0    Y  d S )Nr4  TLUr6  r8  r9  r   ro   ro   rp   %test_issue_17247_expression_blowup_22^  s    
r<  c                  C   sX   t td} td0 | jdd t tdks6J W d    n1 sJ0    Y  d S )Nr4  TADJr6  r8  )r4   r   rE   r  r   r   ro   ro   rp   %test_issue_17247_expression_blowup_23k  s    
r>  c                  C   sT   t td} td, | jddttdks2J W d    n1 sF0    Y  d S )Nr4  TCHr6  r8  r5   r   rE   r  r4   r   ro   ro   rp   %test_issue_17247_expression_blowup_24x  s    
rA  c                  C   sT   t td} td, | jddttdks2J W d    n1 sF0    Y  d S )Nr4  TLDLr6  r8  r@  r   ro   ro   rp   %test_issue_17247_expression_blowup_25  s    
rC  c                  C   sH   t td} td  |  dks&J W d    n1 s:0    Y  d S )Na  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64,         -9/32 - I/16,      183/256 - 97*I/128],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512, -219/128 + 115*I/256, 6301/4096 - 6609*I/1024],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,         1/4 - 5*I/16,        65/128 + 87*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,     85/256 - 33*I/16,    805/128 + 2415*I/512],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,            1/4 + I/2,        -129/64 - 9*I/64],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,     125/64 + 87*I/64,   -2063/256 + 541*I/128],
        [               -2,         17/4 - 13*I/2,             1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,                 -3/4,         45/32 - 37*I/16],
        [     1/4 + 13*I/4,    -825/64 - 147*I/32,          21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64,    -149/64 + 49*I/32,   -177/128 - 1369*I/128]]Tr   r4   r   rE   rankr   ro   ro   rp   %test_issue_17247_expression_blowup_26  s    	
rF  c                  C   s   t ddt td dt gdt td dtd gddt td dt gdddt dgg} tdL |  \}}| t td ksJ |t tdksJ W d    n1 s0    Y  d S )Nr   r   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]])r4   rb   rE   r  r   r   r  ro   ro   rp   %test_issue_17247_expression_blowup_27  s    
rG  c                  C   sL   t td} td$ |  tdks*J W d    n1 s>0    Y  d S )Nr4  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)])r4   r   rE   Zsingular_valuesr   ro   ro   rp   %test_issue_17247_expression_blowup_28  s    
rH  c                  C   sH   t td} td  |  dks&J W d    n1 s:0    Y  d S )Na	  [
        [1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I,15/128-3/32*I,19/256+551/1024*I],
        [21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I,129/256-549/512*I,42533/16384+29103/8192*I],
        [-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I],
        [1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I],
        [-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I],
        [1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I],
        [-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I],
        [-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I],
        [0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I],
        [1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I],
        [0,-4*I,0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I],
        [0,1/4+1/2*I,1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I]]Tr   rD  r   ro   ro   rp   test_issue_16823  s    
rI  c                  C   s  t g ddtd dtd dtd td d dddddg	ddtd  ddtd  ddtd  ddtd  dddddg	d	td d dd
td  dd
td  dd
td  ddddd
g	ddtd  dtd d dtd d ddtd  dddddg	dd
td  dd
td  d	td d dd
td  ddddd
g	d	dtd  d	dtd  d	dtd  d	dtd  dddddg	dtd td d dtd dtd dddddg	g} td |  t ddddddddtdd g	ddddddddtd d g	ddddddddtdd g	ddddddddtd d g	g dddddddddtd d g	g dddddddddtd d g	gdfksJ W d    n1 s0    Y  d S )N)	r   r   r   r   r   r   r   r   r   r   r   r   r  r)  r   r   r   r   r   r   r   T)	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r  )r4   r   rE   r  r   r   ro   ro   rp   test_issue_18531  s.    6DDDDD6

rK  c            
      C   s  t tdd  t tdd  t tdd  t t dtdd< W d    n1 sT0    Y  t tg   krtddg ksn J tg gtd	dg ksJ tg g gtd
dg ksJ t 4 td	gdgg d	gdggksJ W d    n1 s0    Y  t : td	gdggj d	ggdggks8J W d    n1 sN0    Y  tdgg} t  tj| d< W d    n1 s0    Y  tt	dgddgg}|}|j
|jksJ |j
d
ksJ |d d  t	dddgksJ td
d
t	dddg}|}|j
|jksJ |j
d
ks(J |d d  t	dddgksFJ ||ksTJ t||ksfJ td
dtd	d}td	dtdd}t||g}|j
dksJ |jdksJ |d d  g dksJ ttd
td
ksJ tttd
ttd
ksJ t|| ks"J tt|t| ks@J |t|usRJ tdd
tddd
 gtd
dd td
d
d gg}t|} | tg dg dg dg dg dgksJ |  |ksJ t|dd |ksJ tdd
d
}td
|g}t|td	d	gd	d	g|d |d g|d |d ggks@J t 4 t|dd dd |D kslJ W d    n1 s0    Y  ttd
tdgttd
gksJ t tdd  t tdd  td	d
gddgg} t| dg}	|	td	d
gddgddggksJ d S )Nc                   S   s   t ddtdS )Nr      )r4   r   ro   ro   ro   rp   rw     rx   ztest_creation.<locals>.<lambda>c                   S   s   t ddg S )Nr   r   r   ro   ro   ro   rp   rw     rx   c                   S   s   t dd S r   r   ro   ro   ro   rp   rw     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   Fevaluater   r   r   r   c                 S   s   g | ]
}|gqS ro   ro   r   ro   ro   rp   r  0  rx   z!test_creation.<locals>.<listcomp>c                   S   s   t tdtddgS )Nr   r   r   r4   r;   ro   ro   ro   rp   rw   4  rx   c                   S   s   t tdtddgS )Nr   r   r   rP  ro   ro   ro   rp   rw   5  rx   )r   r   r   )rQ   r   
IndexErrorr4   rV   tolistTr   ZEmptySetrb   r   r   r   r8   r2   as_immutable
as_mutabler;   rD   )
r   r^   r   r_   Zc23Zc13r`   datr   M2ro   ro   rp   test_creation  s    
*(BJ*"4D(rX  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 )Nr   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   Z	irregularr;   ro   ro   ro   rp   test_irregular_block=  s    &0rY  c                  C   sT   t jt jtt t jgttttd gtt j tt dgg} t| }| | ksPJ d S )Nr   r   )	r   Oner   rb   rc   Zerord   r4   rR  )lstr   ro   ro   rp   test_tolistF  s    8r]  c                   C   s`   t dd t ddksJ t dd tt ddks<J t dd tt ddks\J d S Nr   r   )rA   rU  rT  r2   ro   ro   ro   rp   test_as_mutableL  s     r_  c                  C   s  t d} | d dd df t dks(J | ddddf tdksHJ tdddd }|dd d f tdddksxJ |dddf tddd	ksJ tg d
g dg dg dg}|d d df tddg dksJ |dd d d f tg dg dgks
J d S )Nr   r   r   r   c                 S   s   | | S rr   ro   rt   ro   ro   rp   rw   W  rx   ztest_slicing.<locals>.<lambda>r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r      r         r   r   )r   r   rc  r   r   )r8   rA   r4   )m0m1m2ro   ro   rp   test_slicingR  s         $rj  c                  C   s   t d} td| ddddf< | tdks0J td| d dd df< | tdksXJ tddd| d d df< | tdksJ t d| d d d d f< | t dksJ g d| d d d d f< | tdksJ ddg| d ddf< | td	ksJ d S )
Nr   r   )r   r   r   r   rk  r   r1  r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   rl  r   r   r   r   r   r   rc  r   re  rf  r   r   ))r   r   r   r   )r   r   r   r   rp  rq  )rA   r8   r4   r   ro   ro   rp   test_submatrix_assignment`  s    rr  c                      s   t dddd   g dddgt ddg d	ks8J  ddgg d
t ddg dks`J  tdtd ks|J tt fdd tt fdd d S )Nr   r   c                 S   s   | d | S Nr   ro   rt   ro   ro   rp   rw   }  rx   ztest_extract.<locals>.<lambda>)r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   rc  c                      s     dgdgS )Nr   r   r   ro   r   ro   rp   rw     rx   c                      s     dgdgS r^  rt  ro   r   ro   rp   rw     rx   )r4   r   r   rQ   rQ  ro   ro   r   rp   test_extract|  s    ((ru  c                  C   sh   t d} | ddtdddks$J tdddd }|ddtdksLJ |d	d
tdksdJ d S )Nr   r   r   )	r   r   r   r   r   r   r   r   r   r   c                 S   s   | | S rr   ro   rt   ro   ro   rp   rw     rx   ztest_reshape.<locals>.<lambda>)r   r   r   r   )r   r   r   r   r   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r8   reshaper4   rg  rh  ro   ro   rp   test_reshape  s    ry  c                  C   sD   t d} | dd t dd ks&J | dd tdks@J d S )Nr   c                 S   s   d|  S Nr   ro   r  ro   ro   rp   rw     rx   z test_applyfunc.<locals>.<lambda>r   c                 S   s   dS r}   ro   r  ro   ro   rp   rw     rx   )r8   	applyfuncrA   )rg  ro   ro   rp   test_applyfunc  s    r|  c                  C   s"  t ttt  dgtt t t ttttt    gg} |  }|t tt td  dgttd  ttd   tt ttd   td  ggksJ tddd}t tt| gjddt t|tt|  gksJ t g dg dg d	g t d
d
t	ddgg dg dgksJ d S )Nr   r   r^   Treal)complexr   )r   r   r   r   r   )r   r   r   r   )
r4   rb   rc   r   r   r   r	   r   r   r   )rg  rh  r^   ro   ro   rp   test_expand  s    8F
r  c                  C   sB  t ttd ttd gttd ttd  ttd ttd  gg} | tttt@ }|t td ttgtd tt td tt ggksJ | tttt@ }|t td tgttd  td t ggksJ | t	tt	t@ }|t td t gt td  td  t ggks>J d S rz  )
r4   r   rb   r   rc   ZrefinerX   r~  r   r   rx  ro   ro   rp   test_refine  s    .<0r  c                  C   s6  t dd} t dddd} | t ddddks.J t dddd} t dddd} | t ddddks`J |  }|  || ks|J td}| t dd|dksJ d	D ],}d
D ]"}t |d||d} | | jksJ qqt dddd} d}t| jd D ]4}t| jd D ] }| ||f dkr |d7 }q q|dks2J d S )Nr   )seedr   r      T)r  	symmetric)r  prng)r   rc  )r   F      )r  percentr  r   r   r  )minr  r  )r<   copyr(   randomRandomrS  r   r   )r   r   rngsizer  Z
zero_countru   rv   ro   ro   rp   test_random  s,    

r  c                     sz  t d} |  t dksJ | jddt dks4J | jddt dksLJ | jddt dksdJ | jddt dks|J | jddt dksJ tg dg d	g d
g} |  }| | t dksJ | jdd|ksJ | jdd|ksJ | jdd|ksJ | jdd|ksJ | jdd|ks4J tg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g}|jd%d| t |jd& ksJ t  g d'g d(g d)gt fd*d+d, D s6J t  g d'g d(g d)gt fd-d+d, D svJ d S ).Nr   r;  r6  r=  r?  rB  ZQR)r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZBLOCKr   )r   1      )r   G   ^   );      A   c                 3   s    | ]}t | u V  qd S rr   r   r  r   sr   r   ro   rp   r     rx   ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   s    | ]}t | u V  qd S rr   r  r  r  ro   rp   r     rx   )r8   r  r4   r   r2   r   splitr3   )r   ZAinvZAAro   r  rp   test_inverse  sr    $"r  c                  C   sB  t ddtd t dtd  tt  g} ttg}| |t dt t td gtdt t ggksfJ t ddttd td  g} | |t ddgdt td  td d td  ggksJ td t }ttg}t||t dt dt gdt dggksJ td td  }t||t dtd  dt td  gdt td  dtd  t ggksdJ tttd   }td dtd   }t ddt gdt dt gg}|t|t ttgksJ |t|t ttgjksJ t|ttf|gt ddtd  dt gdtd  dt dt gdt dt dggks>J d S )Nr   r   r   r   r   r   )r4   rb   rc   jacobianr9   rd   rS  )LZsymsfgansro   ro   rp   test_jacobian_hessian
  s0    (6>0>
r  c                  C   s8  t ttttgtttd ttd  ks2J t tttdt gttdt ks\J t tttgtttttt  ksJ t dttd gtdksJ dtt tt t dtt tt td   dtt tt t  tttt td   tttt td   } t tttttd gt | ksHJ t tttttd gtdd | ksvJ td  ttd  td ttd   dt ttd   dt ttd   }t tttttd gt |ksJ t tttttd gtdd |ks J t g tdks4J d S )Nr   r   r   r
  r   r  r6  )r@   r   rb   r   r   r   )Zw1Zw2ro   ro   rp   test_wronskian&  s&    2**J*"
R*"
r  c                  C   sv  t dtgtdggtdt ddgddggks4J t tdgtt dggtdgtdggt ddgddggksvJ t tdgtt dggtdftdfgt ddgddggksJ t tdgtt dggtdtdit ddgddggksJ t tt gjttd ttd idd	t td td  gks:J tD ]2} t dd
gd
dgg| dddks>J q>d S )Nr   r   r   r   r   r   r   T)Zsimultaneousr   )r4   rb   r   rc   r   r8   r   ro   ro   rp   	test_subs7  s    4(($&
r  c                  C   s   t dtgtdggtdit ddgddggks6J t tdgtt dggtdtdit ddgddggkstJ tD ]0} t ddgddgg| dddiksxJ qxd S )	Nr   r   r   r   r   r   r   r   )r4   rb   xreplacerc   r   r8   r  ro   ro   rp   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sJ dt d }t|gg}|  |t|ggksJ |jtd |t|jtdggks"J d S )Nr{   r  r   r   )Zratio)	r   r   r4   rb   rc   r   r   r(   r   )r{   r  r   eqro   ro   rp   test_simplifyM  s     :&r  c                  C   s   t g dg dg} | jt ddgddgddgddgddgddgddgd	d	gd
d
gddgg
ksbJ | jj| ksrJ | j|  ksJ d S )N)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r4   rS  r   r   ro   ro   rp   test_transpose^  s     
r  c                  C   s   t dtdgg dg} | jt ddgtdgddggks:J | jt dt dgg dgks\J | j|  ksnJ | j| jjksJ | jt ddgt dgddggksJ d S )Nr   r   )r   r   r   r   r   )r4   r	   rS  r   	conjugateHr   ro   ro   rp   test_conjugateo  s     
r  c               	   C   s~   t tdd  tdtttgddttgdddtgg dg} | jtg dt dddgt t ddgt t tdggkszJ d S )Nc                   S   s
   t djS rs  )r8   Dro   ro   ro   rp   rw     rx   z!test_conj_dirac.<locals>.<lambda>r   r   r1  rm  r   )rQ   AttributeErrorr4   r	   r  r   ro   ro   rp   test_conj_dirac  s    

r  c                  C   s.   t g dg dg dg} |  dks*J d S )Nr   r   r   r   r   r   )r   r   r   rf  r4   tracer   ro   ro   rp   
test_trace  s
    r  c                  C   s*   t tddgdtdgg} | jdks&J d S )Nr   r`  )r4   rb   rc   r   r   ro   ro   rp   
test_shape  s    
r  c                  C   st  t tddgdtdgg} | ddd  | t tddgdtd dggksLJ | ddd  | t td ddgdt td dggksJ | dt td ddggksJ | d}d|d< | d	 td ksJ | dd d
f }d|d< | d	 td ksJ | d}|t td dt gks$J d|d< | d	 td ksBJ | d d df }d|d< | d	 td kspJ d S )Nr   r   c                 S   s   | | d S Nr   ro   )rrv   ro   ro   rp   rw     rx   z!test_col_row_op.<locals>.<lambda>r   r   c                 S   s   | t |  S rr   )rc   )r`   rv   ro   ro   rp   rw     rx   *   r   r   )r4   rb   rc   Zrow_opZcol_oprowcol)r   Zr1Zc1ro   ro   rp   test_col_row_op  s2    
"

r  c                  C   sT   t g dg dg} | dd | d dks0J | d dks@J | d d	ksPJ d S )
Nr   r   r   r   r   r   r   r   r   r   r   )r4   Zrow_multr   ro   ro   rp   test_row_mult  s    r  c                  C   s\   t g dg dg dg} | ddd | d dks8J | d	 d
ksHJ | d dksXJ d S )Nr   r  r   r   r   r   r   r   r   r   r   r   r   r   r   )r4   Zrow_addr   ro   ro   rp   test_row_add  s    r  c                  C   s   t d d D ]} | d}|dddd  || g dg dg d	gksNJ | dd }d
|d< |dddd  | || g dg dg dgksJ qd S )Nr   r   r   r   c                 S   s   | d|  S rz  ro   r   uro   ro   rp   rw     rx   z!test_zip_row_op.<locals>.<lambda>r  r   r   r   r   r   r   c                 S   s   | d|  S rz  ro   r  ro   ro   rp   rw     rx   )r   r   r   )r   r   r   r   )r   r8   Z
zip_row_op)r   r   ro   ro   rp   test_zip_row_op  s    


r  c                  C   sd   t g d} t g d}t g d}| dvs0J | dvs<J | dksHJ | |ksTJ | |ks`J d S )Nr   )r   r   r   ro   )r   r   r   )r   r^   r_   ro   ro   rp   test_issue_3950  s    r  c                  C   s  G dd d} G dd d}|  }| }t g d}|| dksDJ d||< |d dks\J t g dg d	g}|||f d
ksJ |d|f d
ksJ ||df d
ksJ d|||f< |d dksJ d
|d|f< |d d
ksJ d||df< |d dksJ d S )Nc                   @   s   e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index1c                 S   s   dS r  ro   selfro   ro   rp   	__index__  s    z)test_issue_3981.<locals>.Index1.__index__Nrl   rm   rn   r  ro   ro   ro   rp   Index1  s   r  c                   @   s   e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index2c                 S   s   dS rz  ro   r  ro   ro   rp   r    s    z)test_issue_3981.<locals>.Index2.__index__Nr  ro   ro   ro   rp   Index2  s   r  r   r   r   r   r  r   r   r   r   r   r   )r  r  Zindex1index2r   ro   ro   rp   test_issue_3981  s$    r  c                      sn   t tddg t fddtdD s.J t fddtdD sLJ t fddtdD sjJ d S )Nr   r   c                 3   s&   | ]}   |  |   kV  qd S rr   evalfr   r^   ro   rp   r     rx   ztest_evalf.<locals>.<genexpr>r   c                 3   s*   | ]"}  d |  |  d kV  qdS r   Nr  r   r  ro   rp   r     rx   c                 3   s*   | ]"}  d |  |  d kV  qdS r  rz   r   r  ro   rp   r   	  rx   )r4   r   r   r   ro   ro   r  rp   
test_evalf  s    r  c                  C   s   t ttgttgg} |  du s$J t g dg dg} |  du sHJ t g dddtdgg} |  du spJ t dtd	gg} |  du sJ t g d
g} |  du sJ t dgtgd	gg} |  du sJ t dgdgd	gg} |  du sJ d S )NTrl  ro  Fr   r   r   r   r   r   r   )r4   rb   Zis_symbolicr  ro   ro   rp   test_is_symbolic  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 sVJ d S )Nr   Tr   r   r   Fr   )r4   Zis_upperrA   r  ro   ro   rp   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 )Nr   Fr   r   r   T)r4   is_lowerr  ro   ro   rp   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 } |  sPJ d S )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r4   r,  r  ro   ro   rp   test_is_nilpotent-  s    r  c                  C   s  d\} }t | |}|d dt| | }||ks6J |j|j  krNdksTn J |j|j  krldksrn J |j|j  krdksn J t dt ddksJ tdtddksJ t ddtdddgd ksJ tddtdddgd ksJ |d |t | |ksJ d S )N)r   r   r   r   r   r   r   r   )rA   fillr;   r   r   r   r4   )r{   r   r^   r_   ro   ro   rp   test_zeros_ones_fill6  s    

  
r  c                  C   sf   t d} | t ksJ t dd} | jdks.J | jdks<J t dd} | jdksTJ | jdksbJ d S )Nr   r   )rA   r4   r   r   r  ro   ro   rp   test_empty_zerosK  s    

r  c                  C   s  t td tt gttt ttt gg} | tt dt tgttttggksZJ t tt td gttdt tt  tdt  ggttt tt tgtdtggksJ t ttd t dt tt  tt gdt t	tt	ttd ggtdt g dtdtdggks(J | 
tt tddtd  ttd  d gtd tt d td tt d ggksJ d S )Nr   r   r   )r   r   r   r   )r4   rb   rc   r   r   r   r   limitr   r   r   r   r  ro   ro   rp   test_issue_3749V  s,    ,."$

 &r  c                  C   sD   t d} | dd dD ]&}| j|dd d| jdd	ksJ qd S )
Nr   r   r   )r5  r;  c                 S   s   | dkS r}   ro   r  ro   ro   rp   rw   j  rx   z%test_inv_iszerofunc.<locals>.<lambda>)r7  
iszerofuncr=  r6  )r8   Zcol_swapr  )r   r7  ro   ro   rp   test_inv_iszerofuncf  s    
r  c                  C   s   t d\} }t| t| | t| g}t| |g}||}|||jksRJ ||j|ksfJ ||j|jks|J |jt|jd  | }|t	}|tddgd| d ggksJ d S )Nrho,phir   r   r   )
r   r4   r   r   r  rS  r8   r   r{  r)   )rhophiXYr  r  ro   ro   rp   test_jacobian_metricsn  s    

r  c                  C   s   t d\} }t| t| | t| | d g}t| |g}tt||  t| gt|| t| gd|  dgg}|||ksJ d S )Nr  r   r   )r   r4   r   r   r  )r  r  r  r  r  ro   ro   rp   test_jacobian2{  s    "
r  c                  C   s   t ttt t ttt t ttt t g} t tttg}tddD ]}tddD ]x}| d |d d f }|d |d d f }||}|j|ksJ |j|ksJ t|D ]}|d d |f |ksJ qqXqJd S Nr   r   )	r4   r   rb   rc   rd   r   r  r   r   )r  r  ru   rv   ZX_sliceZY_slicer  r   ro   ro   rp   test_issue_4564  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 rr   r  r4   rb   rc   rd   ro   r  ro   rp   rw     rx   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
     S rr   )r  ro   r  r  ro   rp   rw     rx   c                      s     tttgttggS rr   r  ro   r  ro   rp   rw     rx   )r4   r   rb   rc   rd   rQ   	TypeErrorro   ro   r  rp   test_nonvectorJacobian  s     r  c                  C   sP   t ddgddgg} |  }|jdks*J tdD ]}|| |d ks2J q2d S Nr   r   r   r   )r4   Zvecr   r   )r   Zm_vecru   ro   ro   rp   test_vec  s
    r  c                  C   s6  t ddgddgg} |  }|jdks*J tdD ]}|| |d ks2J q2| jdd}|d dkshJ t dttt  gtt td  dgg} | jdd}|d tt td  ksJ t dttt  gtt dgg} | jddd}|d tt ksJ ttdd	  ttd
d	  ttdd	  ttdd	  d S )Nr   r   r   F)diagonalr   )r  Zcheck_symmetryc                   S   s   t ddgg S r  r4   vechro   ro   ro   rp   rw     rx   ztest_vech.<locals>.<lambda>c                   S   s   t ddgddgg S r  r  ro   ro   ro   rp   rw     rx   c                   S   s   t ddgg S r  r  ro   ro   ro   rp   rw     rx   c                   S   s   t ddgddgg S r  r  ro   ro   ro   rp   rw     rx   )	r4   r  r   r   rb   rc   rQ   r*   r   )r   Zm_vechru   ro   ro   rp   	test_vech  s"    ( r  c                      sZ   t g dtg dksJ dddgg tt fdd t  ddtg dksVJ d S )	Nr   r   r   r   c                      s   t  S rr   )r7   ro   r   ro   rp   rw     rx   ztest_diag.<locals>.<lambda>F)strict)r7   r4   rQ   r   ro   ro   r   rp   	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}|  | gksZJ | |gkslJ | |gks~J d S Nr   r   r   )r4   rb   rc   rd   get_diag_blocksr^   r_   r`   ro   ro   rp   test_get_diag_blocks1  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| || | ||gksfJ t| || | ||gksJ t| || | ||gksJ t||| |||gksJ d S r  )r4   rb   rc   rd   r7   r  r  ro   ro   rp   test_get_diag_blocks2  s     r  c               
   C   s  t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}t| ||}|jddt|  | | ks|J t| ||}|jddt|  | | ksJ t| ||}|jddt|  | | ksJ t| | || || }|jddt|  |  | |  | |  ks2J |jdddt| jdd| jdd|jdd| jdd|jdd| jddksJ d S )	Nr   r   r   T)try_block_diagr=  )r  r7  r6  )r4   rb   rc   rd   r7   r  )r^   r_   r`   r   ro   ro   rp   test_inv_block  s"     ((($r  c                   C   s   t tdd  t tdd  ttdtdks4J ttdtdksLJ t tdd  ttdtdksrJ ttdtdksJ t tdd  ttdtdtddksJ t tdd  t td	d  t td
d  dS )zg
    Check that matrix dimensions can be specified using any reasonable type
    (see issue 4614).
    c                   S   s
   t ddS )Nr   r   rA   ro   ro   ro   rp   rw     rx   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddS Nr   r   r   r   r  ro   ro   ro   rp   rw     rx   r   c                   S   s   t dS N      @r  ro   ro   ro   rp   rw     rx   c                   S   s   t dS r   r8   ro   ro   ro   rp   rw     rx   r   c                   S   s   t dS Nr   r   ro   ro   ro   rp   rw     rx   c                   S   s
   t ddS r   r   ro   ro   ro   rp   rw     rx   c                   S   s   t ddggS r   r   ro   ro   ro   rp   rw     rx   N)rQ   r   r  rA   rs   r
   r8   r;   ro   ro   ro   rp   test_creation_args  s     r  c                  C   s^  t ddg d} |  rJ |  s(J | jdds8J t ddg d} |  sTJ tddd} |  slJ |  sxJ t ddg d} | tdddksJ t ddtdd} |  rJ |  sJ t d	} |  sJ t d
} |  sJ t dddtd dt  d ttd d ddtddg	} |  s2J | jddrDJ |  jddsZJ d S )Nr   r   r   r   r   Fr(   r   r   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   is_diagonalis_symmetricr7   rA   rb   rc   r   r   ro   ro   rp   test_diagonal_symmetrical  s,    6r  c                     sv  t ddt gdt dgg   s(J t ddg d   rDJ   rPJ tt fdd tddd   \} }| tdksJ | ksJ t ddg d   sJ   sJ   \} }| 	   |  |ksJ t ddg d   sJ   sJ   \} }| 	   |  |ks2J | tdksDJ | ksRJ t ddg d	   spJ   \} }| 	   |  |ksJ t ddg d
   sJ   \} }| 	   |  |ksJ | D ]}|
 d dksJ qt ddg d   sJ   s(J   \} }| 	   |  |ksNJ | t ddgddggkslJ t ddg d  drJ tt fdd   sJ   \} }| 	   |  |ksJ t ddg d   rJ tt fdd t ddg d   r J tt fdd td\}}}}t dd||||g   sdJ   srJ d S )Nr   r   r   r   r   r   rL  r   r   c                      s      S rr   r2  ro   r   ro   rp   rw   %  rx   z&test_diagonalization.<locals>.<lambda>r  )r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r  r   rm  r   )r   r   r   r   Tc                      s
     dS )NTr  ro   r   ro   rp   rw   Q  rx   r   c                      s      S rr   r  ro   r   ro   rp   rw   Y  rx   )	r   r   r   rL  r   r   r   r   r   c                      s      S rr   r  ro   r   ro   rp   rw   ]  rx   a b c d)r4   r	   r.  r
  rQ   r,   r7   r2  r8   r  Zas_numer_denomr	  r+   r   )r  r  ru   r^   r_   r`   ra   ro   r   rp   test_diagonalization  sl    r  c                      sv   t ddgddgg   du s$J d d<   du s<J t ddgddgg    d d< tt fdd d S )Nr   r   Tr   Fc                      s      S rr   r  ro   r  ro   rp   rw   p  rx   z"test_issue_15887.<locals>.<lambda>)rB   r.  r2  rQ   r+   ro   ro   r  rp   test_issue_15887f  s    r  c                     sD  t ddg d tt fdd t ddg d t ddg d}   \}}| |ksZJ |   d ksnJ t ddg d	 t ddg d
}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksRJ t ddg d t ddg d}   \}}| |ksJ t ddg d   rJ t ddg d}   \}}| |ksJ t tdddtdddgtdddtdddgg   \}}| D ]"}t|tr|j	dksJ qd S )Nr   r   r  c                      s      S rr   )r  ro   r   ro   rp   rw   v  rx   z"test_jordan_form.<locals>.<lambda>)	r   rJ  r   r   ir   r   ire  )	r   r   r   r   r   r   r   r   r   r   	r   r   r   r  r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r  r   r   r
  )	r   r   r   r   r   r   r   r   r   )	r   r  r   r   r)  r   r   r   )	r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r
  r   r   r   r   r   r   r  r
  r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z1.0n   )Z	precisionz2.0z3.14159265358979323846264338327z4.0)
r4   rQ   r,   r  r2  r.  r   valuesr   Z_prec)ZJmustr  r  Ztermro   r   rp   test_jordan_forms  sN    
r  c                  C   s   t g dg dg dg dg} ddt  }ddt  }t |dddgd|ddgdd|dgddd|gg}t |dddgd|ddgdd|dgddd|gg}|  \}}||ks||ksJ t|| |  | ksJ d S )	N)r   r   r   r   )r  r   r   r   )r   r   r   r   )r   r   r  r   r   r   r   r   )r4   r	   r  r(   r  )r   pqZJmust1ZJmust2r  r  ro   ro   rp   #test_jordan_form_complex_issue_9274  s(    





r  c                  C   s   t g dg dg dg dg} |  \}}|t g dg dg dg dgksTJ |t g d	g dg dg dgks|J d S )
Nr  r  )r   r   r   r   r1  r   r   r   r   rm  r   r   r  )r4   r  r  ro   ro   rp   test_issue_10220  s"    
r  c               
   C   s   t g dg dg dg dg} |  \}}| t t t d ttd gdt ddt dgdtd d td  dtd d td  gg d	gksJ |t t dddgdt ddgddtdgdddtggksJ d S )
Nr0  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  )r4   r  r   r	   r   )r   r  r  ro   ro   rp   test_jordan_form_issue_15858  s&    .

r!  c                  C   sx  t d\} }}t| |  |d ||   || ||  g|| ||  | |d ||   gg}|t}|ttd ||  ||   d| |  ||  t  || |  ||   tddksJ t|tu sJ tddgddgg}| |t  krttd t d ksn J tddgtdgg}|t}|jtksLJ | 	|jttd dt  kstJ d S )	Nz
UA K_i K_wr   zZZ(K_i,K_w,UA)r  r   r   r   r   )
r   r4   r  rb   r"   r   r#   genZas_exprr   )ZUAZK_iZK_wr   r  r  ro   ro   rp   test_Matrix_berkowitz_charpoly  s&    *$
08
r#  c                  C   s   t d} td| }| tt| ggks0J td| }| tt| t| t| d gdt| t| gddt| ggksJ d S )Nlamdar   r   r   r   )r   r4   jordan_blockZ_eval_matrix_exp_jblockr   )lr   ro   ro   rp   test_exp_jordan_block  s    r'  c                  C   s  t ddgddgg} t tddtd d dtd d  gdtdgg}|  |ks\J t| |kslJ t ddgddgg} |  t tdgdtggksJ t| t tdgdtggksJ t ddgddgg} |  t ttd t td gttd ttd ggksJ d S )	Nr   r   r   r   r  r   r   r   )r4   r   r   r   r   )r   Zm_expro   ro   rp   test_exp  s    8  r(  c               
      s   t d} td|    tt| ggks0J td|    tt| d|  dd| d   dd| d   gdt| d|  dd| d   gddt| d|  gdddt| ggksJ tg dg d	g d
g tt fdd d S )Nr$  r   r   r   r   r   r   r   r   r   c                      s      S rr   )r   ro   r   ro   rp   rw   =  rx   ztest_log.<locals>.<lambda>)r   r4   r%  Z_eval_matrix_log_jblockr   rQ   r+   )r&  ro   r   rp   test_log'  s(    *
r)  c                  C   sX   t ttfdf} | tsJ | tr,J | ts:J | td} | trTJ d S )Nr`  r   )r4   rb   rc   Zhasrd   r   r   r   ro   ro   rp   test_has@  s    r*  c                  C   sR   t d} tdd| t| d t| d  tjg}t|\}}}}|tjksNJ d S )Nrb   r   r   r   )r   r4   r   r   r   r   r/   rb   columnZpivot_offsetZ	pivot_valZpivot_assumed_nonzeroZ
simplifiedro   ro   rp   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1J  s
    (
r-  c                  C   sn   t d} tdd| t| d t| d  | d  t| d t| d  g}t|td\}}}}|dksjJ d S )Nrb   r   r   r   Zsimpfunc)r   r4   r   r   r/   r0   r+  ro   ro   rp   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2V  s    

r/  c                  C   s   t d} tdd| t| d t| d  |  t| d t| d  g}t|td\}}}}t|dksjJ |d d dks~J |d d d|  ksJ |d d dksJ |d d dksJ d S )Nrb   r   r   r   r.  r   )r   r4   r   r   r/   r0   lenr+  ro   ro   rp   +test_find_reasonable_pivot_naive_simplifiese  s    

r1  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   ro   ro   ro   rp   rw   x  rx   ztest_errors.<locals>.<lambda>c                   S   s   t ddggd S )Nr   r   )g333333?r   r   ro   ro   ro   rp   rw   y  rx   c                   S   s   t ddggd S )Nr   r   )r   g@r   ro   ro   ro   rp   rw   z  rx   c                   S   s   t ddddS )Nr   r   T)r`   r  )r<   ro   ro   ro   rp   rw   {  rx   c                   S   s   t ddgddS )Nr   r   r   r   )r4   rw  ro   ro   ro   rp   rw   |  rx   c                   S   s(   t ddgddggddgt ddgS Nr   r   r   r   r   )r4   Zcopyin_matrixro   ro   ro   rp   rw   ~  rx   c                   S   s"   t ddgddggddgt S r2  )r4   Zcopyin_listsetro   ro   ro   rp   rw     s   c                   S   s   t g dg dg S )Nr   )r   r   r   r4   r  ro   ro   ro   rp   rw     rx   c                   S   s&   t ddddgt ddgddggS r  )r4   row_joinro   ro   ro   rp   rw     rx   c                   S   s"   t ddgt ddgddggS r  )r4   col_joinro   ro   ro   rp   rw     rx   c                   S   s"   t dgdt ddgddggS r  )r4   
row_insertro   ro   ro   rp   rw     s   c                   S   s"   t dgdt ddgddggS r  )r4   
col_insertro   ro   ro   rp   rw     s   c                   S   s   t ddg S r   r  ro   ro   ro   rp   rw     rx   c                   S   s   t dgdS r  )r4   r{  ro   ro   ro   rp   rw     rx   c                   S   s   t ddgddggddS Nr   r   r   r   r   )r4   minorro   ro   ro   rp   rw     rx   c                   S   s   t ddgddggddS r9  )r4   Zminor_submatrixro   ro   ro   rp   rw     rx   c                   S   s   t g ddS Nr   r   r4   crossro   ro   ro   rp   rw     rx   c                   S   s   t g ddS r;  r4   dotro   ro   ro   rp   rw     rx   c                   S   s   t g dt ddgS )Nr   r   r   r>  ro   ro   ro   rp   rw     rx   c                   S   s   t ddgg S r   r>  ro   ro   ro   rp   rw     rx   c                   S   s   t ddgdS )Nr   r   r^   r>  ro   ro   ro   rp   rw     rx   c                   S   s   t ddgg dS )Nr   r   r   r>  ro   ro   ro   rp   rw     rx   c                   S   s   t g d S )Nr   )r4   r   ro   ro   ro   rp   rw     rx   c                   S   s   t ddgddgg S r  )r4   
normalizedro   ro   ro   rp   rw     rx   c                   S   s   t ddgjddS )Nr   r   znot a methodr6  r4  ro   ro   ro   rp   rw     rx   c                   S   s   t ddg S r   r4   Z
inverse_GEro   ro   ro   rp   rw     rx   c                   S   s   t ddgddgg S r   rA  ro   ro   ro   rp   rw     rx   c                   S   s   t ddg S r   r4   Zinverse_ADJro   ro   ro   rp   rw     rx   c                   S   s   t ddgddgg S r   rB  ro   ro   ro   rp   rw     rx   c                   S   s   t ddg S r   )r4   Z
inverse_LUro   ro   ro   rp   rw     rx   c                   S   s   t ddg S r   r  ro   ro   ro   rp   rw     rx   c                   S   s   t ddg S r   r4   r  ro   ro   ro   rp   rw     rx   c                   S   s   t ddgddggjddS )Nr   r   r   r   zNot a real methodr6  rC  ro   ro   ro   rp   rw     rx   c                   S   s(   t g dg dg dg dgjddS )Nrl  ro  rp  rq  zNot functionr  rC  ro   ro   ro   rp   rw     s   c                   S   s(   t g dg dg dg dgjddS )Nrl  ro  rp  rq  FrD  rC  ro   ro   ro   rp   rw     s   c                   S   s*   t tddgddggtddgddggS r  r9   r4   ro   ro   ro   rp   rw     rx   c                   S   s   t tddgddggg S r  rE  ro   ro   ro   rp   rw     rx   c                   S   s   t tdd dS )Nrb   r   r^   )r9   r   ro   ro   ro   rp   rw     rx   c                   S   s   t dd S )Nr   )r   r   r  ro   ro   ro   rp   rw     rx   c                   S   s   t dd S )Nr   )r   r   r  ro   ro   ro   rp   rw     rx   rn  c                      s
     dS )Nzmethod=LU_decomposition())r  ro   r   ro   rp   rw     rx   )r   r   r   r   r   r   r   r   c                      s     dS )Ng@)r7  ro   r   Vro   rp   rw     rx   c                      s     dS )Ng)r8  ro   rG  ro   rp   rw     rx   )rQ   r   rQ  r*   r  r,   r4   ro   ro   rG  rp   test_errorsw  sz    rI  c                   C   s   t t dksJ t tddggt tdgdgg  krDdksJn J t tdddd t tdddd   kr~dksn J t tg dg dgd	ksJ tdgtdggksJ t rJ t tg ksJ d S )
Nr   r   r   c                 S   s   dS r}   ro   rt   ro   ro   rp   rw     rx   ztest_len.<locals>.<lambda>c                 S   s   dS r}   ro   rt   ro   ro   rp   rw     rx   r   r   r   )r0  r4   ro   ro   ro   rp   test_len  s    8 
rJ  c               	   C   s   t ddtftddfddtd ff} | tt tdt td d ftt dt dt fdt dt td d ffkszJ | tt tdt tt ftd d dt dt fdt dt ttd  ffksJ d S )Nr   r   r   r   r   r   )r4   rb   rc   r   r   ro   ro   rp   test_integrate  s    $FFrK  c                  C   sX   t ddttt ftddfddtd d ff} | tdt dtddfdfksTJ d S )	Nr   r   r   r   r   r   )r   r   r   )r   r   r   )r4   r   rb   rc   r  r   ro   ro   rp   
test_limit  s    0rL  c                  C   s  t ddtftddfddtd d ff} t| tt| s@J | tt dddddt ffksfJ | tt d	ks|J t| tt dddddt ffksJ t| tt d	ksJ |  }t|tt|sJ |ttdddddt ffksJ |ttd	ksJ t|ttdddddt ffks>J t|ttd	ksVJ | jtd
dt| td
dksxJ t| td
dt| td
dksJ d S )Nr   r   r   r   r   r   r   r   )r   r  r   FrN  )	rB   rb   rc   r   r   r   rT  rC   rZ   )r   A_immro   ro   rp   	test_diff  s    (&&&("rN  c               
      sv  t ttgttgg} | | tddgddggddgddgggddgddggddgddggggksfJ t| | tddgddggddgddgggddgddggddgddggggksJ |  }||tddgddggddgddgggddgddggddgddggggksJ t||tddgddggddgddgggddgddggddgddggggkshJ | tt ddgddggksJ t	tt
g}| |tddddksJ | | tddgddggddgddgggddgddggddgddggggksJ |tt
gg}|jdks,J |tdgdggdgdgggksRJ td}|ttt  tttggt t t tgksJ  tttgdft td tt ttg tt td ttg tt tt tdggks J tttt }|ttggttttt tttt gksjJ |tttffttttt tttt gksJ |tttffttt tt tttt gksJ |ttffttggttttt tt tt gtttt tttt ggksHJ  ttt tttffdd ks|J  ttt tttffdd ksJ  tttggtttfft fd	d
tttfD ksJ ttttgg}t|t	sJ |tddggks*J td tttgg}t|t	sRJ |tdtd  dggksrJ d S )Nr   r   r   )r   r   r   r  r   r   r  c                    s&   g | ]  fd dt ttfD qS )c                    s   g | ]}  | qS ro   )r   r   )fxyzrv   ro   rp   r    rx   z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)rb   rc   rd   )r   rO  )rv   rp   r    rx   z'test_diff_by_matrix.<locals>.<listcomp>)rB   rb   rc   rd   re   r   rY   rT  r^   rC   r_   rA   r   r   r   r   r   r4   r   )r   rM  r   ZdBr  exprresro   rP  rp   test_diff_by_matrix  sF    RRTT$ T&8   :<>d44>rS  c                      sh   t ddtftddfddtd d ff tt fdd t dtt d	d
dddt ffksdJ d S )Nr   r   r   r   r   c                      s    j S rr   )Znonexistantattributero   r   ro   rp   rw     rx   ztest_getattr.<locals>.<lambda>r   r   r   r   )r4   rb   rc   rQ   r  getattrro   ro   r   rp   test_getattr  s    (rU  c                  C   s   t g dg dg dg} | js$J | j} | js4J d| d< | jdu sJJ t g dg dg dg} | jrnJ tdd	} | jsJ d S )
N)r   r   r   )r   r   r   r   r   )r   r   Frv  r   r   )r4   Zis_upper_hessenbergrS  Zis_lower_hessenbergrA   r   ro   ro   rp   test_hessenberg  s    



rV  c                  C   s*  t tdd  t tdd  t tdd  t tdd  t tdd  tdt dfd	fjd
dttdt dgddggksJ td} | jd
d}|tddgddtd t ggksJ ||j | ksJ td} |  }||j | ksJ |jsJ |tg dg dg dgks J tddt ddt  fdt ddt fddt  dt dff} |  	 tdtddfdt ddffksJ t tdd  t tdd  t tdd  t tdd  t tdd  t
dt dfd	fjd
dttdt dgddggksJ t
d} | jd
d}|tddgddtd t ggksRJ ||j | ksfJ t
d} |  }||j | ksJ |jsJ |tg dg dg dgksJ t
ddt ddt  fdt ddt fddt  dt dff} |  tdtddfdt ddffks&J d S )Nc                   S   s   t d S Nr   r4   choleskyro   ro   ro   rp   rw   .  rx   ztest_cholesky.<locals>.<lambda>c                   S   s   t d S Nr   )r   r   rX  ro   ro   ro   rp   rw   /  rx   c                   S   s   t dt dfdf S Nr   r   r   )r4   r	   rY  ro   ro   ro   rp   rw   0  rx   c                   S   s   t d S N)r   r   )r   r   rX  ro   ro   ro   rp   rw   1  rx   c                   S   s   t djddS Nr[  F	hermitianrX  ro   ro   ro   rp   rw   2  rx   r   r   r   Fr`  r   r^  r   r   ))   r   r  )r   r   r   )r  r   rc  r  )r   r   r   )r   r   r   r   r   r   rc  r   r   c                   S   s   t d S rW  r5   rY  ro   ro   ro   rp   rw   A  rx   c                   S   s   t d S rZ  rc  ro   ro   ro   rp   rw   B  rx   c                   S   s   t dt dfdf S r\  )r5   r	   rY  ro   ro   ro   rp   rw   C  rx   c                   S   s   t d S r]  rc  ro   ro   ro   rp   rw   D  rx   c                   S   s   t djddS r_  rc  ro   ro   ro   rp   rw   E  rx   )rQ   r,   r   r4   r	   rY  r   rS  r  r   r5   )r   r  ro   ro   rp   test_cholesky-  sL    (
$@0*$@rd  c                  C   s  t ddd} tt| t| g}t|ddks6J |dtt| d t| d  tddkshJ tdtddgg}| td	td
d tj	ksJ |t
t|ksJ |t
 t|ksJ tddgddgg}|ddksJ |ddksJ |ddksJ tddtdd  krFdksLn J |t
dks`J tdttg| tj	t gg}|dttdddttd   td  | d  ksJ tg dddtddgg}|dttddtdd  ks J |dtju sJ |dtdd ks2J tddgddgg}tddgddgg}tdt gtdgg}tddgddgg}||||g}t ddd}dD ]}td|tju sJ |D ]B}	|D ]6}
|	||
| |	|
 | }|dksJ qʐq||||fD ]8}t|| |t|||  }|dksJ qqtdddt  dg}ttj	dt dg}tg d}tddtg}ttdtdddg}|||||g}t ddd}ddddtjtjtfD ]}|dkrtg d|tju sJ |dkrd|D ]L}	|D ]@}
|	||
| |	|
 | }t|dktju sJ qq|ddddtjtjfv r|D ]8}	t||	 |t||	|  }|dksJ qqtddg d}|ddksJ d S )Nrb   Tr}  r   r   r   r   r   rb  r   r   r   r   Z	frobeniusfro%   )r   r   r   re  i  r   iI3 r   alpha)re  r   r   r   )r   r   r   g      Y@r   )	r   r   r   r   r   r   r   r   r   )r   r4   r   r   r)   normr   r   r   r   r   maxr  r8   rc   r   r   r   r[  r	   rA   r(   r
   InfinityNegativeInfinitytrue)rb   r   r   r   r   r  r  rg  orderr  r  Zdifr   r^   r_   r`   ra   ero   ro   rp   test_matrix_normU  s    2"2,
*

 ro  c                     s   t dddtd} d| d< tdd| d< |  d	ks:J | d
< |  tdtttddt kspJ ttt	gt	 tgg}|  t
 fddtddtjtddtd tttdd fD sJ tg  dksJ d S )Nrb   Tr}  r   r   r   r   r   r   r   r   c                 3   s(   | ] }t d  | V  qdS )      ?N)r   Z
epsilon_eqr   r  )r   valZMcrb   ro   rp   r     rx   z(test_condition_number.<locals>.<genexpr>r   r   r   r   r   )r   r8   r   Zcondition_numberr   r   r   r4   r   r   r   r   r   r   )r   r   ro   rs  rp   test_condition_number  s    .&*rt  c                  C   s   t d} t d}| | d d d d f ks,J | | d d d d f krHJ | |krTJ | |ks`J | dkslJ | dkrxJ td}t d}||ksJ ||krJ d S )N)r   r  r   r   r   ))r   r   r   )r   r   r   )r   r   r   r   )r  r   r   )r4   r5   )r   r   r   r  ro   ro   rp   test_equality  s    rv  c                   C   s@   t dtg dgtg dg dg dg dgks<J d S )Nr   )r   r   r   r  r   r   )r8   r6  r4   ro   ro   ro   rp   test_col_join  s    rw  c                  C   s\   t g dg} tddD ]>}g d}||d ttd|| d |ksJ qd S )Nr   r   r   r  r   r  r   r   r   )r4   r   insertrM   r8   r7  r  rR  )Zr4ru   r&  ro   ro   rp   test_row_insert  s
    rz  c                  C   sZ   t g d} tddD ]>}g d}||d ttd|| d |ksJ qd S )Nrx  r  r   r   r   r   r   )r4   r   ry  rM   rA   r8  r  rR  )Zc4ru   r&  ro   ro   rp   test_col_insert  s
    r{  c                  C   s|   t ddg t tddtddgks,J t g d t g dksLJ t g d} | jdd dt g dksxJ d S )	Nr   r   r   r   )r   r   g0.++c                 S   s   | j dddjS )Nr   T)r{   Zchop)r  is_zeror  ro   ro   rp   rw     rx   z!test_normalized.<locals>.<lambda>rD  )r4   r@  r   r   ro   ro   rp   test_normalized  s     
r}  c                   C   s,   t dd dksJ t dd dks(J d S )Nc                   S   s   t d S rs  r8   Zprint_nonzeroro   ro   ro   rp   rw     rx   z$test_print_nonzero.<locals>.<lambda>z[X  ]
[ X ]
[  X]
c                   S   s   t ddS )Nr   .r~  ro   ro   ro   rp   rw     rx   z[.  ]
[ . ]
[  .]
)rN   ro   ro   ro   rp   test_print_nonzero  s    

r  c                  C   s   t dtdksJ t dtdks,J tddt dddgd ksLJ t ddgddgg} t ddgddgg}tD ]x}|d}| |ksJ | td|dksJ t||ksJ |d}||ksJ |td|dksJ t||ksxJ qxd S )Nr   r   r   r   r   r   r  )r4   r8   rA   r;   r   r   )ru   rd   r   r   ro   ro   rp   test_zeros_eye	  s     

r  c                  C   s
  t  jsJ t ddgddggjs&J tddjs6J tdjrDJ t tdgddggjd ksbJ ttdgddggjd ksJ ttdgddggjd ksJ ttdgddggjd ksJ t tdgddggjdksJ tddd} t | dgddggjdksJ d S )	Nr   r   r   r   Fr^   T)Znonzero)	r4   Zis_zero_matrixrA   r8   rb   r5   r2   r3   r   r  ro   ro   rp   test_is_zero	  s    r  c            
      C   s  t d } t| }t|  }t| }t|  }t| }t|  }|| td tdksZJ || td tdksvJ || td tdksJ | ddt|   ksJ | ddt|   ksJ | ddt|   ksJ tdtdksJ tdtdksJ tdtdks&J tg dt d }tg dt d }tg dt d }	tt  d |	 ks~J tt  d |	 ksJ tt  d |		 ksJ t
t 
 d |	 ksJ tt 
 d |	 ksJ tt 
 d |		 ks
J d S )Nr   r   r   r   r  r   r   )r   r?   r>   r=   r8   r  r   r\   Zfrom_axis_angleZto_rotation_matrixrF   rG   rH   )
thetaZr3_plusZr3_minusZr2_plusZr2_minusZr1_plusZr1_minusZq1Zq2Zq3ro   ro   rp   test_rotation_matrices#	  s2    


r  c                   C   sj   t tdd dksJ ttdtdks0J ttdd  t tddksRJ ttddksfJ d S )	NZvectorr   z	vector[4]ra   c                   S   s   t dd S )Nra   r   r-   ro   ro   ro   rp   rw   K	  rx   z%test_DeferredVector.<locals>.<lambda>testzDeferredVector('test'))strr.   r   rQ   rQ  reprro   ro   ro   rp   test_DeferredVectorH	  s
    r  c                   C   s   t tdrJ d S )Nr  )rO   r.   ro   ro   ro   rp    test_DeferredVector_not_iterableO	  s    r  c                   C   s   t tdd  d S )Nc                   S   s   t tdS )NrH  )r4   r.   ro   ro   ro   rp   rw   S	  rx   z,test_DeferredVector_Matrix.<locals>.<lambda>)rQ   r  ro   ro   ro   rp   test_DeferredVector_MatrixR	  s    r  c                  C   s<  t } tddddg}tddddg}t||gtddddgtdd| dd | dd ggksdJ t|j|jgtddddgtdd| dd | dd ggksJ ttddgtddggdtdtd d tdd gttd d dtd d ggksJ ttdg}t|tdgggks8J d S )Nr   r   r   r   r   Tr   )r   r4   r1   rS  r   r&   )r   rh  ri  r  ro   ro   rp   test_GramSchmidtU	  s    
.. r  c                   C   s4   t g dddksJ t g dddddks0J d S )Nrl  r   r   F)Zzero)r6   ro   ro   ro   rp   test_casoratianf	  s    r  c                   C   s^   t  tdd jdksJ tddtdd tddks<J tddtdd t  ksZJ d S )Nr   r   )r   r   )r4   rA   r   ro   ro   ro   rp   test_zero_dimension_multiplyk	  s    "r  c                      s   t ddtd  dd d f t ddggks2J  dd d f t ddggksTJ  d d df t ddggjksxJ  d d df t ddggjksJ tt fdd tt fdd d S )	Nr   r   r   r   r   c                      s    dd d f S rz  ro   ro   r   ro   rp   rw   w	  rx   z'test_slice_issue_2884.<locals>.<lambda>c                      s    d S )Nrp  ro   ro   r   ro   rp   rw   x	  rx   )r4   r   rS  rQ   rQ  ro   ro   r   rp   test_slice_issue_2884q	  s    ""$$r  c                   C   sJ   t ddd d df jdks J t dddd d f tddg ksFJ d S )Nr   r   r   r   r   )rA   r   r4   ro   ro   ro   rp   test_slice_issue_3401{	  s     r  c                  C   s  t dd} d| d< | d d df tg dks2J | d dksBJ | dd dgksXJ d| d< | d dkspJ | ddd f tddggksJ tdd	gg| ddd f< | dd d f tg d
gksJ ddgg| ddd f< | dd d f tg dgksJ d| d< | d d d df tg dks6J g d| d< | d d df tg dksdJ tg d| d< | d d df tg dksJ tg d| d< | d d df tg dksJ d S )Nr   r   r   r   r   r  r   r   r   )r   r   r   +   )r   r  r     r   )r  r   r   r  )rA   r4   r5   )r  ro   ro   rp   test_copyin	  s(    
 ""$&""r  c                      s   t ddgddgg t ddgddggdfks4J ttdd  t g dtddgdtdgg t  d  jkszJ   d td	ksJ  jtd
d td	ksJ tt fdd tt fdd tt fdd d S )Nr   r   r   )r   c                   S   s   t ddgddgg S r   r4  ro   ro   ro   rp   rw   	  rx   z'test_invertible_check.<locals>.<lambda>)r   r   r   r   r   r  c                      s    j ddS )Nr=  r6  r  ro   r   ro   rp   rw   	  rx   c                      s    j ddS )Nr5  r6  r  ro   r   ro   rp   rw   	  rx   c                      s    j ddS )Nr;  r6  r  ro   r   ro   rp   rw   	  rx   )	r4   r  rQ   r   rb   r0  r   r8   r'   ro   ro   r   rp   test_invertible_check	  s    4r  c                  C   s@   t d\} }| | }|| tg dtg d| ks<J d S )Nzx, y)r   r   r   )r   r   r4   )rb   rc   rn  ro   ro   rp   test_issue_3959	  s    r  c                   C   s$   t tddgddggdks J d S )Nr   r   r   r   zMatrix([[1, 2], [3, 4]]))r  r4   ro   ro   ro   rp   test_issue_5964	  s    r  c                  C   s<   t d\} }tt| d| g|d | d ggdks8J d S )Nx yr   r   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))r   r%   r4   )rb   rc   ro   ro   rp   test_issue_7604	  s    "r  c                	   C   s   t djsJ t d js J tdjr.J tdjr<J tg dgjrPJ tddddddjsjJ tddtdjrJ tdddddjrJ tddddddddjrJ d S )	Nr   r  r   )r   r   rp  r   r   )r   r   )r   r   rp  r   r  )r8   Zis_IdentityrT  rA   r;   r4   r5   r   ro   ro   ro   rp   test_is_Identity	  s    r  c                   C   s$  t ddt dddksJ t ddg ddks:J tg dtg ddks\J tdddt gttddt gdt ksJ tdddt gjttddt gdd	dt ksJ tdddt gjttddt gd
d	dt ksJ tdddt gjttddt gd
dddt ks4J tdddt gjtddt dgd
ddddt  ksrJ tdddt gjtddt dgd
ddddt  ksJ ttdt gjttdt gddddksJ ttdt gjttdt gdddksJ ttdd  d S )Nr   r   r  r   rf  r   r  Fr`  Tre  physicsra  conjugate_conventionr   r   r   rightr   left)r  c                   S   s    t ddgjt ddgdddS )Nr   r   r   r   Tr  r  r>  ro   ro   ro   rp   rw   	  rx   ztest_dot.<locals>.<lambda>)r;   r?  r4   r	   rQ   r   ro   ro   ro   rp   test_dot	  s    "266:>>20r  c                  C   s   t ddd\} }}}}}td|||f| d|| f| | d| f| ||  dff}td|  | | f| d|| f|| d|f||| dff}| |sJ td tdsJ |  | sJ d S )NzB_x B_y B_z E_x E_y E_zTr}  r   r   )r   r4   Zdualequalsr8   rA   )ZB_xZB_yZB_zZE_xZE_yZE_zFZFdro   ro   rp   	test_dual	  s$    
r  c                  C   s   t ddg du sJ t dddtd dt  d ttd d  dtt t t t dg	} |  du slJ | jddd u sJ | jdd	 dd u sJ | d
  | d
< |  d u sJ | d
  | d
< |  } | jdddu sJ d| d< |  du sJ d S )Nr   r   Fr   r   Tr  c                 S   s   | S rr   ro   r  ro   ro   rp   rw   	  rx   z%test_anti_symmetric.<locals>.<lambda>r   r   )r4   is_anti_symmetricrb   rc   r   r   ro   ro   rp   test_anti_symmetric	  s    Dr  c                  C   s   t d} | jdd\}}||j |j|   kr>t|jksDn J | jddd\}}||j |j|   kr|t|jksn J || |  | ksJ d S )N)r   r   T)	normalize)r  sort)r4   r2  rS  r8   r   r  )r   r  rX   ro   ro   rp   #test_normalize_sort_diogonalization	  s    ,,r  c                   C   s   t tdd  d S )Nc                   S   s   t g dt ddg gS )Nr   r   r   r   ro   ro   ro   rp   rw   	
  rx   z!test_issue_5321.<locals>.<lambda>)rQ   r   ro   ro   ro   rp   test_issue_5321
  s    r  c                  C   s   t tddtd t g dg dgks0J t tddtd t ddgddgddgddggkslJ t} | | td| dtd t g dg dgksJ d S )Nr   )r   r   r   r   )r   r   r   r   r   r   )r4   hstackr8   vstackr5   r  ro   ro   rp   test_issue_5320
  s     r  c                  C   sV   t dgg} t| }t || t ddggks2J t || t dgdggksRJ d S r  )r4   r   r  r  )r   ZAImro   ro   rp   test_issue_11944
  s    r  c                     s   g d} g d}t g d}|j} fdd}tD ]\  | } |}|||| |||j| ||j|j| ||j|| q2ttdd  d S )Nr   r   )r   r   r   c                    s    || ksJ t |  ksJ d S rr   )r   )r   r  r  ro   rp   r  )
  s    ztest_cross.<locals>.testc                   S   s"   t ddddgt ddddgS r   r<  ro   ro   ro   rp   rw   3
  s    ztest_cross.<locals>.<lambda>)r4   rS  r   r=  rQ   r*   )r^   r_   r  r  r  r   r   ro   r  rp   
test_cross#
  s    r  c                  C   s^   t tttg} t tttg}|  | | |ks6J |  	 sFJ |  
 | ksZJ d S rr   )r4   rb   rc   rd   r^   r_   r`   Zhatr=  r  Zvee)Zv1Zv2ro   ro   rp   test_hat_vee6
  s
    r  c                  C   sr   t dd  D ]:} | d| dh}t|dkrB| | dksJ qt d d D ]} t| dtrTJ qTd S )Nr   r   r   )r   r8   r0  popr   r   )r   r  ro   ro   rp   	test_hash=
  s
    $r  c                      s   t d  tt fdd d S )Nr   c                      s   t  dS r  )hashr8   ro   r  ro   rp   rw   K
  rx   z!test_issue_3979.<locals>.<lambda>)r   rQ   r  ro   ro   r  rp   test_issue_3979F
  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   r   )r	   r4   r   adjoint)rV  r  r   ro   ro   rp   test_adjointN
  s    r  c                  C   sv   dd l } | jjjd}| jj|}dt| gd|gg}tddgt | |gg}tD ]}|||	 ksXJ qXd S )Nr   r^   )
Zsympy.physics.quantumr  Zquantumoperatorr    r!   r	   r4   r   r  )sympyr^   Za_dagrV  r  r   ro   ro   rp   test_adjoint_with_operatorU
  s    r  c                   C   s8   t tttd ttd  ggtdggks4J d S )Nr   r   )r(   r2   r   rb   r   ro   ro   ro   rp   test_simplify_immutable`
  s    "
r  c                     sT   t dtd\ tddfdd} tdd fdd}| }|| ksPJ d S )NzF, Gr  r   c                    s    | | S rr   ro   rt   )Gro   rp   rw   f
  rx   ztest_replace.<locals>.<lambda>c                    s    | | S rr   ro   rt   )r  ro   rp   rw   g
  rx   )r   r   r4   replace)Kr   Nro   )r  r  rp   test_replaced
  s
    r  c                  C   sT   t ddgtddt  gg} |  tjtdtjthks<J | tthksPJ d S r   )r4   rb   atomsr   rZ  ZNegativeOner   r   ro   ro   rp   
test_atomsl
  s     r  c            	         s  t ttgttgg} t| jddt|  ks4J t ddgddgddggt g d	g d
gt ttgg}|D ]d}|jdd}|| }|| }t|| |ksJ t|| |ksJ |j|ksJ |j|kspJ qp|D ]n}t|jdd}|| }|| }t|| |ksJ t|| |ks*J |j|ks:J |j|ksJ qddl	m
  | jdd}|  }tdtdtdtdi}t fddt||||D sJ d S )NZRDr6  re  h   i  r   r   r   )r   r   r   )rc  r     EDr   compi_ib,  i  ij  c                 3   s$   | ]\}} |  |  V  qd S rr   rz   )r   ru   rv   r  ro   rp   r   
  s   ztest_pinv.<locals>.<genexpr>)r4   r^   r_   r`   ra   r(   pinvr  r  sympy.core.numbersr  r   zipr   )	A1Asr   A_pinvAApApAr  wZrepsro   r  rp   	test_pinvr
  s:     
r  c                  C   s~   t g dg dg dg dg dg dgg} | D ]F}|jdd}|| }|| }|j|ks`J d	d
 }||j|s2J q2d S )N)=   r   7   rL  r  r   )>   r   U   r  r   r   )E   8   r  r   6   r   )r   r  [   )   r  r   )r   r  r   r   Z   r   )r   r   r   r   r   r   r  r6  c                 S   s<   |  t}dd |D }| | | }tdd |D S )Nc                 S   s   i | ]}||  qS ro   r  )r   r  ro   ro   rp   
<dictcomp>
  rx   zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>c                 s   s   | ]}t |d k V  qdS )g|=Nr   r   rn  ro   ro   rp   r   
  rx   zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>)r  r$   r  r  r   )M1rW  ZrootofsZrootofs_approxZdiff_approxro   ro   rp   allclose
  s    
zEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose)r4   r  r  )r  r   r  r  r  r  ro   ro   rp   3test_pinv_rank_deficient_when_diagonalization_fails
  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sHJ d S r  )r;   r4   ro   ro   ro   rp   test_issue_7201
  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}   )r2   r3   r4   r5   rb   Zfree_symbolsr   ro   ro   rp   test_free_symbols
  s    r  c                      s  zddl m  W n ty*   td Y n0 t g dtg dksLJ t g dgtg dgkspJ t g dg dgtg dg dgksJ t tttgttttgksJ tt	 fdd t dd	g d
dggtdd	gd
dggksJ t dd	gd
dggtdd	gd
dggks>J t g  g gtd	dg   krvtddg ks|n J dS )zSee issue 7465.r   array?NumPy must be available to test creating matrices from ndarraysr   r  c                      s(   t  ddgddggddgddgggS )	Nr   r   r   r   r   r   r   r   r   ro   r  ro   rp   rw   
  rx   z#test_from_ndarray.<locals>.<lambda>r   r   r   r   N)
numpyr  ImportErrorrT   r4   rb   rc   rd   rQ   NotImplementedErrorro   ro   r  rp   test_from_ndarray
  s      $$
62r  c                  C   s   ddl m}  zddlm}m} W n ty:   td Y n0 | |ddgddgg}|d dksdJ t|g d	ksxJ tt	( | |ddgddgg}W d    n1 s0    Y  |d dksJ t|g d	ksJ d S )
Nr   
_matrixify)r  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesr   r   r   r   rl  )
sympy.matrices.commonr  r  r  r  r  rT   r   rP   PendingDeprecationWarning)r  r  r  r   ro   ro   rp   test_17522_numpy
  s    
6r  c                  C   sx   ddl m}  zddlm} W n ty6   td Y n0 | |ddgddgg}|d d	ks`J t|g d
kstJ d S )Nr   r  )r  zEmpmath must be available to test indexing matrixified mpmath matricesr   r   r   r         @)rq  g       @r  r  )r  r  Zmpmathr  r  rT   r   )r  r  r   ro   ro   rp   test_17522_mpmath
  s    r  c                  C   sx   ddl m}  zddlm} W n ty6   td Y n0 | |ddgddgg}|d dks`J t|g d	kstJ d S )
Nr   r  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesr   r   r   r   rl  )r  r  Zscipy.sparser  r  rT   r   )r  r  r   ro   ro   rp   test_17522_scipy
  s    r  c                  C   s   t dtgt dgg} | js J dt | d< | jdu s:J t| d< | jd u sPJ | d t | d< | jdu snJ td}td}t |ggjd	u sJ t ||gt||ggjd	u sJ t ||g||ggjdu sJ t ||gt||ggjdu sJ d S )
Nr   r   r   Fr   r   r_   r`   T)r4   r	   Zis_hermitianrb   r   r    r!   r   r  ro   ro   rp   test_hermitian  s    
"r  c                  C   sJ   t tttddgg} | d dt ks*J |  t dt ggksFJ d S )NFrN  r   r   )r4   r   rb   r   r  ro   ro   rp   	test_doit  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sJ t g dg dg dg}|d |t g dg dgksJ t g dg dg dg tt fd	d
 t g dg dg dgttfdd
 t g dg dg dg} | d | t ddgddgddggks`J t g dg dg dg}|d |t ddgddgddggksJ t g dg dg dg tt fdd
 t g dg dg dgttfdd
 d S )Nr   rF  r   r   r   )r   r   r   )r   r   rc  r   c                      s
     dS r   row_delro   r  ro   rp   rw   &  rx   z+test_issue_9457_9467_9876.<locals>.<lambda>c                      s
     dS Nr   r  ro   rW   ro   rp   rw   (  rx   r   r   r   r   c                      s
     dS r   col_delro   r  ro   rp   rw   2  rx   c                      s
     dS r  r  ro   rW   ro   rp   rw   4  rx   )r4   r  rQ   rQ  r  )r   r  r]   ro   )r  rX   rp   test_issue_9457_9467_9876  s.    



$
$r  c                  C   s   t ddd\} }t d\}}td}tdd| ||tg}||  | | | | ksTJ || | || | kspJ | | ||  ksJ || || ksJ ||  | t||  dgd||  ggksJ d S )Nr  F)Zcommutativeza br   r   )r   r8   r4   rd   )rb   rc   r^   r_   r   r  ro   ro   rp   test_issue_94226  s    r  c            	      C   s   t g } ddgt g df}ddg|d jf}ddgt ddgdd	ggf}|||fD ]R\}}|D ]D}t| |}d
|v r~||n|d|}||krt|t|ks`J q`qTd S )Nr8  r5  )r   r   r   r7  r6  r   r   r   r   joinr  )r4   rS  rT  id)	r   r^   r_   r`   opsr   opr  newro   ro   rp   test_issue_10770B  s    
r  c                  C   sB  t g dg dg dg} | g dg dt ddgdd	gd
dggksLJ | g dg dt dgdgd
ggksxJ | g dg dt g dgksJ | g dg dt g dg dgksJ | g dg dt ddg ksJ | g dg dt ddg ksJ | g dg dt dgdggks>J d S )Nr   r  ru  r   )TTFr   r   r   r   r   r   )TFF)TFT)FFFr   r   )FTF)r4   r   r   ro   ro   rp   test_issue_10658N  s    ,&$&r  c                  C   s  t ddtd  dgdtd d d dtd d gg} |  dksLJ t ddtd t  dgdddtd t  gg} t|  d	 t ddddtd t   gd	d	gg tddksJ td
\}}}}}}}}}	}
}}t |||| || d	g|||| || d	g|||| || dg|||| || dg|	|
d|	 | |	|  d|
 | |
|  d	gg} |  dks|J d S )Nr  r   r   r   r   r  r   r   r   /a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1)r4   r   rE  r	   r(   r  rA   r   )r   axaybxbycxcydxdyexeyt0t1ro   ro   rp   !test_opportunistic_simplification[  s    <4F r  c                  C   s   t g dg dg} |  d t g dg dg  dk s@J t g dg dg d	g}t g d
g dg dg}t g dg dg d	g}| |  dk sJ | |  dk sJ d S )N)g~jth?gRM@g(\M@)gDl)@gQgp=
cG@r   )rq  r   r   )r   rq  rq  V瞯<)q7K<rq  r   )      r   r   r   )r  rq  r  )r                 @)r  r  rq  )r   r  r  )rq  r  g      )r4   r  rh  r  )mmZm_mixedZm_floatZm_invro   ro   rp   test_partial_pivotingk  s(    
r  c                  C   st   t g dg dg dg} | jdd dd }t g dg d	g d
g}|| }| dk s`J |d dkspJ dS )z When doing numerical computations, all elements that pass
    the iszerofunc test should be set to numerically zero if they
    aren't already. )?皙gɿr   )皙r  gٿr   )r  r  g333333?r   c                 S   s   t | dk S )Ng [n<r  r  ro   ro   rp   rw     rx   z*test_iszero_substitution.<locals>.<lambda>rD  r   )rq  r   g4iҤIӿr   )r   rq  glٲer   rk  r  rp  N)r4   r  rh  )r   Zm_rrefZ	m_correctZm_diffro   ro   rp   test_iszero_substitution  s    r  c            
      C   sR  ddl m}  dtttdd  tttdd td  }dtd tttdd d  d	tttdd   d
tttdd d   }| dd}| dtd }| ||}t|t| |t| g}t|| || g}tt|| t|| g}dd }	|jd|	ddksJ |jd|	ddks6J |jd|	ddksNJ d S )Nr   )Pointr   re  -   r   r  r   r   r   r   c                 S   s   t |  dk S )Ng#B;)r   r{   r  ro   ro   rp   rw     rx   z"test_issue_11238.<locals>.<lambda>T)r(   r  )	Zsympy.geometry.pointr  r   r   r   r   r4   r(   rE  )
r  xxyyp1p2Zp0rh  ri  m3Zro   ro   rp   test_issue_11238  s    0R

r%  c                  C   sh   t ddg d} | tj }| | }tD ]<}|| \}}t|t| ksNJ t|t| ks&J q&d S )Nr   rl  )r4   r   ZImaginaryUnitr   Zas_real_imagr   )rh  ri  r#  Zklsr^   r_   ro   ro   rp   test_as_real_imag  s    
r&  c                  C   sV   t ddg d} |  \}}|d t dddgks6J |d t ddg dksRJ d S )Nr   r  r   r   r   )r   r   r   r   )r4   Zjordan_cells)r   r  ZJcellsro   ro   rp   test_deprecated  s    r'  c                  C   s\   ddl m}  tg d}tg d}| |dtg dks>J | |dtg dksXJ d S )	Nr   )Mod)r   r   r   )r   rL  r  r   )r   r   r   r   )r   r   r   )Zsympy.core.modr(  r4   )r(  r   r   ro   ro   rp   test_issue_14489  s
    r)  c                  C   s\   zddl m}  W n ty*   td Y n0 tddgddgg}| |tdjjd	ksXJ d S )
Nr   r  r  r   r   r   r   )dtypefloat64)r  r  r  rT   r4   floatr*  name)r  r   ro   ro   rp   test_issue_14943  s    r.  c                  C   s4   t ddd} td}| d dk}t|dks0J d S )Nr   r   r^   r   r   zm[0, 0] > 0)rD   r   r  )r   r^   ro   ro   rp   test_case_6913  s    r/  c                  C   s.   t ddd} td}| ||| iks*J d S )Nr   r   r^   )rD   rK   match)r   r^   ro   ro   rp   test_issue_11948  s    r1  c                  C   s   t dtgt dt gg} t j|  t dgtggt dgt gggksJJ t dtdgt tdt gg} t j|  t dgtgdggt td gtdd gt gggksJ t dtgdt gg}| \}}||j t dksJ d S )Nr   r   r   )r4   r	   Zorthogonalizer   ZQRdecompositionr  r8   )Zvecsr   rX   r   ro   ro   rp   test_gramschmidt_conjugate_dot  s     4r2  c                  C   sf   t tddd} t tddd}| |}t|| d }t|| d }||d ksVJ |dksbJ d S )Nr^   r   r   r_   r   r   )r4   rD   r?  r   )r^   r_   r`   ra   rn  ro   ro   rp   test_issue_8207  s    
r3  c                     sD  ddl m}  tddgddgg  ttt tttttdt tt gdtdt ggkshJ tddgddgg t  d ttttt	dd t	d d gt	d d t	dd ggksJ t
tdd	  t
t fd
d	 tg dg dg dg dg  ttt  ks.J t
t fdd	 tddgddgg t t	ttd  ksvJ tg dg dg dg t | tdtd  ksJ tg dg dg dg dg  ttt  ksJ tg dg dg dg dg  ttt ttt t  ks@J d S )Nr   nthrootr   r   r   r   r   c                   S   s   t dtttS r  )rA   analytic_funcr   rb   ro   ro   ro   rp   rw     rx   ztest_func.<locals>.<lambda>c                      s    t  tt t S rr   )rb   r6  r   ro   r   ro   rp   rw     rx   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                      s     tttS rr   )r6  r   rb   ro   r   ro   rp   rw     rx   r  r   "   )r   rJ  r   )r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   rk  )sympy.simplify.simplifyr5  r4   r6  r   rb   re   r   r   r   rQ   r   r   r(   r   r4  ro   r   rp   	test_func  s$    HT "$  r9  z$Cannot create threads under pyodide.c               	   C   st   dd } t dP tj &}|| }| s4J W d    n1 sH0    Y  W d    n1 sf0    Y  d S )Nc                  S   s&   t jd ksJ tdgg} | |  } dS r   )rI   stater4   r   ro   ro   rp   r    s    ztest_issue_19809.<locals>.fT)rE   
concurrentZfuturesZThreadPoolExecutorZsubmitresult)r  executorfuturero   ro   rp   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  )r4   rb   rc   r   r   r   r   ro   ro   rp   test_issue_23276  s
    r@  c                  C   s   t g dg dg dg dg} |  }|d tg dks@J |d tg dksXJ |d	 tg d
kspJ t|dksJ tj| g|R   |ksJ d S )Nr   r   r   r   r   r   r  r   r   r  r   r   r   r   r   r   r   r   r)  r   r   )r   r   r   r   r   )r   r  r   r   r   )r   r   r   r)  r   )rj   r'  r4   r0  r  r   Zbasisro   ro   rp   test_columnspace_one!  s    rF  c                  C   s   t g dg dg dg dg} |  }|d tg dgksBJ |d tg dgks\J |d tg d	gksvJ t|d
ksJ d S )NrA  rB  rC  rD  r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )rj   r%  r4   r0  rE  ro   ro   rp   test_rowspace0  s    rG  c                  C   s   t g dg dg dg dg} |  }|d tg dks@J |d tg dksXJ td	d
 | |d  D svJ tdd
 | |d  D sJ d S )NrA  rB  rC  rD  r   )r   r   r   r   r   r   )r   r   r   r   r   c                 s   s   | ]}|j V  qd S rr   r|  r  ro   ro   rp   r   H  rx   z%test_nullspace_one.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S rr   rH  r  ro   ro   rp   r   I  rx   )rj   r*  r4   r   rE  ro   ro   rp   test_nullspace_one>  s    rI  c                     sZ  t d tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d tt fd
d tt fdd tt fdd tt fdd tt fdd tt fdd  dddtg dg dg dgks J  dddtg dg dg dgksNJ  jddddtg dg dg dgks~J  jddddtg dg dg dgksJ  dddtg dg dg dgksJ  jddddtg dg dg dgksJ  jddddtg dg dg dgks<J  ddddtg dg dg dgkslJ  jddddd tg dg dg dgksJ  jddddd!tg dg dg dgksJ td"ddgd# } | dddtd"ddgd# ksJ | dddtd"ddgd# ks.J | ddddtd"ddgd# ksVJ d S )$Nr   c                      s
     dS Nabcelementary_row_opro   rn  ro   rp   rw   P  rx   ztest_row_op.<locals>.<lambda>c                      s      S rr   rL  ro   rN  ro   rp   rw   Q  rx   c                      s    j ddddS )Nn->knr   r  r   rL  ro   rN  ro   rp   rw   R  rx   c                      s    j ddddS )NrO  r  r   rP  rL  ro   rN  ro   rp   rw   S  rx   c                      s    j ddddS )Nn<->mr   r   row1row2rL  ro   rN  ro   rp   rw   T  rx   c                      s    j ddddS )NrQ  r   r   rR  rL  ro   rN  ro   rp   rw   U  rx   c                      s    j ddddS )NrQ  r  r   rR  rL  ro   rN  ro   rp   rw   V  rx   c                      s    j ddddS )NrQ  r   r  rR  rL  ro   rN  ro   rp   rw   W  rx   c                      s    j dddddS Nn->n+kmr   r   rS  rT  r   rL  ro   rN  ro   rp   rw   X  rx   c                      s    j dddddS )NrV  r   r   rW  rL  ro   rN  ro   rp   rw   Y  rx   c                      s    j dddddS )NrV  r  r   r   rW  rL  ro   rN  ro   rp   rw   Z  rx   c                      s    j dddddS )NrV  r   r  r   rW  rL  ro   rN  ro   rp   rw   [  rx   c                      s    j dddddS rU  rL  ro   rN  ro   rp   rw   \  rx   rO  r   r   r  r   r   r   r  r  rP  )rS  r   rQ  rR  )r  rT  rV  )r   r   r   )r  r   rT  )rS  r   rT  r   r   )r|   rQ   r   rM  r4   rq   r  ro   rN  rp   test_row_opM  s8    ..00.00022&&rX  c                     sZ  t d tt fdd tt fdd tt fdd tt fdd tt fdd tt fdd tt fd	d tt fd
d tt fdd tt fdd tt fdd tt fdd tt fdd  dddtg dg dg dgks J  dddtg dg dg dgksNJ  jddddtg dg dg dgks~J  jddddtg dg dg dgksJ  dddtg dg dg dgksJ  jddddtg dg dg dgksJ  jddddtg dg dg dgks<J  ddddtg dg dg dgkslJ  jddddd tg dg dg dgksJ  jddddd!tg dg dg dgksJ td"ddgd# } | dddtd"ddgd# ksJ | dddtd"ddgd# ks.J | ddddtd"ddgd# ksVJ d S )$Nr   c                      s
     dS rJ  elementary_col_opro   rN  ro   rp   rw   t  rx   ztest_col_op.<locals>.<lambda>c                      s      S rr   rY  ro   rN  ro   rp   rw   u  rx   c                      s    j ddddS )NrO  r   r  r   rY  ro   rN  ro   rp   rw   v  rx   c                      s    j ddddS )NrO  r  r   r[  rY  ro   rN  ro   rp   rw   w  rx   c                      s    j ddddS )NrQ  r   r   col1col2rY  ro   rN  ro   rp   rw   x  rx   c                      s    j ddddS )NrQ  r   r   r\  rY  ro   rN  ro   rp   rw   y  rx   c                      s    j ddddS )NrQ  r  r   r\  rY  ro   rN  ro   rp   rw   z  rx   c                      s    j ddddS )NrQ  r   r  r\  rY  ro   rN  ro   rp   rw   {  rx   c                      s    j dddddS NrV  r   r   r]  r^  r   rY  ro   rN  ro   rp   rw   |  rx   c                      s    j dddddS )NrV  r   r   r`  rY  ro   rN  ro   rp   rw   }  rx   c                      s    j dddddS )NrV  r  r   r   r`  rY  ro   rN  ro   rp   rw   ~  rx   c                      s    j dddddS )NrV  r   r  r   r`  rY  ro   rN  ro   rp   rw     rx   c                      s    j dddddS r_  rY  ro   rN  ro   rp   rw     rx   rO  r   r   r  r   r   r   r  r  r[  )r]  r   rQ  r\  )r  r^  rV  )r   r   r   )r  r   r^  )r]  r   r^  r   r   )r|   rQ   r   rZ  r4   rq   r  ro   rN  rp   test_col_opq  s8    ..00.00022&&ra  c                  C   s   t d} td}| jsJ |js$J tddg }|js:J tddg d}|jsTJ tddg d}|jrnJ td}tdd|ddg}|jsJ tdd||dg}|jrJ tddg d}|jrJ d S )	Nr   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   rb   r   	r   r   r   r   r   r   r   r   r   )r~   r|   
is_echelonrq   r   )Zzroidentr^   rb   ro   ro   rp   test_is_echelon  s"    






re  c                     s  t d td}    ks J |  | ks0J tddg     ksLJ tdddg    ksjJ fdd}tddg d tdgdgdggg} fd	d
t jD }  jsJ | || tddg d g } fdd
t jD }  jsJ | || tddg d ttddgdgdggttddgdgdggg} fdd
t jD }  jsJ | || tddg d tdgdgdggg} fdd
t jD }  jsJ | || tddg d tdgdgdggtdgdgdggg} fdd
t jD }  js\J | || tddg d tdgdgdggg} fdd
t jD }  jsJ | || d S )Nr   r   r   r   c                    sb   |D ]}t dd  | D sJ q|D ]4}t dd |D s(t dd  |  D r(J q(d S )Nc                 s   s   | ]}|j V  qd S rr   rH  r   re   ro   ro   rp   r     rx   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S rr   rH  rf  ro   ro   rp   r     rx   c                 s   s   | ]}|j V  qd S rr   rH  rf  ro   ro   rp   r     rx   )r   r   )r   r   nullsr   )	a_echelonro   rp   verify_row_null_space  s
    z0test_echelon_form.<locals>.verify_row_null_spacerM  r   c                    s   g | ]} |d d f qS rr   ro   r   r  ro   rp   r    rx   z%test_echelon_form.<locals>.<listcomp>)	r   r   r   r   r   r   r   r   r   c                    s   g | ]} |d d f qS rr   ro   r   r  ro   rp   r    rx   )	r   r   r   r   r   r   r   r   r   r   r   r   c                    s   g | ]} |d d f qS rr   ro   r   r  ro   rp   r    rx   )	r   r   r   r   r   r   r   r   r   c                    s   g | ]} |d d f qS rr   ro   r   r  ro   rp   r    rx   )	r   r   r   r   r   r   r   r   r   c                    s   g | ]} |d d f qS rr   ro   r   r  ro   rp   r    rx   )r   r   r   r   r   r   c                    s   g | ]} |d d f qS rr   ro   r   r  ro   rp   r  	  rx   )	r~   r|   r#  rq   r4   r   r   rc  r   )rn  ri  rg  r   ro   )r^   rh  rp   test_echelon_form  s    


rj  c               
   C   sR  t ddg } | jdd| ks J t dddg} t dddg}| jdd|jdd  kr`| ksfn J t ddg d}|jddtdgdgdggksJ t ddg d}|jddtg dgksJ t ddg d}|jddtg d	g d
g dgksJ t ddg d}t ddg d}t ddg d}t ddg d}|jdd|jdd  kr|jdd  kr|jdd  kr|ksn J td} td}| jdd| ksJ |jdd|ksJ t g dg dg dg dg}| \}}|tg dg dg dg dgks,J |dks:J t tddtddddgg dg dg dg}|jddtdddtddgdddtd dgdddtd!dgg d"gksJ td#}t dd|ddt||dg}t|jddddt|| d  |tdd  |  dddt|| d  gD ]\}	}
t	|	|
 j
s.J q.d S )$Nr   F)pivotsr   r   r   r   rM  )r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   rb  )	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r  r   )r   r   r   r   r   r)  r   )r   r   r   r   r   r   r  )r   r   r   r   r   r   r   )r   r  r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r   r   r   r   )r   r   r   r  r   ra  rb  rd  i   r     rk  rb   )rq   r  r4   r|   r~   r   r   r   r  r(   r|  )rn  r^   r_   r`   ra   rd   r   Zpivot_offsetsrb   ru   rv   ro   ro   rp   	test_rref  s    *$






(rn  c                  C   s   t d\} }}}tddgddgddgddgg}t| |||g}||tddgddgddgddggtd| | gd| d |d  g| g|ggfksJ d S )Nr  r   r   r   r   r   r   )r   r4   Zrref_rhs)r^   r_   r`   ra   r   r   ro   ro   rp   test_rref_rhsP  s      
ro  c                     s   t g dg dg dg dg dg dg  jddd	d
}  jdd	ddd} jdd	dd}| d	d d f t g dgksJ |d	d d f t g dgksJ |d	d d f t g dgksJ tt fdd tt fdd tt fdd d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r  )r   r   r   r   rQ  r   r   rR  rV  r   r  rW  rO  rP  )r   r   r   rf  )r   r  r   r   c                      s    j ddddS )NrQ  r   r   rR  rL  ro   r   ro   rp   rw   p  rx   z"test_issue_17827.<locals>.<lambda>c                      s    j ddddS )NrO  r   r   rP  rL  ro   rp  ro   rp   rw   q  rx   c                      s    j dddddS )NrV  r   r   r   rW  rL  ro   rp  ro   rp   rw   r  rx   )r4   rM  rQ   r   )r  r   r  ro   rp  rp   test_issue_17827_  s"    	"""rq  c                  C   sj   t ddgtddt  gg} |  dks,J t ddtdd}| dksNJ td}| dksfJ d S )Nr   r   r   r   r   )r4   rb   rE  r   rA   )r   r{   r  ro   ro   rp   	test_rankt  s    rr  c                  C   s   t d\} }}}}}}}}}	}
}t| || |
 ||
 dg||||
 ||
 dg||||
 ||
 dg||||
 ||
 dg||	d| | ||
  d|	 | |	|
  dgg}| dksJ d S )Nr  r   r   r   r   )r   r4   rE  )r  r  r  r  r	  r
  r  r  r  r  r  r  r   ro   ro   rp   test_issue_11434|  s    ,rs  c               	   C   s   t d\} }td|  dddgd|  d|  d ddgdd|  d|  | d dgdd| | dgg}tdddd| d | |    gdddd| | |    gdddd| |   gg d	g}d
}| \}}t|| t|j ksJ ||ksJ d S )Nz
nu, lambdar   r   r   r   r   r   r   rk  r   )r   r4   r  r(   rA   r   )nuZlambr   Zexpected_reducedZexpected_pivotsZreducedrk  ro   ro   rp   test_rank_regression_from_so  s    ru  c                  C   sn   t g dg dg dg dg} | t dt  }| dksBJ |d  dksVJ |d  dksjJ d S )Nr0  r  r  r   r   r   r   )r4   r8   r	   rE  r   ro   ro   rp   test_issue_15872  s
     rv  ([  r  concurrent.futuresr;  collections.abcr   Zsympy.core.addr   Zsympy.core.functionr   r   r   r  r   r   r	   r
   r   r   r   r   Zsympy.core.powerr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   r   r   Z(sympy.functions.elementary.trigonometricr   r   r   Zsympy.integrals.integralsr   Z$sympy.matrices.expressions.transposer   Zsympy.physics.quantum.operatorr   r    r!   Zsympy.polys.polytoolsr"   r#   Zsympy.polys.rootoftoolsr$   Zsympy.printing.strr%   Zsympy.sets.setsr&   r8  r'   r(   Zsympy.simplify.trigsimpr)   Zsympy.matrices.exceptionsr*   r+   r,   Zsympy.matrices.matrixbaser.   Zsympy.matrices.determinantr/   Zsympy.matrices.utilitiesr0   Zsympy.matricesr1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   Z
sympy.corerJ   rK   Z(sympy.functions.special.tensor_functionsrL   Zsympy.utilities.iterablesrM   rN   rO   Zsympy.utilities.exceptionsrP   Zsympy.testing.pytestrQ   rR   rS   rT   rU   rV   Zsympy.assumptionsrX   Zsympy.tensor.arrayrY   Z$sympy.tensor.array.array_derivativesrZ   Zsympy.matrices.expressionsr[   Zsympy.algebrasr\   r  r]   r   r^   r_   r`   ra   rb   rc   rd   re   r   r  rf   rg   Zsympy.matrices.matricesrh   ri   rj   rq   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r   r"  r$  r&  r(  r+  r-  r/  r3  r:  r<  r>  rA  rC  rF  rG  rH  rI  rK  rX  rY  r]  r_  rj  rr  ru  ry  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r'  r(  r)  r*  r-  r/  r1  rI  rJ  rK  rL  rN  rS  rU  rV  rd  ro  rt  rv  rw  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  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r&  r'  r)  r.  r/  r1  r2  r3  r9  r?  r@  rF  rG  rI  rX  ra  re  rj  rn  ro  rq  rr  rs  ru  rv  ro   ro   ro   rp   <module>   s  (h (44,Ga,	R			:	
		
	
 HK

=7(]%
		-%

	$$_A
