U
    -eI3                    @   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-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4m5Z5 d dl6m7Z7 d dl8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZW d dlXmYZY d dlZm[Z[m\Z\ d dl]m^Z^ d dl_m`Z`maZambZb d dlcmdZdmeZe d dlfmgZgmhZhmiZimjZjmkZkmlZlmmZm d dlnmoZo d dlpmqZq d dlrmsZs d dltmuZu d d lvmwZwmxZxmyZymzZzm{Z{m|Z|m}Z}m~Z~ eCeDeAeBfZd!d" Zd#d$ Zd%d& Zd'd( Zd)d* Zd+d, Zd-d. Zd/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ehdCdD ZdEdF ZdGdH ZdIdJ ZdKdL ZdMdN ZdOdP ZeiehdQdR ZdSdT ZdUdV ZdWdX ZdYdZ 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,d{d| Z-d}d~ Z.dd Z/dd Z0dd Z1ekddd Z2dd Z3d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)PolyPurePoly)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SymPyDeprecationWarning)raisesXFAILslowskipskip_under_pyodidewarns_deprecated_sympywarnsQ)Array)MatPow)
Quaternion)abcdxyztc                  C   s   t tD ]\} }|dd}|jdkr:tdd |jD s>t|jdkrVt|jtksZt|j	dkrrt|j	tksvt| d st|
 tttfkstqt| tkstqd S )N      )r`   ra   c                 s   s   | ]}t |tkV  qd S N)typeint.0i rh   c/var/www/html/Darija-Ai-Train/env/lib/python3.8/site-packages/sympy/matrices/tests/test_matrices.py	<genexpr>6   s     ztest_args.<locals>.<genexpr>)	enumerateclassesr;   shapeallAssertionErrorrowsrc   rd   colsflatlisttuplerD   todokdict)nclsmrh   rh   ri   	test_args2   s    "rz   c               
   C   s   t tfD ]8} | dd}t  |j}W 5 Q R X || kstqttfD ]8} | dd}t  |j	}W 5 Q R X ||
 ksJtqJd S Nr`   ra   )r.   r,   r;   rQ   Z_matrr   ro   r/   r-   Z_smatru   )rx   ry   matZsmatrh   rh   ri   test_deprecated_mat_smat?   s    r}   c                  C   s8   t ddttg} | t t ddtt tt gks4td S N   ra   )r.   r\   r]   r^   ro   )vrh   rh   ri   test_divisionL   s    r   c                      s   t dddgtttgdt dtt gg    t dddgdt dt dt gdt ddt t ggksltt ddddgtt fdd	 d S )
Nr   ra   r`   i      ic                      s     S rb   rh   rh   ry   rw   rh   ri   <lambda>U       ztest_sum.<locals>.<lambda>)r.   r\   r]   r^   ro   rL   r%   rh   rh   r   ri   test_sumQ   s    (Dr   c                  C   s8   t dddtg} t dddttg}t| |ks4td S )Nr   ra   r`   )r.   r\   r   absro   r   rh   rh   ri   test_absW   s    r   c                  C   sH   t d} t d}| | | |  kr>t ddgddggksDn td S )N)r   ra   r`   r   r   )r`   r   ra   r   r   r   )r.   addro   rX   rY   rh   rh   ri   test_addition\   s    r   c               
   C   sz  t tfD ]} | ddtd}||d d d d f ks:t|dd d f t dddddgks`t|d d df t dddgkst|ddgd d f t dddgdddggkst|ddgdf |ddgdgf kst|dddgf |dgddgf kst|d d ddgf t ddgddgd	dggks2t|d
 dksDt|ddd d f t dddgdddggksvt|d d ddf t ddgddgd	dggkst|d d ddf |ddgdf kst|dd d df |dddgf kst| ddtd}|dddddgd d f t dddgd	ddgdddgd	ddgdddggksZt|d d dddddgf t dddddgdddddgd	ddddggkstqtd}d|d< d|d< d|d< |ddgdgt dgdggkst|ddgdddgt dddgdddggks$t|ddddgddddgt ddddgddddgddddgddddggksvtd S )Nr`   	   r   r         r   ra   r   r   r      r   r   r   ra   r   )r.   r/   rangero   r;   extract)MrX   rh   rh   ri   test_fancy_index_matrixj   sZ    &"0&&424((




r   c                     sV  t d t d  } | d dks(t| d dks8t| d dksHt| d	 dksXt| d
 dksht| d dksxtztd W n tk
r   Y nbX | d dkst| d dkst| d dkst| d	 dkst| d
 dkst| d dkstt | }| | kst|d dks*t|d dks<t|d dksNt|d	 dks`t|d
 dksrt|d dksttt fdd td } t	| t st| d t
kst| d dt
 kst| d dt
 kst| d	 dkstt
 }| |kstd } t	| t s2t| d dksDt| d dksVt| d dksht| d	 dksztztd W n tk
r   Y nZX t	| t st| d dkst| d dkst| d dkst| d	 dkstt tdgdtgg}|d |kstt ttgddgg}|d t ttgttggksRtd S )N)r   r   r   r   r   r   r   r   ra   r   r   r   r   r   r      ra   r   r   z	c = a @ br   c                      s
   t  S rb   )r4   rh   r   rh   ri   r      r   z%test_multiplication.<locals>.<lambda>r\   r`   r   
      z	c = 5 @ b)r.   ro   evalSyntaxErrorr4   Zmultiply_elementwiserL   r%   r   
isinstancer\   r   r   )rZ   hc2r   rh   r   ri   test_multiplication   sn    
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sft d d d  ddddgksttdddgdddgdddgg  d d d  dddddddddg	kst d tdkst d  ksttdggd d dd ksttdd  tdks0ttddgddggtd td!d"gd#d$ggksfttd%d&gd'd(gg  tj d d  dddd!gksttddgd)dgg  tj d  ksttddgddggtj tddgtjdggks ttddgddggd* tddgd*dggks2tdd+l	m
 tdtgddgg tdt gddggkstttttgdtgg tt ttd    gdt ggksttt td   t d  t   dtd   gdt td   gddt ggs,tttddgdtdgddtgg tt td   dgdt dgddt ggksttddgdd!gg  td dksttdgg  d" td,gg  kr td"  kr d"ksn ttdddddgdddddgdddddgdddddgdddddggt tfd-d t td.d  tdddgdddgdddgg  d/ tdddgdddgdddggkstt t fd0d t t fd1d td	dgddgg  d/ td2d3gd4d5ggksttdddgdddgdddgg  d/ tdddgdddgdddggkslttdddgdddgdddgg  d/ tdddgdddgdddggksttd6d7d8t  tsttd6d7d7d9t t fd:d td6d7d7d;  ttdtdtd td d gdtddtd gdddggksjt d  tdddgdddgdddggkstt t fd<d tdddgdddgdddgg  d= td>d?d@gdAdBdCgdDdEdFggkst d=  d ksttdddgd)ddgdddgg td6  d  d ks`tt tfdGd   d  ksttdddgdddgdddgg td6d7d7dH   ksttd6d7d7d;  td d d kst  dtdks t  dtdks>ttdddgdddgdddgg  dI tdJdJdJksxt t tdt dt dt ksttdddgdddgdddgg t t fdKd t t fdLd ttjtjgtjtjgg  tj  k	sttddgddgg  tj ttjtjgdtj dtj ggk	sZtd S )MNc                   S   s   t dd S Nr   ra   r.   rh   rh   rh   ri   r      r   ztest_power.<locals>.<lambda>ra   r`   r   r   r   ir      3   ii  i  i,*  i7  r   r      i"  i     i  i  ip  i  i  i  r   d   r   i r   r   r      !      0   9   g      ?rw   i   c                      s     tdS Nr   )_matrix_pow_by_jordan_blocksr   rh   ry   rh   ri   r     r   c                   S   s   t ddgddggtdS )Nr   r`   )r.   r   r   rh   rh   rh   ri   r     r         $@c                      s    d S N @rh   rh   Arh   ri   r     r   c                      s    t dd S r{   r   rh   r   rh   ri   r     r   ihiO<iv0irw   T)integer)r   negativec                      s     S rb   rh   rh   )r   rw   rh   ri   r     r   )r   Znonnegativec                      s    t dd S r{   r   rh   r   rh   ri   r   %  r   g      @   H   Y   i#        i<  i  iI  c                      s     d S )N)subsdoitrh   )Anrw   rh   ri   r   -  r   )r   positiver   gd%%@c                      s    d S r   rh   rh   r   rh   ri   r   <  r   c                      s    t  S rb   r	   rh   r   rh   ri   r   =  r   )rL   r'   r   r.   ro   r2   r
   r   Half	sympy.abcrw   rX   rY   r   Z_eval_pow_by_recursionr&   
ValueErrorr   r   rV   rF   r   r   r1   r;   r	   )Rrh   )r   r   ry   rw   ri   
test_power   s    @  *"6$626J<$0D ." . .*2 .  & & r   c               	   C   s   t dt dt gdt dt gg} td~ |   t tdt td d tdt  td d gtdt  td d tdt td d ggkstW 5 Q R X d S )Nr   Tra   )r.   r\   r?   r   r   ro   r   rh   rh   ri   $test_issue_17247_expression_blowup_1D  s    $
00r   c               	   C   s\   t dt dt gdt dt gg} td& |  \}}|| |  sNtW 5 Q R X d S Nr   T)r.   r\   r?   jordan_forminvro   r   PJrh   rh   ri   $test_issue_17247_expression_blowup_2K  s    $
r   c               	   C   s   t dt dt gdt dt gg} tdV | d t dtd  d ddtd   gddtd   dtd  d ggks~tW 5 Q R X d S )Nr   Tr   l                )r.   r\   r?   ro   r   rh   rh   ri   $test_issue_17247_expression_blowup_3Q  s    $
r   c               	   C   s<   t td} td | d t tdks.tW 5 Q R X d S )Na1  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128]]Tr   a  [
            [     7369525394972778926719607798014571861/604462909807314587353088 - 229284202061790301477392339912557559*I/151115727451828646838272,   -19704281515163975949388435612632058035/1208925819614629174706176 + 14319858347987648723768698170712102887*I/302231454903657293676544,      -3623281909451783042932142262164941211/604462909807314587353088 - 6039240602494288615094338643452320495*I/604462909807314587353088,    109260497799140408739847239685705357695/2417851639229258349412352 - 7427566006564572463236368211555511431*I/2417851639229258349412352, -16095803767674394244695716092817006641/2417851639229258349412352 + 10336681897356760057393429626719177583*I/1208925819614629174706176,    -42207883340488041844332828574359769743/2417851639229258349412352 - 182332262671671273188016400290188468499*I/4835703278458516698824704],
            [50566491050825573392726324995779608259/1208925819614629174706176 - 90047007594468146222002432884052362145*I/2417851639229258349412352,  74273703462900000967697427843983822011/1208925819614629174706176 + 265947522682943571171988741842776095421*I/1208925819614629174706176, -116900341394390200556829767923360888429/2417851639229258349412352 - 53153263356679268823910621474478756845*I/2417851639229258349412352, 195407378023867871243426523048612490249/1208925819614629174706176 - 1242417915995360200584837585002906728929*I/9671406556917033397649408,   -863597594389821970177319682495878193/302231454903657293676544 + 476936100741548328800725360758734300481*I/9671406556917033397649408, -3154451590535653853562472176601754835575/19342813113834066795298816 - 232909875490506237386836489998407329215*I/2417851639229258349412352],
            [   -1715444997702484578716037230949868543/302231454903657293676544 + 5009695651321306866158517287924120777*I/302231454903657293676544,     -30551582497996879620371947949342101301/604462909807314587353088 - 7632518367986526187139161303331519629*I/151115727451828646838272,           312680739924495153190604170938220575/18889465931478580854784 - 108664334509328818765959789219208459*I/75557863725914323419136,    -14693696966703036206178521686918865509/604462909807314587353088 + 72345386220900843930147151999899692401*I/1208925819614629174706176,  -8218872496728882299722894680635296519/1208925819614629174706176 - 16776782833358893712645864791807664983*I/1208925819614629174706176,      143237839169380078671242929143670635137/2417851639229258349412352 + 2883817094806115974748882735218469447*I/2417851639229258349412352],
            [   3087979417831061365023111800749855987/151115727451828646838272 + 34441942370802869368851419102423997089*I/604462909807314587353088, -148309181940158040917731426845476175667/604462909807314587353088 - 263987151804109387844966835369350904919*I/9671406556917033397649408,   50259518594816377378747711930008883165/1208925819614629174706176 - 95713974916869240305450001443767979653*I/2417851639229258349412352,  153466447023875527996457943521467271119/2417851639229258349412352 + 517285524891117105834922278517084871349*I/2417851639229258349412352,  -29184653615412989036678939366291205575/604462909807314587353088 - 27551322282526322041080173287022121083*I/1208925819614629174706176,   196404220110085511863671393922447671649/1208925819614629174706176 - 1204712019400186021982272049902206202145*I/9671406556917033397649408],
            [     -2632581805949645784625606590600098779/151115727451828646838272 - 589957435912868015140272627522612771*I/37778931862957161709568,     26727850893953715274702844733506310247/302231454903657293676544 - 10825791956782128799168209600694020481*I/302231454903657293676544,      -1036348763702366164044671908440791295/151115727451828646838272 + 3188624571414467767868303105288107375*I/151115727451828646838272,     -36814959939970644875593411585393242449/604462909807314587353088 - 18457555789119782404850043842902832647*I/302231454903657293676544,      12454491297984637815063964572803058647/604462909807314587353088 - 340489532842249733975074349495329171*I/302231454903657293676544,      -19547211751145597258386735573258916681/604462909807314587353088 + 87299583775782199663414539883938008933*I/1208925819614629174706176],
            [  -40281994229560039213253423262678393183/604462909807314587353088 - 2939986850065527327299273003299736641*I/604462909807314587353088, 331940684638052085845743020267462794181/2417851639229258349412352 - 284574901963624403933361315517248458969*I/1208925819614629174706176,      6453843623051745485064693628073010961/302231454903657293676544 + 36062454107479732681350914931391590957*I/604462909807314587353088,  -147665869053634695632880753646441962067/604462909807314587353088 - 305987938660447291246597544085345123927*I/9671406556917033397649408,  107821369195275772166593879711259469423/2417851639229258349412352 - 11645185518211204108659001435013326687*I/302231454903657293676544,     64121228424717666402009446088588091619/1208925819614629174706176 + 265557133337095047883844369272389762133*I/1208925819614629174706176]])r.   r   r?   ro   r   rh   rh   ri   $test_issue_17247_expression_blowup_4X  s    
r   c               	   C   sl   t dddd } tdJ | dttd ddt  td   dt td	   td
dks^tW 5 Q R X d S )Nr   c                 S   s   dd| |  t   S Nr   r   r   rg   jrh   rh   ri   r     r   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>Tr\   r   $   r   ZEXdomain)r.   r?   charpolyr   r\   r	   ro   r   rh   rh   ri   $test_issue_17247_expression_blowup_5  s    
r   c               	   C   sD   t dddd tdD } td | ddks6tW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rh   r\   re   rh   rh   ri   
<listcomp>  s     z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>@   TZbareissr   r.   r   r?   detro   r   rh   rh   ri   $test_issue_17247_expression_blowup_6  s    
r   c               	   C   s:   t dddd } td | ddks,tW 5 Q R X d S )Nr   c                 S   s   dd| |  t   S r   r   r   rh   rh   ri   r     r   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>T	berkowitzr   )r.   r?   r   ro   r   rh   rh   ri   $test_issue_17247_expression_blowup_7  s    
r   c               	   C   sD   t dddd tdD } td | ddks6tW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rh   r   re   rh   rh   ri   r     s     z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>r   TZlur   r   r   rh   rh   ri   $test_issue_17247_expression_blowup_8  s    
r   c                  C   s   t dddd tdD } td |  t dddd	d
dddgddddddddgddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggdfkstW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rh   r   re   rh   rh   ri   r     s     z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>r   Tr   r   r   r   r   r   ra   r`   r   r   r   r   r   )r.   r   r?   rrefro   r   rh   rh   ri   $test_issue_17247_expression_blowup_9  s    
r   c               	   C   s<   t dddd } td | dddks.tW 5 Q R X d S )Nr   c                 S   s   dd| |  t   S r   r   r   rh   rh   ri   r     r   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>Tr   )r.   r?   Zcofactorro   r   rh   rh   ri   %test_issue_17247_expression_blowup_10  s    
r   c               	   C   sF   t dddd } td$ |  t dddgd ks8tW 5 Q R X d S )Nr   c                 S   s   dd| |  t   S r   r   r   rh   rh   ri   r     r   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>Tr   r   )r.   r?   Zcofactor_matrixro   r   rh   rh   ri   %test_issue_17247_expression_blowup_11  s    
r   c               	   C   sH   t dddd } td& |  dddt dddiks:tW 5 Q R X d S )Nr   c                 S   s   dd| |  t   S r   r   r   rh   rh   ri   r     r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Tr   r   r   )r.   r?   Z	eigenvalsr	   ro   r   rh   rh   ri   %test_issue_17247_expression_blowup_12  s    
r   c               	   C   s  t ddt td dt gdt td dtd gddt td dt gdddt dgg} |  }|d ddt ddddggfkst|d d ttdtd   d kst|d d dkst|d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggkst|d d ttdtd   d kst|d d dkst|d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggkstd S )	Nr   r   ra   r   FT)deepZnumerr   )r.   r\   Z
eigenvectsro   r   r   )r   Zevrh   rh   ri   %test_issue_17247_expression_blowup_13  s0    $("P"*"P"r   c                  C   s"  t dddt dt gd dt dt gd  d } td |  t td dt td dt td dt td dt gddt ddt ddt ddt gddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggkstW 5 Q R X d S Nr   r   r   Tr   )r.   r\   r?   Zechelon_formro   r   rh   rh   ri   %test_issue_17247_expression_blowup_14  s    4
2"r   c                  C   s   t dddt dt gd dt dt gd  d } tdv |  t td dt td dt td dt td dt ggt ddt ddt ddt ddt gggkstW 5 Q R X d S r   )r.   r\   r?   Zrowspacero   r   rh   rh   ri   %test_issue_17247_expression_blowup_15  s    4
r   c                  C   s   t dddt dt gd dt dt gd  d } td |  t td gdt gtd gdt gtd gdt gtd gdt ggt dt gtd gdt gtd gdt gtd gdt gtd gggkstW 5 Q R X d S )Nr   r   r   T)r.   r\   r?   Zcolumnspacero   r   rh   rh   ri   %test_issue_17247_expression_blowup_16  s    4
r   c                  C   s(  t dddd tdD } td |  t dgdgdgdgdgdgdgdggt d	gd
gdgdgdgdgdgdggt dgdgdgdgdgdgdgdggt dgdgdgdgdgdgdgdggt dgdgdgdgdgdgdgdggt dgdgdgdgdgdgdgdgggkstW 5 Q R X d S )Nr   c                 S   s   g | ]}t | qS rh   r   re   rh   rh   ri   r     s     z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>r   Tr   r   r   ra   r   r`   r   r   r   r   r   r   )r.   r   r?   Z	nullspacero   r   rh   rh   ri   %test_issue_17247_expression_blowup_17  s    
&&&&&&r   c               	   C   sX   t dddt dt gd dt dt gd  d } td |  rJtW 5 Q R X d S )Nr   r   r`   T)r.   r\   r?   is_nilpotentro   r   rh   rh   ri   %test_issue_17247_expression_blowup_18  s    4
r   c               	   C   s0   t td} td |  r"tW 5 Q R X d S )Nay  [
        [             -3/4,                     0,         1/4 + I/2,                     0],
        [                0, -177/128 - 1369*I/128,                 0, -2063/256 + 541*I/128],
        [          1/2 - I,                     0,                 0,                     0],
        [                0,                     0,                 0, -177/128 - 1369*I/128]]T)r.   r   r?   is_diagonalizablero   r   rh   rh   ri   %test_issue_17247_expression_blowup_19  s    
r  c                  C   s   t td dt ddgdt td dtd gddt td dgdddtd gg} td |  t dddtd td  gddddgddddgddddggt ddddgddt ddgddtd dgdddtd ggfkstW 5 Q R X d S )Nr   r   Tr   ra   )r.   r\   r?   diagonalizero   r   rh   rh   ri   %test_issue_17247_expression_blowup_20   s(    




r  c               	   C   s@   t td} td" | jddt tdks2tW 5 Q R X d S )N  [
        [             -3/4,       45/32 - 37*I/16,                   0,                     0],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,                   0, -2063/256 + 541*I/128],
        [                0,         9/4 + 55*I/16, 2473/256 + 137*I/64,                     0],
        [                0,                     0,                   0, -177/128 - 1369*I/128]]T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]]r.   r   r?   r   ro   r   rh   rh   ri   %test_issue_17247_expression_blowup_21  s    
r  c               	   C   s@   t td} td" | jddt tdks2tW 5 Q R X d S )Nr  TLUr  r	  r
  r   rh   rh   ri   %test_issue_17247_expression_blowup_22  s    
r  c               	   C   sD   t td} td& | jdd t tdks6tW 5 Q R X d S )Nr  TADJr  r	  )r.   r   r?   r   r   ro   r   rh   rh   ri   %test_issue_17247_expression_blowup_23,  s    
r  c               	   C   s@   t td} td" | jddttdks2tW 5 Q R X d S )Nr  TCHr  r	  r/   r   r?   r   r.   ro   r   rh   rh   ri   %test_issue_17247_expression_blowup_249  s    
r  c               	   C   s@   t td} td" | jddttdks2tW 5 Q R X d S )Nr  TLDLr  r	  r  r   rh   rh   ri   %test_issue_17247_expression_blowup_25F  s    
r  c               	   C   s4   t td} td |  dks&tW 5 Q R X d S )Na  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64,         -9/32 - I/16,      183/256 - 97*I/128],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512, -219/128 + 115*I/256, 6301/4096 - 6609*I/1024],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,         1/4 - 5*I/16,        65/128 + 87*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,     85/256 - 33*I/16,    805/128 + 2415*I/512],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,            1/4 + I/2,        -129/64 - 9*I/64],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,     125/64 + 87*I/64,   -2063/256 + 541*I/128],
        [               -2,         17/4 - 13*I/2,             1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,                 -3/4,         45/32 - 37*I/16],
        [     1/4 + 13*I/4,    -825/64 - 147*I/32,          21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64,    -149/64 + 49*I/32,   -177/128 - 1369*I/128]]Tr   r.   r   r?   rankro   r   rh   rh   ri   %test_issue_17247_expression_blowup_26S  s    	
r  c               	   C   s   t ddt td dt gdt td dtd gddt td dt gdddt dgg} tdB |  \}}| t td kst|t tdkstW 5 Q R X d S )Nr   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]])r.   r\   r?   r   r   r   ro   r   rh   rh   ri   %test_issue_17247_expression_blowup_27`  s    
r  c               	   C   s8   t td} td |  tdks*tW 5 Q R X d S )Nr  Ta  [
            sqrt(14609315/131072 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2)])r.   r   r?   Zsingular_valuesro   r   rh   rh   ri   %test_issue_17247_expression_blowup_28s  s    
r  c               	   C   s4   t td} td |  dks&tW 5 Q R X d S )Na	  [
        [1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I,15/128-3/32*I,19/256+551/1024*I],
        [21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I,129/256-549/512*I,42533/16384+29103/8192*I],
        [-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I],
        [1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I],
        [-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I],
        [1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I],
        [-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I],
        [-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I],
        [0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I],
        [1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I],
        [0,-4*I,0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I],
        [0,1/4+1/2*I,1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I]]Tr   r  r   rh   rh   ri   test_issue_16823  s    
r  c                  C   s  t dddddddddg	dtd dtd dtd td d dddddg	ddtd  ddtd  ddtd  ddtd  dddddg	dtd d dd	td  dd	td  dd	td  ddd
dd	g	d
dtd  dtd d
 dtd d
 d
dtd  d
dd
ddg	dd	td  dd	td  dtd d dd	td  d
dddd	g	ddtd  ddtd  ddtd  ddtd  dddddg	dtd td d dtd dtd dddddg	g} td |  t ddddddddtdd g	ddddddddtd d g	ddddddddtdd g	ddddddddtd d g	dddddddddg	ddddddddtd d g	dddddddddg	ddddddddtd d g	gdfkstW 5 Q R X d S )Nr   r   ra   r   r   r   r   r   r`   r   r   r   T)r   r   ra   r`   r   r   r   r   )r.   r   r?   r   r   ro   r   rh   rh   ri   test_issue_18531  s.    6DDDDD6

r  c            
      C   s  t tdd  t tdd  t tdd  t t dtdd< W 5 Q R X t tg   kr|tg g  kr|tddg ksn tt * td	gd
gg d	gd
ggkstW 5 Q R X t . td	gd
ggj d	ggd
ggkstW 5 Q R X tdgg} t  tj	| d< W 5 Q R X tt
dgddgg}|}|j|jksDt|jdksTt|d d  t
dddgksrttddt
dddg}|}|j|jkst|jdkst|d d  t
dddgkst||kstt||ksttddtd	d}td	dtdd}t||g}|jdks*t|jdks:t|d d  d	ddddddddg	ksbtttdtdks|ttttdttdkstt|| ksttt|t| kst|t|k	sttddtddd gtddd tddd gg}t|} | td	d	dddgd	d	dddgd	d	dddgdddddgdddddggksnt|  |kstt|dd |ksttddd}td|g}t|td	d	gd	d	g|d |d g|d |d ggkstt * t|dd dd |D kstW 5 Q R X ttdtdgttdgksNtt tdd  t tdd  td	dgddgg} t| dg}	|	td	dgddgddggkstd S )Nc                   S   s   t ddtdS )Nr      )r.   r   rh   rh   rh   ri   r     r   ztest_creation.<locals>.<lambda>c                   S   s   t ddg S )Nr   r   r   rh   rh   rh   ri   r     r   c                   S   s   t dd S r   r   rh   rh   rh   ri   r     r   r   r   r`   r   r   )ra   r   ra   r   r   r   r   r   r   Fevaluater   r   r   r   c                 S   s   g | ]
}|gqS rh   rh   re   rh   rh   ri   r     s     z!test_creation.<locals>.<listcomp>c                   S   s   t tdtddgS )Nra   r   r`   r.   r5   rh   rh   rh   ri   r     r   c                   S   s   t tdtddgS )Nra   r`   r   r   rh   rh   rh   ri   r     r   )r   r   )rL   r   
IndexErrorr.   ro   rQ   tolistTr   ZEmptySetr\   rq   rp   r   r2   r,   as_immutable
as_mutabler5   r>   )
r   rX   ry   rY   Zc23Zc13rZ   datr   ZM2rh   rh   ri   test_creation  s~    
8.2("4.(r'  c                   C   s   t dtddtddd tddd tddd tddd tddd tddd t ddddddgddddddgddddddgddddddggkstd S )Nr`   ra   r   r   r   r   r   )r.   Z	irregularr5   ro   rh   rh   rh   ri   test_irregular_block  s    &   r(  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sPt	d S )Nra   r`   )
r   Oner   r\   r]   Zeror^   r.   r"  ro   )lstry   rh   rh   ri   test_tolist  s    8r,  c                   C   s`   t dd t ddkstt dd tt ddks<tt dd tt ddks\td S Nr   r`   )r;   r%  ro   r$  r,   rh   rh   rh   ri   test_as_mutable
  s     r.  c                  C   s*  t d} | d dd df t dks(t| ddddf tdksHttdddd }|dd d f tdddksxt|dddf tddd	ksttddddgdd
ddgddddgddddgg}|d d df tddddddgkst|dd d d f tddddgddddggks&td S )Nr   r`   ra   r   c                 S   s   | | S rb   rh   r   rh   rh   ri   r     r   ztest_slicing.<locals>.<lambda>r   r   r   ra   ra   r`   r   r   r   r   r   r      r         r   r   r   )r2   ro   r;   r.   )m0m1m2rh   rh   ri   test_slicing  s        0(r7  c                  C   s   t d} td| ddddf< | tdks0ttd| d dd df< | tdksXttddd| d d df< | tdkstt d| d d d d f< | t dkstddd	d
g| d d d d f< | tdkstddg| d ddf< | tdkstd S )Nr   ra   )r   r   r   r   r8  )r   r   r   r   )r   r   r   r   r   r   ra   r`   r   r   ))r   r   r   r   )ra   r   r   r   )r`   r   r   r   )r   r   r   r   r   r   r   r   r   r   r1  r   r2  r3  r      r9  r:  r;  r<  ))r   ra   r`   r   )r   r   r   r   r;  r<  )r;   r2   r.   ro   r   rh   rh   ri   test_submatrix_assignment  s    r?  c                
      s   t dddd   dddgddgt dddddddd	gksBt ddgdddgt dddddddd
gkstt tdtd ksttt fdd tt fdd d S )Nr   r`   c                 S   s   | d | S Nr`   rh   r   rh   rh   ri   r   ;  r   ztest_extract.<locals>.<lambda>r   r   ra   r   r   r1  c                      s     dgdgS )Nr   r   r   rh   r   rh   ri   r   ?  r   c                      s     dgdgS r-  rA  rh   r   rh   ri   r   @  r   )r.   r   ro   r   rL   r!  rh   rh   r   ri   test_extract:  s    22rB  c                  C   sh   t d} | ddtdddks$ttdddd }|ddtdksLt|d	d
tdksdtd S )Nr`   r   r   )	r   r   r   r   r   r   r   r   r   r   c                 S   s   | | S rb   rh   r   rh   rh   ri   r   F  r   ztest_reshape.<locals>.<lambda>)r/  )r`   r   ra   )r`   r   ra   )r`   r   r   ra   r   ))r   r   ra   r`   r   ra   )r`   r   ra   r`   r   r   )r2   reshaper.   ro   r4  r5  rh   rh   ri   test_reshapeC  s     rE  c                  C   sD   t d} | dd t dd ks&t| dd tdks@td S )Nr`   c                 S   s   d|  S Nra   rh   r   rh   rh   ri   r   N  r   z test_applyfunc.<locals>.<lambda>ra   c                 S   s   dS Nr   rh   r   rh   rh   ri   r   O  r   )r2   	applyfuncro   r;   )r4  rh   rh   ri   test_applyfuncL  s    rI  c                  C   s,  t ttt  dgtt t t ttttt    gg} |  }|t tt td  dgttd  ttd   tt ttd   td  ggksttddd}t tt| gjddt t|tt	|  gkstt dddgddd	gdddgg t ddt
ddgddd	gdddggks(td S )
Nra   r`   rX   Treal)complexr   r   r   )r.   r\   r]   r   ro   r   r   r	   r   r   r   )r4  r5  rX   rh   rh   ri   test_expandR  s    8F
$rM  c                  C   sB  t ttd ttd gttd ttd  ttd ttd  gg} | tttt@ }|t td ttgtd tt td tt ggkst| t	tt	t@ }|t td tgttd  td t ggkst| t
tt
t@ }|t td t gt td  td  t ggks>td S rF  )r.   r   r\   r   r]   ZrefinerT   rK  ro   r   r   rD  rh   rh   ri   test_refined  s    .<0rN  c                  C   s6  t dd} t dddd} | t ddddks.tt dddd} t dddd} | t ddddks`t|  }|  || ks|ttd}| t dd|dkstd	D ],}d
D ]"}t |d||d} | | jkstqqt dddd} d}t| jd D ]4}t| jd D ] }| ||f dkr |d7 }q q|dks2td S )Nr`   )seedr   r      T)rO  	symmetric)rQ  prng)r   r1  )r   F      )rQ  percentrR  r   r   rS  )minrU  rT  )	r6   ro   copyr#   randomRandomr#  r   rm   )r   r   rngsizerU  Z
zero_countrg   r   rh   rh   ri   test_randomp  s,    

r\  c               2      s
  t d} |  t dkst| jddt dks4t| jddt dksLt| jddt dksdt| jddt dks|t| jddt dksttdd	d
gd	ddgdd	dgg} |  }| | t d	kst| jdd|kst| jdd|kst| jdd|kst| jdd|ks$t| jdd|ks:ttdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgg}|jdd| t |jd ksztt  dddgdddgdddggt fddd D stt  dddgdddgdddggt fddd D std S )Nr   r  r  r  r  r  ZQRra   r`   r   r   r   r   r   ZBLOCKr   1      r   G   ^   ;      A   c                 3   s    | ]}t | kV  qd S rb   rc   r   rf   srx   ry   rh   ri   rj     s     ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   s    | ]}t | kV  qd S rb   rd  re  rg  rh   ri   rj     s     )	r2   r   ro   r.   rm   r,   rn   splitr-   )r   ZAinvZAArh   rg  ri   test_inverse  sr    
6444444444444444444444444$
"
ri  c                     s  t ddddg tt fdd t ddddddg tt fdd t ddddddg t ddddddg}  d| kstt ddddddg  d kstt ddddddd	d
dddg	 tt fdd t ddd	dddd
ddddg	 t ddd
dddd	d
d	d
dg	}  d| ks(tt dddd
ddddddd	g	 t dddddddd	dd	dg	}  d
| ksxtt dddd
dddd	ddd	g	 t ddd
ddd
d
ddd
dg	}  d| kstd S )Nra   r   r   c                      s
     dS rF  inv_modrh   r   rh   ri   r     r   z)test_matrix_inverse_mod.<locals>.<lambda>c                      s
     dS rF  rj  rh   r   rh   ri   r     r   r`   r   r   r   r   r   r   c                      s
     dS Nr   rj  rh   r   rh   ri   r     r   r   r   )r.   rL   r'   r   rk  ro   )ZAirh   r   ri   test_matrix_inverse_mod  s(    rm  c                  C   sB  t ddtd t dtd  tt  g} ttg}| |t dt t td gtdt t ggksftt ddttd td  g} | |t ddgdt td  td d td  ggksttd t }ttg}t||t dt dt gdt dggksttd td  }t||t dtd  dt td  gdt td  dtd  t ggksdttttd   }td dtd   }t ddt gdt dt gg}|t|t ttgkst|t|t ttgjkstt|ttf|gt ddtd  dt gdtd  dt dt gdt dt dggks>td S )Nr   ra   r   r`   r   r   )r.   r\   r]   jacobianro   r3   r^   r#  )LZsymsfgansrh   rh   ri   test_jacobian_hessian  s0    (6>0>
rs  c                  C   s8  t ttttgtttd ttd  ks2tt tttdt gttdt ks\tt tttgtttttt  kstt dttd gtdkstdtt tt t dtt tt td   dtt tt t  tttt td   tttt td   } t tttttd gt | ksHtt tttttd gtdd | ksvttd  ttd  td ttd   dt ttd   dt ttd   }t tttttd gt |kstt tttttd gtdd |ks tt g tdks4td S )Nra   r`   r   r   r   r   r  )r:   r   r\   r   ro   r   r   )Zw1Zw2rh   rh   ri   test_wronskian  s&    2**J*"
R*"
rt  c                  C   sv  t dtgtdggtdt ddgddggks4tt tdgtt dggtdgtdggt ddgddggksvtt tdgtt dggtdftdfgt ddgddggkstt tdgtt dggtdtdit ddgddggkstt tt gjttd ttd idd	t td td  gks:ttD ]2} t dd
gd
dgg| dddks>tq>d S )Nr   r   r   ra   r   r   r   T)Zsimultaneousr   )r.   r\   r   ro   r]   rl   r2   rx   rh   rh   ri   	test_subs  s    4(($&
rv  c                  C   s   t dtgtdggtdit ddgddggks6tt tdgtt dggtdtdit ddgddggkstttD ]0} t ddgddgg| dddiksxtqxd S )	Nr   r   r   ra   r   r   r   r   )r.   r\   Zxreplacero   r]   rl   r2   ru  rh   rh   ri   test_xreplace  s    $rw  c               
   C   s&  t d} td}tdt dt  ttt  t g|tt|t  |t dd|  t| t |    t gg}|  |ttt tt  dt gdt dddtt|    t|    ggkstdt d }t|gg}|  |t|ggkst|jt	d |t|jt	dggks"td S )Nrw   rp  r   ra   )ratio)
r   r   r.   r\   r]   r   r   r#   ro   r   )rw   rp  r   eqrh   rh   ri   test_simplify"  s     :&rz  c                  C   s   t ddddddddd	d
g
ddddddddd	d
g
g} | jt ddgddgddgddgddgddgddgddgd	d	gd
d
gg
kst| jj| kst| j|  kstd S )Nr   ra   r`   r   r   r   r   r   r   r   )r.   r#  ro   Z	transposer   rh   rh   ri   test_transpose3  s     
r{  c                  C   s   t dtdgdddgg} | jt ddgtdgddggks<t| jt dt dgdddggks`t| j|  ksrt| j| jjkst| jt ddgt dgddggkstd S )Nr   r   r   ra   )r.   r	   r#  ro   C	conjugateHr   rh   rh   ri   test_conjugateD  s     
r  c               	   C   s   t tdd  tdtttgddttgdddtgddddgg} | jtddddgt dddgt t ddgt t tdggkstd S )Nc                   S   s
   t djS r@  )r2   Drh   rh   rh   ri   r   W  r   z!test_conj_dirac.<locals>.<lambda>r   r   r   )rL   AttributeErrorr.   r	   r  ro   r   rh   rh   ri   test_conj_diracV  s    


r  c                  C   s4   t dddgdddgdddgg} |  dks0td S )Nr   r   r   r   r3  )r.   tracero   r   rh   rh   ri   
test_traced  s
    
r  c                  C   s*   t tddgdtdgg} | jdks&td S )Nr   r0  )r.   r\   r]   rm   ro   r   rh   rh   ri   
test_shapek  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sLt| ddd  | t td ddgdt td dggkst| dt td ddggkst| d}d|d< | d	 td kst| dd d
f }d|d< | d	 td kst| d}|t td dt gks$td|d< | d	 td ksBt| d d df }d|d< | d	 td ksptd S )Nr   r   c                 S   s   | | d S Nr   rh   )rr   rh   rh   ri   r   t  r   z!test_col_row_op.<locals>.<lambda>ra   r`   c                 S   s   | t |  S rb   )r]   )rZ   r   rh   rh   ri   r   x  r   *   r   r   )r.   r\   r]   Zrow_opro   Zcol_oprowcol)r   r1c1rh   rh   ri   test_col_row_opq  s2    
"

r  c                  C   s   t d d D ]} | d}|dddd  || dddgdddgdddggksTt| dd }d|d< |ddd	d  | || dddgd
ddgdddggkstqd S )Nra   r`   r   r   c                 S   s   | d|  S rF  rh   r   urh   rh   ri   r     r   z!test_zip_row_op.<locals>.<lambda>r   r   c                 S   s   | d|  S rF  rh   r  rh   rh   ri   r     r   r   )rl   r2   Z
zip_row_opro   )rx   r   rh   rh   ri   test_zip_row_op  s    
 r  c                  C   sj   t dddg} t dddg}t dddg}| dks6t| dksBt| dksNt| |ksZt| |ksftd S )Nr   ra   r`   rh   )r   r.   ro   )ry   rX   rY   rh   rh   ri   test_issue_3950  s    r  c                  C   s  G dd d} G dd d}|  }| }t dddg}|| dksFtd||< |d dks^tt dddgd	dd
gg}|||f d
kst|d|f d
kst||df d
kstd	|||f< |d d	kstd
|d|f< |d d
kstd||df< |d dkstd S )Nc                   @   s   e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index1c                 S   s   dS r  rh   selfrh   rh   ri   	__index__  s    z)test_issue_3981.<locals>.Index1.__index__N__name__
__module____qualname__r  rh   rh   rh   ri   Index1  s   r  c                   @   s   e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index2c                 S   s   dS rF  rh   r  rh   rh   ri   r    s    z)test_issue_3981.<locals>.Index2.__index__Nr  rh   rh   rh   ri   Index2  s   r  r   ra   r`   r   r   r   r   r   r  )r  r  Zindex1index2ry   rh   rh   ri   test_issue_3981  s$    r  c                      sn   t tddg t fddtdD s.tt fddtdD sLtt fddtdD sjtd S )Nr   r   c                 3   s&   | ]}   |  |   kV  qd S rb   evalfre   rX   rh   ri   rj     s     ztest_evalf.<locals>.<genexpr>ra   c                 3   s*   | ]"}  d |  |  d kV  qdS ra   Nr  re   r  rh   ri   rj     s     c                 3   s*   | ]"}  d |  |  d kV  qdS r  r   re   r  rh   ri   rj     s     )r.   r   rn   r   ro   rh   rh   r  ri   
test_evalf  s    r  c                  C   s
  t ttgttgg} |  dks$tt ddddgdddd	gg} |  d
ksPtt ddddgddtd	gg} |  dks|tt dtdgg} |  dkstt dddgg} |  d
kstt dgtgdgg} |  dkstt dgdgdgg} |  d
kstd S )NTr   ra   r`   r   r   r   r   r   F)r.   r\   Zis_symbolicro   r  rh   rh   ri   test_is_symbolic  s    r  c                  C   s\   t dddgg} | jdkstt dgdgdgg} | jdks@ttdd} | jdksXtd S )Nr   ra   r`   TFr   )r.   Zis_upperro   r;   r  rh   rh   ri   test_is_upper  s    
r  c                  C   sD   t dddgg} | jdkstt dgdgdgg} | jdks@td S )Nr   ra   r`   FT)r.   is_lowerro   r  rh   rh   ri   test_is_lower  s    r  c                  C   sp   t ddddddddddddddddddg} |  s8tt ddgddgg} |  rXtt g } |  sltd S )Nr   r   ra   r   r   r`   )r.   r   ro   r  rh   rh   ri   test_is_nilpotent  s    ,r  c                  C   s  d\} }t | |}|d dt| | }||ks6t|j|j  krNdksTn t|j|j  krldksrn t|j|j  krdksn tt dt ddksttdtddkstt ddtdddgd ksttddtdddgd kst|d |t | |kstd S )N)r`   r   r   r`   ra   r   r   r   )r;   fillr5   ro   rp   rq   rm   r.   )rw   ry   rX   rY   rh   rh   ri   test_zeros_ones_fill  s    

  
r  c                  C   sf   t d} | t kstt dd} | jdks.t| jdks<tt dd} | jdksTt| jdksbtd S )Nr   ra   )r;   r.   ro   rp   rq   r  rh   rh   ri   test_empty_zeros  s    

r  c                  C   s  t td tt gttt ttt gg} | tt dt tgttttggksZtt tt td gttdt tt  tdt  ggtt	t t	t	 t	gt	dt	ggkstt ttd t dt tt  tt gdt t
tt
ttd ggtdt dddgt	dtdggks*t| tt tddtd  ttd  d gtd tt d td tt d ggkstd S )Nra   r   r   r`   )r.   r\   r]   r   r   r   ro   r   limitr   r   r   r   r  rh   rh   ri   test_issue_3749  s0    ,." $ 

 &r  c                  C   sD   t d} | dd dD ]&}| j|dd d| jdd	kstqd S )
Nr   r   r   )r  r  c                 S   s   | dkS rG  rh   r   rh   rh   ri   r   ,  r   z%test_inv_iszerofunc.<locals>.<lambda>)r  
iszerofuncr  r  )r2   Zcol_swapr   ro   )r   r  rh   rh   ri   test_inv_iszerofunc(  s    
r  c                  C   s   t d\} }t| t| | t| g}t| |g}||}|||jksRt||j|ksft||j|jks|t|jt|jd  | }|	t
}|tddgd| d ggkstd S )Nrho,phir   r   ra   )r   r.   r   r   rn  r#  ro   r2   rm   rH  r$   )rhophiXYr   rq  rh   rh   ri   test_jacobian_metrics0  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std S )Nr  ra   r   )r   r.   r   r   rn  ro   )r  r  r  r  r   rh   rh   ri   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st|j	|kstt|D ]}|d d |f |kstqqXqJd S Nr   r`   )
r.   r   r\   r]   r^   r   rn  rp   ro   rq   )r  r  rg   r   ZX_sliceZY_slicer   krh   rh   ri   test_issue_4564I  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 rb   rn  r.   r\   r]   r^   rh   r  rh   ri   r   Z  r   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
     S rb   )rn  rh   r  r  rh   ri   r   ]  r   c                      s     tttgttggS rb   r  rh   r  rh   ri   r   ^  r   )r.   r   r\   r]   r^   rL   	TypeErrorrh   rh   r  ri   test_nonvectorJacobianW  s     r  c                  C   sP   t ddgddgg} |  }|jdks*ttdD ]}|| |d ks2tq2d S Nr   r`   ra   r   )r.   Zvecrq   ro   r   )ry   Zm_vecrg   rh   rh   ri   test_veca  s
    r  c                  C   s6  t ddgddgg} |  }|jdks*ttdD ]}|| |d ks2tq2| jdd}|d dkshtt dttt  gtt td  dgg} | jdd}|d tt td  kstt dttt  gtt dgg} | jddd}|d tt kstttdd	  tt	d
d	  ttdd	  tt	dd	  d S )Nr   ra   r`   F)diagonalr   )r  Zcheck_symmetryc                   S   s   t ddgg S r  r.   vechrh   rh   rh   ri   r   z  r   ztest_vech.<locals>.<lambda>c                   S   s   t ddgddgg S r  r  rh   rh   rh   ri   r   {  r   c                   S   s   t ddgg S r  r  rh   rh   rh   ri   r   |  r   c                   S   s   t ddgddgg S r  r  rh   rh   rh   ri   r   }  r   )
r.   r  rq   ro   r   r\   r]   rL   r%   r   )ry   Zm_vechrg   rh   rh   ri   	test_vechi  s"    ( r  c                      s`   t dddgtdddgks tdddgg tt fdd t  ddtdddgks\td S )Nr   ra   r`   c                      s   t  S rb   )r1   rh   r   rh   ri   r     r   ztest_diag.<locals>.<lambda>F)strict)r1   r.   ro   rL   r   rh   rh   r   ri   	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sZt| |gkslt| |gks~td S Nr   ra   r`   )r.   r\   r]   r^   get_diag_blocksro   rX   rY   rZ   rh   rh   ri   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sftt| || | ||gkstt| || | ||gkstt||| |||gkstd S r  )r.   r\   r]   r^   r1   r  ro   r  rh   rh   ri   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|tt| ||}|jddt|  | | kstt| ||}|jddt|  | | kstt| | || || }|jddt|  |  | |  | |  ks2t|jdddt| jdd| jdd|jdd| jdd|jdd| jddkstd S )	Nr   ra   r`   T)try_block_diagr  )r  r  r  )r.   r\   r]   r^   r1   r   ro   )rX   rY   rZ   r   rh   rh   ri   test_inv_block  s4     (((     
 
 

 
 
r  c                   C   s   t tdd  t tdd  ttdtdks4tttdtdksLtt tdd  ttdtdksrtttdtdkstt tdd  ttdtdtddkstt tdd  t td	d  t td
d  dS )zg
    Check that matrix dimensions can be specified using any reasonable type
    (see issue 4614).
    c                   S   s
   t ddS )Nr`   r   r;   rh   rh   rh   ri   r     r   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddS Nr   ra   r`   r   r  rh   rh   rh   ri   r     r   r`   c                   S   s   t dS N      @r  rh   rh   rh   ri   r     r   c                   S   s   t dS r  r2   rh   rh   rh   ri   r     r   r   c                   S   s   t dS rl  r   rh   rh   rh   ri   r     r   c                   S   s
   t ddS r~   r   rh   rh   rh   ri   r     r   c                   S   s   t ddggS r~   r   rh   rh   rh   ri   r     r   N)	rL   r   r  r;   rd   ro   r
   r2   r5   rh   rh   rh   ri   test_creation_args  s     r  c                  C   sv  t ddddddg} |  r t|  s,t| jdds<tt ddddddg} |  s\ttddd} |  stt|  stt dddddddddddg	} | tdddkstt ddtdd} |  rt|  stt d} |  stt d} |  stt dddtd dt  d ttd d ddtddg	} |  sJt| jddr\t|  jddsrtd S )	Nra   r   r   Fr#   r`   ))r   r   r   r   ))r   r   r   )r   r   r   )	r.   is_diagonalro   is_symmetricr1   r;   r\   r]   r   r   rh   rh   ri   test_diagonal_symmetrical  s,    6r  c                     s  t ddt gdt dgg   s(tt ddddddddg   rLt  rXttt fdd tddd   \} }| t	dkst| kstt ddd	ddd	g   st  st  \} }| 
   |  |kstt dddd	d	dg   st  st  \} }| 
   |  |ksDt| t	dksVt| ksdtt ddddd	d	g   st  \} }| 
   |  |kstt ddddd	d	dd	dd
dg	   st  \} }| 
   |  |kst| D ]}| d dkstqt dddd	d	d	g   sBt  sPt  \} }| 
   |  |ksvt| t d	dgdd	ggkstt ddd	ddd	g  drttt fdd   st  \} }| 
   |  |kstt ddd	dd	d	g   r ttt fdd t dddddddddddg	   r^ttt fdd td\}}}}t dd||||g   st  std S )Nr   ra   r`   r   r  r   c                      s      S rb   r  rh   r   rh   ri   r     r   z&test_diagonalization.<locals>.<lambda>r   r   r   Tc                      s
     dS )NTr  rh   r   rh   ri   r     r   c                      s      S rb   r  rh   r   rh   ri   r     r   r   r   c                      s      S rb   r  rh   r   rh   ri   r     r   za b c d)r.   r	   r  ro   r  rL   r'   r1   r  r2   r   Zas_numer_denomr  r&   r   )r   r  rg   rX   rY   rZ   r[   rh   r   ri   test_diagonalization  sl    r  c                      sv   t ddgddgg   dks$td d<   dks<tt ddgddgg    d d< tt fdd d S )Nr   r   Tr   Fc                      s      S rb   r  rh   r  rh   ri   r   2  r   z"test_issue_15887.<locals>.<lambda>)r<   r  ro   r  rL   r&   rh   rh   r  ri   test_issue_15887(  s    r  c                     sf  t ddddddddg tt fdd t ddd	d
dddddddg	 t dddddddddddg	}   \}}| |ks~t|   d kstt dddddddddddg	 t dddddddddddg	}   \}}| |kstt dddddddddddg	 t dddddddddddg	}   \}}| |ks<tt dddddddddddg	 t dddddddddddg	}   \}}| |kstt ddddddddddddddddddg t ddddddddddddddddddg}   \}}| |kstt ddddddddddddddddddg t ddddddddddddddddddg}   \}}| |ksvtt ddddddddddddddddddg   rtt ddddddddddddddddddg}   \}}| |kstt tdddtd ddgtd!ddtd"ddgg   \}}| D ]"}t	|tr>|j
dks>tq>d S )#Nr`   ra   r   r   r  r   c                      s      S rb   )r   rh   r   rh   ri   r   8  r   z"test_jordan_form.<locals>.<lambda>r   r  r   ir   ir2  r   r   r   r   r   r   r   r   r   r   z1.0n   )	precisionz2.0z3.14159265358979323846264338327z4.0)r.   rL   r'   r   ro   r  r  r   valuesr   Z_prec)ZJmustr   r   termrh   r   ri   test_jordan_form5  s    
,         ,         ,,r  c                  C   s   t ddddgddddgddddgddddgg} ddt  }ddt  }t |dddgd|ddgdd|dgddd|gg}t |dddgd|ddgdd|dgddd|gg}|  \}}||ks||kstt|| |  | kstd S )Nra   r   r   r   r   )r.   r	   r   ro   r#   r   )r   pqZJmust1ZJmust2r   r   rh   rh   ri   #test_jordan_form_complex_issue_9274  s(    








r  c               	   C   s   t ddddgddddgddddgddddgg} |  \}}|t ddddgddddgddddgddddggkstt|t ddddgddddgddddgddddggkstd S )Nr   r   )r.   r   ro   r   rh   rh   ri   test_issue_10220  s"    









r  c               
   C   s   t ddddgddddgddddgddddgg} |  \}}| t t t d ttd gdt ddt dgdtd d td  dtd d td  gddddggkst|t t dddgdt ddgddtdgdddtggkstd S )Nr   r   r   r   ra   )r.   r   r   r	   r   ro   )r   r   r   rh   rh   ri   test_jordan_form_issue_15858  s&    



.


r  c                  C   sx  t d\} }}t| |  |d ||   || ||  g|| ||  | |d ||   gg}|t}|ttd ||  ||   d| |  ||  t  || |  ||   tddkstt|tksttddgddgg}| |t  krttd t d ksn ttddgtdgg}|t}|jtksLt|	 
|jttd dt  ksttd S )	Nz
UA K_i K_wra   zZZ(K_i,K_w,UA)r   r   r`   r   r   )r   r.   r   r\   r   ro   rc   r   genZas_exprr   )ZUAZK_iZK_wr   r   r  rh   rh   ri   test_Matrix_berkowitz_charpoly  s(    *$
0 8
r  c                  C   s   t d} td| }| tt| ggks0ttd| }| tt| t| t| d gdt| t| gddt| ggkstd S )Nlamdar   r`   ra   r   )r   r.   jordan_blockZ_eval_matrix_exp_jblockr   ro   )lry   rh   rh   ri   test_exp_jordan_block  s    r  c                  C   s  t ddgddgg} t tddtd d dtd d  gdtdgg}|  |ks\tt| |ksltt ddgddgg} |  t tdgdtggkstt| t tdgdtggkstt ddgddgg} |  t ttd t td gttd ttd ggkstd S )	Nr`   r   r   r   r   r   r   r   )r.   r   ro   r   r   r   )ry   Zm_exprh   rh   ri   test_exp  s    8  r  c               
      s   t d} td|    tt| ggks0ttd|    tt| d|  dd| d   dd| d   gdt| d|  dd| d   gddt| d|  gdddt| ggksttdddgdddgdddgg tt fdd	 d S )
Nr  r   r   r   ra   r`   r   c                      s      S rb   )r   rh   r   rh   ri   r     r   ztest_log.<locals>.<lambda>)r   r.   r  Z_eval_matrix_log_jblockr   ro   rL   r&   )r  rh   r   ri   test_log  s(    *
r  c                  C   sX   t ttfdf} | tst| tr,t| ts:t| td} | trTtd S )Nr0  ra   )r.   r\   r]   hasro   r^   r   r   r   rh   rh   ri   test_has  s    r  c                  C   sR   t d} tdd| t| d t| d  tjg}t|\}}}}|tjksNtd S )Nr\   r`   r   ra   )r   r.   r   r   r   r   r)   ro   r\   columnZpivot_offsetZ	pivot_valZpivot_assumed_nonzeroZ
simplifiedrh   rh   ri   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1  s
    (
r  c                  C   sn   t d} tdd| t| d t| d  | d  t| d t| d  g}t|td\}}}}|dksjtd S )Nr\   r`   r   ra   Zsimpfunc)r   r.   r   r   r)   r*   ro   r  rh   rh   ri   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2  s    

r  c                  C   s   t d} tdd| t| d t| d  |  t| d t| d  g}t|td\}}}}t|dksjt|d d dks~t|d d d|  kst|d d dkst|d d dkstd S )Nr\   r`   r   ra   r  r   )r   r.   r   r   r)   r*   lenro   r  rh   rh   ri   +test_find_reasonable_pivot_naive_simplifies'  s    

r  c                      s  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t td	d  t td
d  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t tdd  t td d  t td!d  t td"d  t td#d  t td$d  t td%d  t td&d  t td'd  t td(d  t td)d  td* t t fd+d td,d,d,ggtd-d.d/gd.d/d0gd/d0d1gg t t fd2d td-d.d/gd.d/d0gd/d0d1gg t t fd3d d S )4Nc                   S   s   t ddgdggS r~   r   rh   rh   rh   ri   r   :  r   ztest_errors.<locals>.<lambda>c                   S   s   t ddggd S )Nr   ra   )g333333?r   r   rh   rh   rh   ri   r   ;  r   c                   S   s   t ddggd S )Nr   ra   )r   g@r   rh   rh   rh   ri   r   <  r   c                   S   s   t ddddS )Nr`   r   T)rZ   rQ  )r6   rh   rh   rh   ri   r   =  r   c                   S   s   t ddgddS )Nr   ra   r   r   )r.   rC  rh   rh   rh   ri   r   >  r   c                   S   s(   t ddgddggddgt ddgS Nr   ra   r`   r   r   )r.   Zcopyin_matrixrh   rh   rh   ri   r   @  r   c                   S   s"   t ddgddggddgt S r  )r.   Zcopyin_listsetrh   rh   rh   ri   r   A  s   c                   S   s   t dddgdddgg S Nr   ra   r`   r   r.   r   rh   rh   rh   ri   r   C  r   c                   S   s&   t ddddgt ddgddggS r  )r.   row_joinrh   rh   rh   ri   r   E  r   c                   S   s"   t ddgt ddgddggS r  )r.   col_joinrh   rh   rh   ri   r   G  r   c                   S   s"   t dgdt ddgddggS r  )r.   
row_insertrh   rh   rh   ri   r   H  s   c                   S   s"   t dgdt ddgddggS r  )r.   
col_insertrh   rh   rh   ri   r   J  s   c                   S   s   t ddg S r~   )r.   r  rh   rh   rh   ri   r   L  r   c                   S   s   t dgdS r  )r.   rH  rh   rh   rh   ri   r   M  r   c                   S   s   t ddgddggddS Nr   ra   r`   r   r   )r.   minorrh   rh   rh   ri   r   N  r   c                   S   s   t ddgddggddS r   )r.   Zminor_submatrixrh   rh   rh   ri   r   O  r   c                   S   s   t dddgdS r  r.   crossrh   rh   rh   ri   r   P  r   c                   S   s   t dddgdS r  r.   dotrh   rh   rh   ri   r   Q  r   c                   S   s   t dddgt ddgS r  r  rh   rh   rh   ri   r   R  r   c                   S   s   t ddgg S r~   r  rh   rh   rh   ri   r   S  r   c                   S   s   t ddgdS )Nr   ra   rX   r  rh   rh   rh   ri   r   T  r   c                   S   s   t ddgdddgS r  r  rh   rh   rh   ri   r   U  r   c                   S   s   t dddg S r  )r.   r   rh   rh   rh   ri   r   V  r   c                   S   s   t ddgddgg S r  )r.   
normalizedrh   rh   rh   ri   r   W  r   c                   S   s   t ddgjddS )Nr   ra   znot a methodr  r  rh   rh   rh   ri   r   X  r   c                   S   s   t ddg S r~   r.   Z
inverse_GErh   rh   rh   ri   r   Y  r   c                   S   s   t ddgddgg S r~   r  rh   rh   rh   ri   r   Z  r   c                   S   s   t ddg S r~   r.   Zinverse_ADJrh   rh   rh   ri   r   [  r   c                   S   s   t ddgddgg S r~   r  rh   rh   rh   ri   r   \  r   c                   S   s   t ddg S r~   )r.   Z
inverse_LUrh   rh   rh   ri   r   ]  r   c                   S   s   t ddg S r~   )r.   r   rh   rh   rh   ri   r   ^  r   c                   S   s   t ddg S r~   r.   r   rh   rh   rh   ri   r   _  r   c                   S   s   t ddgddggjddS )Nr   ra   r`   r   zNot a real methodr  r	  rh   rh   rh   ri   r   a  r   c                   S   s8   t ddddgddddgd	d
ddgddddggjddS )Nr   ra   r`   r   r   r   r   r   r   r   r1  r   r2  r3  r   r=  zNot functionr  r	  rh   rh   rh   ri   r   c  s
   
 
c                   S   s8   t ddddgddddgd	d
ddgddddggjddS )Nr   ra   r`   r   r   r   r   r   r   r   r1  r   r2  r3  r   r=  Fr
  r	  rh   rh   rh   ri   r   f  s
   
 
c                   S   s*   t tddgddggtddgddggS r  r3   r.   rh   rh   rh   ri   r   i  r   c                   S   s   t tddgddggg S r  r  rh   rh   rh   ri   r   j  r   c                   S   s   t tdd dS )Nr\   ra   rX   )r3   r   rh   rh   rh   ri   r   k  r   c                   S   s   t dd S )Nr`   )r   ra   r  rh   rh   rh   ri   r   l  r   c                   S   s   t dd S )Nr`   )ra   r   r  rh   rh   rh   ri   r   m  r   r>  c                      s
     dS )Nzmethod=LU_decomposition())r   rh   r   rh   ri   r   o  r   r   r   ra   r`   r   r   c                      s     dS )Ng@)r  rh   r   Vrh   ri   r   r  r   c                      s     dS )Ng)r  rh   r  rh   ri   r   t  r   )rL   r   r!  r%   r  r'   r.   rh   rh   r  ri   test_errors9  s|       r  c                   C   s   t t dkstt tddggt tdgdgg  krDdksJn tt tdddd t tdddd   kr~dksn tt tdddgddd	ggd
ksttdgtdggkstt rtt tg kstd S )Nr   r   ra   c                 S   s   dS rG  rh   r   rh   rh   ri   r   y  r   ztest_len.<locals>.<lambda>c                 S   s   dS rG  rh   r   rh   rh   ri   r   z  r   r`   r   r   r   )r  r.   ro   rh   rh   rh   ri   test_lenv  s    8$
r  c               	   C   s   t ddtftddfddtd ff} | tt tdt td d ftt dt dt fdt dt td d ffkszt| tt tdt tt ftd d dt dt fdt dt ttd  ffkstd S )Nr   r   ra   r   r   r`   )r.   r\   r]   r   ro   r   rh   rh   ri   test_integrate  s    $FFr  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sTtd S )	Nr   r   ra   r   r   r   )r   r   r   )r   r   r   )r.   r   r\   r]   r  ro   r   rh   rh   ri   
test_limit  s    0r  c                  C   sZ  t ddtftddfddtd d ff} t| tt| s@t| tt dddddt ffksft| tt d	ks|tt| tt dddddt ffkstt| tt d	kst|  }t|tt|st|ttdddddt ffkst|ttd	kstt|ttdddddt ffks>tt|ttd	ksVtd S )
Nr   r   ra   r   r   r   r   r   r   r   r   r   )r  r   r   r   r  )	r<   r\   r]   r   r   rc   ro   r$  r=   )r   A_immrh   rh   ri   	test_diff  s    (&&&(r  c               
      sv  t ttgttgg} | | tddgddggddgddgggddgddggddgddggggksftt| | tddgddggddgddgggddgddggddgddggggkst|  }||tddgddggddgddgggddgddggddgddggggkstt||tddgddggddgddgggddgddggddgddggggksht| t	t ddgddggkstt
t	tg}| |tddddkst| | tddgddggddgddgggddgddggddgddggggkst|t	tgg}|jdks,t|tdgdggdgdgggksRttd}|ttt  tttggt t t tgkst tttgdft td tt ttg tt td ttg tt tt tdggks ttttt }|ttggttttt tttt gksjt|tttffttttt tttt gkst|tttffttt tt tttt gkst|ttffttggttttt tt tt gtttt tttt ggksHt ttt tttffdd ks|t ttt tttffdd kst tttggtttfft fd	d
tttfD kstttttgg}t|t
st|tddggks*ttd tttgg}t|t
sRt|tdtd  dggksrtd S )Nr   r   ra   )ra   ra   r   rp  r`   r   r   r   )ra   r   r   c                    s&   g | ]  fd dt ttfD qS )c                    s   g | ]}  | qS rh   )r   re   )fxyzr   rh   ri   r     s     z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)r\   r]   r^   )rf   r  )r   ri   r     s     z'test_diff_by_matrix.<locals>.<listcomp>)r<   r\   r]   r^   r_   r   rU   ro   r$  rX   r=   rY   r;   rm   r   r   r   r   r.   r   )r   r  BZdBrp  exprresrh   r  ri   test_diff_by_matrix  sF    RRTT$ T&8   :<>d44>r  c                      sh   t ddtftddfddtd d ff tt fdd t dtt d	d
dddt ffksdtd S )Nr   r   ra   r   r   c                      s    j S rb   )Znonexistantattributerh   r   rh   ri   r     r   ztest_getattr.<locals>.<lambda>r   r  r  r   )r.   r\   r]   rL   r  getattrro   rh   rh   r   ri   test_getattr  s    (r  c                  C   s   t dddgdddgdddgg} | js*t| j} | js:td| d< | jdksPtt dddgdddgdddgg} | jrzttdd} | jstd S )	Nr`   r   r   ra   r   r   )r   r   F)r.   Zis_upper_hessenbergro   r#  Zis_lower_hessenbergr;   r   rh   rh   ri   test_hessenberg  s     

 

r   c                  C   s6  t tdd  t tdd  t tdd  t tdd  t tdd  tdt dfd	fjd
dttdt dgddggksttd} | jd
d}|tddgddtd t ggkst||j | ksttd} |  }||j | kst|j	st|tdddgdddgdddggks&ttddt ddt  fdt ddt fddt  dt dff} |  
 tdtddfdt ddffkstt tdd  t tdd  t tdd  t tdd  t tdd  tdt dfd	fjd
dttdt dgddggksttd} | jd
d}|tddgddtd t ggksXt||j | kslttd} |  }||j | kst|j	st|tdddgdddgdddggksttddt ddt  fdt ddt fddt  dt dff} |  tdtddfdt ddffks2td S )Nc                   S   s   t d S Nr   r.   choleskyrh   rh   rh   ri   r     r   ztest_cholesky.<locals>.<lambda>c                   S   s   t d S Nr   )r`   r   r"  rh   rh   rh   ri   r     r   c                   S   s   t dt dfdf S Nr   r   r   )r.   r	   r#  rh   rh   rh   ri   r     r   c                   S   s   t d S N)r   r   )r   r   r"  rh   rh   rh   ri   r     r   c                   S   s   t djddS Nr%  F	hermitianr"  rh   rh   rh   ri   r     r   r   r   r   Fr*  r   r(  ra   r   ))   r   r   )r   r   r   )r   r   r1  r`   r   r   r   r1  )ra   r   r   c                   S   s   t d S r!  r/   r#  rh   rh   rh   ri   r      r   c                   S   s   t d S r$  r-  rh   rh   rh   ri   r     r   c                   S   s   t dt dfdf S r&  )r/   r	   r#  rh   rh   rh   ri   r     r   c                   S   s   t d S r'  r-  rh   rh   rh   ri   r     r   c                   S   s   t djddS r)  r-  rh   rh   rh   ri   r     r   )rL   r'   r   r.   r	   r#  r   ro   r#  r  r   r/   )r   ro  rh   rh   ri   test_cholesky  sP     (
*@0 **@r.  c                  C   s  t ddd} tt| t| g}t|ddks6t|dtt| d t| d  tddkshttdtddgg}| td	td
d t	j
kst|tt|kst|t t|ksttddgddgg}|ddkst|ddkst|ddksttddtdd  krFdksLn t|tdks`ttdttg| t	j
t gg}|dttdddttd   td  | d  ksttdddgddtddgg}|dttddtdd  kst|dt	jkst|dtdd ks4ttddgddgg}tddgddgg}tdt gtdgg}tddgddgg}||||g}t ddd}dD ]}td|t	jkst|D ]B}	|D ]6}
|	||
| |	|
 | }|dkstq̐q||||fD ]8}t|| |t|||  }|dkstqqtdddt  dg}tt	j
dt dg}tdddg}tddtg}ttdtdddg}|||||g}t ddd}ddddt	jt	jtfD ]}|dkrtdddg|t	jkst|dkrj|D ]L}	|D ]@}
|	||
| |	|
 | }t|dkt	jks$tq$q|ddddt	jt	jfkr|D ]8}	t||	 |t||	|  }|dkstqqtdddddddddd
dg	}|ddkstd S )Nr\   TrJ  ra   r   r   r   r`   r,  r   r   r   r   Z	frobeniusfro%   r   r2  i  r   iI3 r   alpha)r/  ra   r   g      Y@r   )r   r.   r   r   r$   normro   r   r   r   r   r   maxrV  r2   r]   r   r   r   r*  r	   r;   r#   r
   InfinityNegativeInfinitytrue)r\   r   r   r  r|  r  ro  r1  orderr  r  Zdifr   rX   rY   rZ   r[   erh   rh   ri   test_matrix_norm  s    2"2,
*
 
 r9  c                     s   t dddtd} d| d< tdd| d< |  d	ks:t| d
< |  tdtttddt kspttt	t
gt
 t	gg}|  t fddtddtjtddtd tttdd fD sttg  dkstd S )Nr\   TrJ  r`   r   r   r   ra   ra   r   r   c                 3   s(   | ] }t d  | V  qdS )      ?N)r   Z
epsilon_eqr   r  )rf   valZMcr\   rh   ri   rj   }  s     z(test_condition_number.<locals>.<genexpr>r   ra   r   r   r   )r   r2   r   Zcondition_numberro   r   r   r   r.   r   r   rn   r   r   r   )r   r   rh   r=  ri   test_condition_numberq  s    .&*r>  c                  C   s   t d} t d}| | d d d d f ks,t| | d d d d f krHt| |krTt| |ks`t| dkslt| dkrxttd}t d}||kst||krtd S )N))r   ra   r`   )r   r   r   )r   r   r   ))r   r   r   )r   r   r   )r`   ra   r   r   )r  r  r  )r.   ro   r/   )r   r  r|  r  rh   rh   ri   test_equality  s    r?  c                   C   sJ   t dtdddggtdddgdddgdddgdddggksFtd S )Nr`   r   r   r   )r2   r  r.   ro   rh   rh   rh   ri   test_col_join  s    
r@  c                  C   s`   t dddgg} tddD ]@}dddg}||d ttd|| d |kstqd S )Nr   r   r   r   r   r`   )	r.   r   insertrG   r2   r  r  r"  ro   )Zr4rg   r  rh   rh   ri   test_row_insert  s
    
rB  c                  C   s^   t dddg} tddD ]@}dddg}||d ttd|| d |kstqd S )Nr   r   r   r   r`   )	r.   r   rA  rG   r;   r  r  r"  ro   )Zc4rg   r  rh   rh   ri   test_col_insert  s
    
rC  c                  C   s   t ddg t tddtddgks,tt dddg t dddgksPtt dddg} | jdd dt dddgkstd S )	Nr`   r   r   r   g0.++c                 S   s   | j dddjS )Nr   T)rw   Zchop)r  is_zeror   rh   rh   ri   r     r   z!test_normalized.<locals>.<lambda>r
  )r.   r  r   ro   r   rh   rh   ri   test_normalized  s    $rE  c                   C   s,   t dd dkstt dd dks(td S )Nc                   S   s   t d S r@  r2   Zprint_nonzerorh   rh   rh   ri   r     r   z$test_print_nonzero.<locals>.<lambda>z[X  ]
[ X ]
[  X]
c                   S   s   t ddS )Nr`   .rF  rh   rh   rh   ri   r     r   z[.  ]
[ . ]
[  .]
)rH   ro   rh   rh   rh   ri   test_print_nonzero  s    

rH  c                  C   s   t dtdkstt dtdks,ttddt dddgd ksLtt ddgddgg} t ddgddgg}tD ]x}|d}| |kst| td|dkstt||kst|d}||kst|td|dkstt||ksxtqxd S )Nr`   r   r   r   r   ra   ru  )r.   r2   ro   r;   r5   rl   rc   )rg   r^   rx   ry   rh   rh   ri   test_zeros_eye  s     

rI  c                  C   s
  t  jstt ddgddggjs&ttddjs6ttdjrDtt tdgddggjd ksbtttdgddggjd kstttdgddggjd kstttdgddggjd kstt tdgddggjdkstt	ddd} t | dgddggjdkstd S )	Nr   r`   r   r   FrX   T)Znonzero)
r.   Zis_zero_matrixro   r;   r2   r\   r/   r,   r-   r   r  rh   rh   ri   test_is_zero  s    rJ  c            
      C   s  t d } t| }t|  }t| }t|  }t| }t|  }|| td tdksZt|| td tdksvt|| td tdkst| ddt|   kst| ddt|   kst| ddt|   ksttdtdksttdtdksttdtdks&tt	dddgt d }t	dddgt d }t	dddgt d }	tt  d |
 ksttt  d |
 ksttt  d |	
 ksttt 
 d |
 ksttt 
 d |
 ksttt 
 d |	
 kstd S )Nr`   r   ra   r   )r   r9   r8   r7   r2   ro   r  r   rW   Zfrom_axis_angleZto_rotation_matrixr@   rA   rB   )
thetaZr3_plusZr3_minusZr2_plusZr2_minusZr1_plusZr1_minusq1q2Zq3rh   rh   ri   test_rotation_matrices  s2    


rN  c                   C   sj   t tdd dkstttdtdks0tttdd  t tddksRtttddksftd S )	NZvectorr   z	vector[4]r[   c                   S   s   t dd S )Nr[   r   )r(   rh   rh   rh   ri   r   
	  r   z%test_DeferredVector.<locals>.<lambda>testzDeferredVector('test'))strr(   ro   r   rL   r!  reprrh   rh   rh   ri   test_DeferredVector	  s
    rR  c                   C   s   t tdrtd S )Nr  )rI   r(   ro   rh   rh   rh   ri    test_DeferredVector_not_iterable	  s    rS  c                   C   s   t tdd  d S )Nc                   S   s   t tdS )Nr  )r.   r(   rh   rh   rh   ri   r   	  r   z,test_DeferredVector_Matrix.<locals>.<lambda>)rL   r  rh   rh   rh   ri   test_DeferredVector_Matrix	  s    rT  c                  C   s<  t } tddddg}tddddg}t||gtddddgtdd| dd | dd ggksdtt|j|jgtddddgtdd| dd | dd ggkstttddgtddggdtdtd d tdd gttd d dtd d ggkstttdg}t|tdgggks8td S )Nr   ra   r`   r   r   Tr   )r   r.   r+   ro   r#  r   r!   )r   r5  r6  ro  rh   rh   ri   test_GramSchmidt	  s    
.. rU  c                   C   s<   t ddddgddkstt ddddgddddks8td S )Nr   ra   r`   r   r   F)zero)r0   ro   rh   rh   rh   ri   test_casoratian%	  s    rW  c                   C   s^   t  tdd jdksttddtdd tddks<ttddtdd t  ksZtd S )Nr   r`   )r   r`   )r.   r;   rm   ro   rh   rh   rh   ri   test_zero_dimension_multiply*	  s    "rX  c                      s   t ddtd  dd d f t ddggks2t dd d f t ddggksTt d d df t ddggjksxt d d df t ddggjksttt fdd tt fdd d S )	Nra   r   r   r`   r   c                      s    dd d f S rF  rh   rh   r   rh   ri   r   6	  r   z'test_slice_issue_2884.<locals>.<lambda>c                      s    d S )Nr:  rh   rh   r   rh   ri   r   7	  r   )r.   r   ro   r#  rL   r!  rh   rh   r   ri   test_slice_issue_28840	  s    ""$$rY  c                   C   sJ   t ddd d df jdks tt dddd d f tddg ksFtd S )Nr   r`   r   r   r   )r;   rm   ro   r.   rh   rh   rh   ri   test_slice_issue_3401:	  s     rZ  c                  C   s  t dd} d| d< | d d df tdddgks4t| d dksDt| dd dgksZtd| d< | d dksrt| ddd f tddggksttddgg| ddd f< | dd d f tdddggkstdd	gg| ddd f< | dd d f tddd	ggkstd
| d< | d d d df td
ddgks>tdddg| d< | d d df tdddgkspttdddg| d< | d d df tdddgksttdddg| d< | d d df tdddgkstd S )Nr`   r   r   r   r  r   r   r   +      r   )r;   r.   ro   r/   )rf  rh   rh   ri   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s4tttdd  t dddgtddgdtdgg t  d  jks|t  d tdkst jt	d	d tdksttt fd
d tt fdd tt fdd d S )Nr   ra   r   )r   c                   S   s   t ddgddgg S r~   r  rh   rh   rh   ri   r   Z	  r   z'test_invertible_check.<locals>.<lambda>r   r`   r  c                      s    j ddS )Nr  r  r   rh   r   rh   ri   r   e	  r   c                      s    j ddS )Nr  r  r^  rh   r   rh   ri   r   f	  r   c                      s    j ddS )Nr  r  r^  rh   r   rh   ri   r   g	  r   )
r.   r   ro   rL   r   r\   r  rp   r2   r"   rh   rh   r   ri   test_invertible_checkV	  s    4r_  c                  C   sD   t d\} }| | }|| tdddgtdddg| ks@td S )Nzx, yr`   r   )r   r   r.   ro   )r\   r]   r8  rh   rh   ri   test_issue_3959j	  s    r`  c                   C   s$   t tddgddggdks td S )Nr   ra   r`   r   zMatrix([[1, 2], [3, 4]]))rP  r.   ro   rh   rh   rh   ri   test_issue_5964p	  s    ra  c                  C   s<   t d\} }tt| d| g|d | d ggdks8td S )Nx yra   r`   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))r   r    r.   ro   )r\   r]   rh   rh   ri   test_issue_7604t	  s    "rc  c                	   C   s   t djstt d js ttdjr.ttdjr<ttdddggjrRttddddddjslttddtdjrttdddddjrttddddddddjrtd S )	Nr`   r   r   )r   r   r:  ra   r   )r   r   )r   r   r:  r   )r   ra   )	r2   Zis_Identityro   r$  r;   r5   r.   r/   r   rh   rh   rh   ri   test_is_Identityz	  s    rd  c                   C   s,  t ddt dddkstt dddddgdks<ttdddgtdddgdksbttdddt gttddt gdt ksttdddt gjttddt gdddt ksttdddt gjttddt gddd	t ksttdddt gjttddt gdd
dd	t ks<ttdddt gjtddt dgdddddt  kszttdddt gjtddt dgdddddt  kstttdt gjttdt gddddkstttdt gjttdt gdddkstttdd  d S )Nr   r`   ra   r3  r   Fr*  Tr2  Zphysicsr+  conjugate_conventionr   r   r   rightr   left)rf  c                   S   s    t ddgjt ddgdddS )Nr   ra   r`   r   TrO  re  r  rh   rh   rh   ri   r   	  r   ztest_dot.<locals>.<lambda>)r5   r  ro   r.   r	   rL   r   rh   rh   rh   ri   test_dot	  s    &268:>>20ri  c                  C   s   t ddd\} }}}}}td|||f| d|| f| | d| f| ||  dff}td|  | | f| d|| f|| d|f||| dff}| |sttd tdst|  | std S )NzB_x B_y B_z E_x E_y E_zTrJ  r   r`   )r   r.   Zdualequalsro   r2   r;   )ZB_xZB_yZB_zZE_xZE_yZE_zFZFdrh   rh   ri   	test_dual	  s&     
rl  c                  C   s   t ddg dkstt dddtd dt  d ttd d  dtt t t t dg	} |  dkslt| jdddkst| jdd	 ddkst| d
  | d
< |  dkst| d
  | d
< |  } | jdddkstd| d< |  dkstd S )Nr   ra   Fr`   r   Tr  c                 S   s   | S rb   rh   r   rh   rh   ri   r   	  r   z%test_anti_symmetric.<locals>.<lambda>r   r   )r.   Zis_anti_symmetricro   r\   r]   r   r   rh   rh   ri   test_anti_symmetric	  s    Drm  c                  C   s   t d} | jdd\}}||j |j|   kr>t|jksDn t| jddd\}}||j |j|   kr|t|jksn t|| |  | kstd S )N)r   r   T)	normalize)rn  sort)r.   r  r#  r2   rq   ro   r   )r   r   rT   rh   rh   ri   #test_normalize_sort_diogonalization	  s    ,,rp  c                   C   s   t tdd  d S )Nc                   S   s   t dddgt ddg gS r  r   rh   rh   rh   ri   r   	  r   z!test_issue_5321.<locals>.<lambda>)rL   r   rh   rh   rh   ri   test_issue_5321	  s    rq  c                  C   s   t tddtd t ddddgddddggks8tt tddtd t ddgddgddgddggksttt} | | td| dtd t ddddgddddggkstd S )Nra   r   r   )r.   hstackr2   ro   vstackr/   ru  rh   rh   ri   test_issue_5320	  s    

 

rt  c                  C   sV   t dgg} t| }t || t ddggks2tt || t dgdggksRtd S r  )r.   r   rr  ro   rs  )r   ZAImrh   rh   ri   test_issue_11944	  s    ru  c                     s   dddg} dddg}t dddg}|j} fdd}tD ]\  | } |}|||| |||j| ||j|j| ||j|| q8ttd	d
  d S )Nr   ra   r`   r   r   r   c                    s    || kst t|  kst d S rb   )ro   rc   )r   rr  ru  rh   ri   rO  	  s    ztest_cross.<locals>.testc                   S   s"   t ddddgt ddddgS r~   r  rh   rh   rh   ri   r   	  s    ztest_cross.<locals>.<lambda>)r.   r#  rl   r  rL   r%   )rX   rY   r  r  rO  r   r  rh   ru  ri   
test_cross	  s    

rv  c                  C   sr   t dd  D ]:} | d| dh}t|dkrB| | dkstqt d d D ]} t| dtrTtqTd S )Nr   r   ra   )rl   r2   r  popro   r   r   )rx   rf  rh   rh   ri   	test_hash	  s
    $rx  c                      s   t d  tt fdd d S )Nr   c                      s   t  dS r  )hashr2   rh   ru  rh   ri   r   
  r   z!test_issue_3979.<locals>.<lambda>)rl   rL   r  rh   rh   ru  ri   test_issue_3979	  s    rz  c                  C   sH   dt gddgg} tddgt  dgg}tD ]}|||  ks*tq*d S Nr   r   )r	   r.   rl   Zadjointro   )r&  rr  rx   rh   rh   ri   test_adjoint
  s    r|  c                   C   s8   t tttd ttd  ggtdggks4td S )Nra   r   )r#   r,   r   r\   r   ro   rh   rh   rh   ri   test_simplify_immutable
  s    "
r}  c                     sT   t dtd\ tddfdd} tdd fdd}| }|| ksPtd S )NF, Gru  ra   c                    s    | | S rb   rh   r   )Grh   ri   r   
  r   ztest_replace.<locals>.<lambda>c                    s    | | S rb   rh   r   rk  rh   ri   r   
  r   )r   r   r.   replacero   )Kr   Nrh   )rk  r  ri   test_replace
  s
    r  c                     s   t dtd\ } t j tdd| d d| dif| d d| dif| d d| dif| d d| difg}W 5 Q R X tdd fdd}ttdd	 | | d
}W 5 Q R X ||kstd S )Nr~  ru  ra   r   r   c                    s    | | S rb   rh   r   r  rh   ri   r   
  r   z"test_replace_map.<locals>.<lambda>F)Ztest_stacklevelT)r   r   rQ   r.   rR   rK   r  ro   )r  r  r   r  rh   r  ri   test_replace_map
  s    2 r  c                  C   sT   t ddgtddt  gg} |  tjtdtjthks<t| tthksPtd S r~   )r.   r\   Zatomsr   r)  ZNegativeOnero   r   r   rh   rh   ri   
test_atoms"
  s     r  c            	         s  t ttgttgg} t| jddt|  ks4tt ddgddgddggt d	d
dgdddggt ttgg}|D ]d}|jdd}|| }|| }t|| |kstt|| |kst|j	|kst|j	|ksttqt|D ]n}t|jdd}|| }|| }t|| |kstt|| |ks.t|j	|ks>t|j	|kstqddl
m  | jdd}|  }tdtdtdtdi}t fddt||||D std S )NZRDr  r2  h   i  r`   r   r   r   r   r   r1  r\     EDr   compi_ib,  i  ij  c                 3   s$   | ]\}} |  |  V  qd S rb   r   )rf   rg   r   r  rh   ri   rj   O
  s   ztest_pinv.<locals>.<genexpr>)r.   rX   rY   rZ   r[   r#   pinvr   ro   r~  sympy.core.numbersr  rn   zipr   )	A1Asr   A_pinvAApApAr  wZrepsrh   r  ri   	test_pinv(
  s:     
r  c                  C   s   t ddddddgddd	d	d
dgddddddgddddddgddddddgddddddggg} | D ]<}|jdd}|| }|| }|j|kst|j|ksbtqbd S )N=   r   7   r  r_  r   >   `   U   r=  E   8   r\  r   6   r   [   )   r   rT  r   Z   r  r  )r.   r  r~  ro   )r  r   r  r  r  rh   rh   ri   3test_pinv_rank_deficient_when_diagonalization_failsU
  s    	r  c                   C   sL   t ddt dd tddg ks$tt ddt dd tddg ksHtd S r{  )r5   r.   ro   rh   rh   rh   ri   test_issue_7201k
  s    $r  c                  C   s2   t tttfD ] } | tgdggjthkstqd S rG  )r,   r-   r.   r/   r\   Zfree_symbolsro   r   rh   rh   ri   test_free_symbolso
  s    r  c                      sv  zddl m  W n tk
r,   td Y nX t dddgtdddgksRtt dddggtdddggksztt dddgddd	ggtdddgddd	ggkstt tttgttttgkstt	t
 fd
d t ddg ddggtddgddggkstt ddgddggtddgddggksPtt g  g gtg ksrtdS )zSee issue 7465.r   array?NumPy must be available to test creating matrices from ndarraysr   ra   r`   r   r   r   c                      s(   t  ddgddggddgddgggS )	Nr   ra   r`   r   r   r   r   r   r   rh   r  rh   ri   r   
  r   z#test_from_ndarray.<locals>.<lambda>N)numpyr  ImportErrorrO   r.   ro   r\   r]   r^   rL   NotImplementedErrorrh   rh   r  ri   test_from_ndarrays
  s     $($
62r  c               	   C   s   ddl m}  zddlm}m} W n tk
r<   td Y nX | |ddgddgg}|d dksftt|ddddgks~tt	t
 | |ddgddgg}W 5 Q R X |d dkstt|ddddgkstd S )	Nr   
_matrixify)r  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesr   ra   r`   r   )sympy.matrices.commonr  r  r  r  r  rO   ro   rs   rJ   PendingDeprecationWarning)r  r  r  ry   rh   rh   ri   test_17522_numpy
  s    
"r  c                  C   s~   ddl m}  zddlm} W n tk
r8   td Y nX | |ddgddgg}|d d	ksbtt|d
ddd	gksztd S )Nr   r  )r  zEmpmath must be available to test indexing matrixified mpmath matricesr   ra   r`   r         @r;  g       @r  )r  r  Zmpmathr  r  rO   ro   rs   )r  r  ry   rh   rh   ri   test_17522_mpmath
  s    r  c                  C   s~   ddl m}  zddlm} W n tk
r8   td Y nX | |ddgddgg}|d dksbtt|ddddgksztd S )	Nr   r  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesr   ra   r`   r   )r  r  Zscipy.sparser  r  rO   ro   rs   )r  r  ry   rh   rh   ri   test_17522_scipy
  s    r  c                  C   sr   t dtgt dgg} | js tdt | d< | jdks:tt| d< | jd ksPt| d t | d< | jdksntd S )Nr   ra   r   Fr   r   )r.   r	   Zis_hermitianro   r\   r  rh   rh   ri   test_hermitian
  s    
r  c                  C   sJ   t tttddgg} | d dt ks*t|  t dt ggksFtd S )NFr  r   ra   )r.   r   r\   ro   r   r  rh   rh   ri   	test_doit
  s    r  c                     sF  t dddgdddgdddgg} | d | t dddgdddggksJtt dddgdddgdddgg}|d |t dddgdddggkstt dddgdddgd	d
dgg}|d |t dddgdddggkstt dddgdddgdddgg tt fdd t dddgdddgdddggttfdd t dddgdddgdddgg} | d | t ddgddgddggkstt dddgdddgdddgg}|d |t ddgddgddggkstt dddgdddgdddgg tt fdd t dddgdddgdddggttfdd d S )Nr   ra   r`   r   r   r   r   r   r   r   r1  r   c                      s
     dS r   row_delrh   r   rh   ri   r   
  r   z+test_issue_9457_9467_9876.<locals>.<lambda>c                      s
     dS Nr   r  rh   rS   rh   ri   r   
  r   c                      s
     dS r   col_delrh   r  rh   ri   r   
  r   c                      s
     dS r  r  rh   rS   rh   ri   r   
  r   )r.   r  ro   rL   r!  r  )r   r  Orh   )r   rT   ri   test_issue_9457_9467_9876
  s.     
  
  
    
$ 
$  r  c                  C   s   t ddd\} }t d\}}td}tdd| ||tg}||  | | | | ksTt|| | || | kspt| | ||  kst|| || kst||  | t||  dgd||  ggkstd S )Nrb  F)Zcommutativeza bra   r   )r   r2   r.   r^   ro   )r\   r]   rX   rY   r   ZM1rh   rh   ri   test_issue_9422
  s    r  c            	      C   s   t g } ddgt dddgf}ddg|d jf}ddgt dd	gdd
ggf}|||fD ]R\}}|D ]D}t| |}d|kr||n|d|}||krt|t|ksbtqbqVd S )Nr  r  r   r   r`   r  r  r   ra   r   joinr  )r.   r#  r  idro   )	r   rX   rY   rZ   Zopsry   oprp  newrh   rh   ri   test_issue_10770
  s    
r  c                  C   sl  t dddgdddgddd	gg} | d
ddgdddgt ddgddgddggksVt| d
ddgdddgt dgdgdggkst| dddgd
ddgt dddggkst| dddgd
ddgt dddgddd	ggkst| d
ddgdddgt dd
g kst| dddgd
ddgt d
dg ks:t| dddgdddgt dgdggkshtd S )Nr   ra   r`   r   r   r   r   r   r   r   TF)r.   r   ro   r   rh   rh   ri   test_issue_10658
  s     0,**r  c                  C   s  t ddtd  dgdtd d d dtd d gg} |  dksLtt ddtd t  dgdddtd t  gg} t|  d	 t ddddtd t   gd	d	gg tddksttd
\}}}}}}}}}	}
}}t |||| || d	g|||| || d	g|||| || dg|||| || dg|	|
d|	 | |	|  d|
 | |
|  d	gg} |  dks|td S )Nr   r   ra   r   r`   r  r   r   r   z/a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1)	r.   r   r  ro   r	   r#   r   r;   r   )ry   ZaxZayZbxZbyZcxcyZdxZdyexZeyt0t1rh   rh   ri   !test_opportunistic_simplification
  s    <4F r  c                  C   s   t dddgdddgg} |  d t ddd	gdddgg  d
k sHtt dddgdddgdddgg}t dddgdddgdddgg}t dddgdddgdddgg}| |  d
k st| |  d
k std S )Ng~jth?gRM@g(\M@gDl)@gQgp=
cG@r   r;  r   V瞯<gq7K<r   g      r   r   r  g        g       @g      )r.   r   r2  ro   r   )mmZm_mixedZm_floatZm_invrh   rh   ri   test_partial_pivoting  s(    



r  c                  C   s   t ddddgddddgddddgg} | jdd	 d
d }t ddddgddddgddddgg}|| }| dk sxt|d dkstdS )z When doing numerical computations, all elements that pass
    the iszerofunc test should be set to numerically zero if they
    aren't already. g?ggɿr   ggٿg333333?c                 S   s   t | dk S )Ng [n<)r   r   rh   rh   ri   r   *  r   z*test_iszero_substitution.<locals>.<lambda>r
  r;  g4iҤIӿglٲer  r:  N)r.   r   r2  ro   )ry   Zm_rrefZ	m_correctZm_diffrh   rh   ri   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t	|jd|	ddks6t	|jd|	ddksNt	d S )Nr   )Pointr   r2  -   r`   r  ra   r   r   r   c                 S   s   t |  dk S )Ng#B;)r   rw   r   rh   rh   ri   r   ?  r   z"test_issue_11238.<locals>.<lambda>T)r#   r  )
Zsympy.geometry.pointr  r   r   r   r   r.   r#   r  ro   )
r  Zxxyyp1p2p0r5  r6  m3Zrh   rh   ri   test_issue_112381  s    0R

r  c                  C   sl   t ddddddg} | tj }| | }tD ]<}|| \}}t|t| ksRtt|t| ks*tq*d S )Nra   r   r`   r   )r.   r   ZImaginaryUnitrl   Zas_real_imagrs   ro   )r5  r6  r  ZklsrX   rY   rh   rh   ri   test_as_real_imagD  s    
r  c                  C   sh   t dddddddddddg	} |  \}}|d t dddgksDt|d t ddddddgksdtd S )Nr`   r   r   r   r   r   ra   )r.   Zjordan_cellsro   )ry   r   ZJcellsrh   rh   ri   test_deprecatedN  s    r  c                  C   sd   ddl m}  tdddg}tdddg}| |d	tdddgksDt| |d
tdddgks`td S )Nr   )Modr   r   ra   r   r  r  r`   r   )Zsympy.core.modr  r.   ro   )r  r   r  rh   rh   ri   test_issue_14489Y  s
    r  c                  C   s^   zddl m}  W n tk
r,   td Y nX tddgddgg}| |tdjjd	ksZtd S )
Nr   r  r  r   ra   r`   r   )dtypeZfloat64)	r  r  r  rO   r.   floatr  namero   )r  r   rh   rh   ri   test_issue_14943a  s    r  c                  C   s4   t ddd} td}| d dk}t|dks0td S )Nry   r   rX   r   r   zm[0, 0] > 0)r>   r   rP  ro   )ry   rX   rh   rh   ri   test_case_6913k  s    r  c                  C   s.   t ddd} td}| ||| iks*td S )Nr   r`   rX   )r>   rE   matchro   )r   rX   rh   rh   ri   test_issue_11948q  s    r  c                  C   s   t dtgt dt gg} t j|  t dgtggt dgt gggksJtt dtdgt tdt gg} t j|  t dgtgdggt td gtdd gt gggkstt dtgdt gg}| \}}||j t dkstd S )Nr   r   ra   )r.   r	   Zorthogonalizero   r   ZQRdecompositionr~  r2   )Zvecsr|   rT   r   rh   rh   ri   test_gramschmidt_conjugate_dotv  s     4r  c                  C   sf   t tddd} t tddd}| |}t|| d }t|| d }||d ksVt|dksbtd S )NrX   r`   r   rY   r   r   )r.   r>   r  r   ro   )rX   rY   rZ   r[   r8  rh   rh   ri   test_issue_8207  s    
r  c                     sz  ddl m}  tddgddgg  ttt tttttdt tt gdtdt ggkshttddgddgg t  d t	tttt
dd t
d d gt
d d t
dd ggkstttdd	  tt fd
d	 tddddgddddgddddgddddgg  ttt  ks>ttt fdd	 tddgddgg t t
ttd  ksttdddgdddgdddgg t | tdtd  ksttddddgddddgddddgddddgg  ttt  ksttddddgddddgddddgddddgg  ttt ttt t  ksvtd S )Nr   nthrootr   ra   r`   r   r   c                   S   s   t dtttS rl  )r;   analytic_funcr   r\   rh   rh   rh   ri   r     r   ztest_func.<locals>.<lambda>c                      s    t  tt t S rb   )r\   r  r   rh   r   rh   ri   r     r   r   r   c                      s     tttS rb   )r  r   r\   rh   r   rh   ri   r     r   r  r   "   r  r   )sympy.simplify.simplifyr  r.   r  r   r\   r_   ro   r   r   r   rL   r   r   r#   r   r  rh   r   ri   	test_func  s$    HT0" $00r  z$Cannot create threads under pyodide.c               
   C   sL   dd } t d2 tj }|| }| s4tW 5 Q R X W 5 Q R X d S )Nc                  S   s&   t jd ksttdgg} | |  } dS r   )rC   statero   r.   r   rh   rh   ri   rp    s    ztest_issue_19809.<locals>.fT)r?   
concurrentfuturesThreadPoolExecutorsubmitresultro   )rp  executorfuturerh   rh   ri   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<td S r{  )r.   r\   r]   r   r   r   ro   r   rh   rh   ri   test_issue_23276  s
    r  (4  rX  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.polys.polytoolsr   r   Zsympy.printing.strr    Zsympy.sets.setsr!   r  r"   r#   Zsympy.simplify.trigsimpr$   Zsympy.matrices.matricesr%   r&   r'   r(   r)   r*   Zsympy.matricesr+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   Zsympy.matrices.utilitiesrC   Z
sympy.corerD   rE   Z(sympy.functions.special.tensor_functionsrF   Zsympy.utilities.iterablesrG   rH   rI   Zsympy.utilities.exceptionsrJ   rK   Zsympy.testing.pytestrL   rM   rN   rO   rP   rQ   rR   Zsympy.assumptionsrT   Zsympy.tensor.arrayrU   Zsympy.matrices.expressionsrV   Zsympy.algebrasrW   r   rX   rY   rZ   r[   r\   r]   r^   r_   rl   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.  r7  r?  rB  rE  rI  rM  rN  r\  ri  rm  rs  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.  r9  r>  r?  r@  rB  rC  rE  rH  rI  rJ  rN  rR  rS  rT  rU  rW  rX  rY  rZ  r]  r_  r`  ra  rc  rd  ri  rl  rm  rp  rq  rt  ru  rv  rx  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  rh   rh   rh   ri   <module>   s  ( h$(,Ma,	O			:		
	
 HK
=7(
]%
		
-


	