o
    8Va-                    @   s  d dl Z d dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& d dl'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z- d dl.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZC d dlDmEZE d dlFmGZG d dlHmIZImJZJ d d	lKmLZL d d
lMmNZNmOZO d dlPmQZQmRZRmSZSmTZTmUZU d dlVmWZW d dlXmYZY d dlZm[Z[ d dl\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd e2e3e0e1fZedd Zfdd Zgdd Zhdd Zidd Zjdd Zkdd Zldd Zmd d! Znd"d# Zod$d% Zpd&d' Zqd(d) Zrd*d+ Zsd,d- Ztd.d/ Zud0d1 Zvd2d3 Zwd4d5 Zxd6d7 Zyd8d9 Zzd:d; Z{d<d= Z|d>d? Z}d@dA Z~dBdC ZdDdE ZdFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW ZdXdY ZdZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu Zdvdw Zdxdy Zdzd{ Zd|d} Zd~d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd ZddÄ Zddń ZddǄ ZddɄ Zdd˄ Zdd̈́ Zddτ Zddф Zddӄ ZddՄ Zddׄ Zddل Zddۄ Zdd݄ Zdd߄ Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zݐd d Zސdd Zߐdd Zdd Zdd	 Zd
d Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zdd Zd d! Zd"d# Zd$d% Zd&d' Zd(d) Zd*d+ Zd,d- Zd.d/ Zd0d1 ZeRd2d3 Zd4d5 Zd6d7 Zd8d9 Zd:d; Zd<d= Zd>d? ZeSeRd@dA ZdBdC ZdDdE Z dFdG ZdHdI ZdJdK ZdLdM ZdNdO ZdPdQ ZdRdS ZdTdU ZdVdW Z	dXdY Z
dZd[ Zd\d] Zd^d_ Zd`da Zdbdc Zddde Zdfdg Zdhdi Zdjdk Zdldm Zdndo Zdpdq Zdrds Zdtdu ZdS (v      N)Hashable)!AbsAddEFloatIIntegerMaxMinPolyPowPurePolyRationalSSymbolcosexplognanoopisignsimpsimplifysinsqrtsymbolssympifytrigsimptansstrdiffFunctionexpand	FiniteSet)
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)_dotprodsimp_state)iterable)TupleWild)KroneckerDelta)flattencapture)raisesXFAILslowskipwarns_deprecated_sympyQ)Array)MatPow)abcdxyztc                  C   s   t tD ]S\} }|dd}|jdkrtdd |jD sJ |jdkr+t|jtu s-J |jdkr9t|jtu s;J | d sMt|	 t
ttfv sLJ qt| tu sWJ qd S )N      )rW   rX   c                 s   s    | ]	}t |tu V  qd S N)typeint.0i r_   D/usr/lib/python3/dist-packages/sympy/matrices/tests/test_matrices.py	<genexpr>&   s    ztest_args.<locals>.<genexpr>)	enumerateclassesr:   shapeallrowsrZ   r[   colsflatlisttuplerA   todokdict)nclsmr_   r_   r`   	test_args"   s   "rp   c               	   C   s   t tfD ]&} | dd}t  |j}W d    n1 sw   Y  || ks*J qttfD ]&} | dd}t  |j}W d    n1 sHw   Y  ||	 ksUJ q/d S NrW   rX   )
r-   r+   r:   rJ   Z_matrh   r.   r,   Z_smatrk   )rn   ro   matZsmatr_   r_   r`   test_deprecated_mat_smat/   s   rs   c                  C   s8   t ddttg} | t t ddtt tt gksJ d S N   rX   )r-   rS   rT   rU   )vr_   r_   r`   test_division<   s   (rw   c                      s   t g dtttgdt dtt gg    t g ddt dt dt gdt ddt t ggks4J t ddddgtt fdd	 d S )
Nru   rX   rW   rX   i)rX         ry   iru   c                      s     S rY   r_   r_   ro   rm   r_   r`   <lambda>E       ztest_sum.<locals>.<lambda>)r-   rS   rT   rU   rF   r$   r_   r_   r{   r`   test_sumA   s   &Br~   c                  C   s8   t dddtg} t dddttg}t| |ksJ d S )Nru   rX   rW   )r-   rS   r   absr{   r_   r_   r`   test_absG   s   r   c                  C   sJ   t d} t d}| | | |  kr t ddgddggks#J  J d S )N)ru   rX   rW   ru   r   )rW   r   rX   ry   rz   ru   )r-   addrO   rP   r_   r_   r`   test_additionL   s   :r   c               	   C   s  t tfD ].} | ddtd}||d d d d f ksJ |dd d f t ddg dks/J |d d df t g dks?J |ddgd d f t g dg dgksUJ |ddgdf |ddgdgf kshJ |dddgf |dgddgf ks{J |d d ddgf t ddgdd	gd
dggksJ |d dksJ |ddd d f t g dg dgksJ |d d ddf t ddgdd	gd
dggksJ |d d ddf |ddgdf ksJ |dd d df |dddgf ksJ | ddtd}|g dd d f t g dg dg dg dg dgksJ |d d g df t g dg dg dgks3J qtd}d|d< d|d< d	|d< |ddgdgt dgdggksYJ |ddgg dt g dg dgkspJ |g dg dt g dg dg dg dgksJ d S )NrW   	   ru   rW   ry      )ru   ry      r   r   ru   rX   rX   ry   rz   r   r   r   )r   rX   ru   rX   ru   )rz   r      )rW   r   ry   r   ry   )rz   r   r   r   r   r   r   ru   rX   r   )rX   rX   rX   r   r   r   )ru   r   ru   rX   )rX   r   ru   r   rX   r   r   r   )r   r   rW   r   )r   ry   r   ry   )r-   r.   ranger:   extract)MrO   r_   r_   r`   test_fancy_index_matrixZ   sZ   $ ,&&2,2&&
r   c                     s8  t d t d  } | d dksJ | d dksJ | d dks$J | d	 dks,J | d
 dks4J | d dks<J ztd W n	 tyK   Y n1w | d dksTJ | d dks\J | d dksdJ | d	 dkslJ | d
 dkstJ | d dks|J t | }| | ksJ |d dksJ |d dksJ |d dksJ |d	 dksJ |d
 dksJ |d dksJ tt fdd td } t| t sJ | d t	ksJ | d dt	 ksJ | d dt	 ksJ | d	 dksJ t	 }| |ksJ d } t| t sJ | d dksJ | d dksJ | d dks&J | d	 dks/J ztd W n
 ty?   Y n-w t| t sHJ | d dksQJ | d dksZJ | d dkscJ | d	 dkslJ t t
dgdt
gg}|d |ksJ t t
t
gddgg}|d t ttgttggksJ d S )N)r   r   r   rz   r   r   r   r   rX   ru   r   rz   ru   ru   r      rX   ru   r   z	c = a @ bry   c                      s
   t  S rY   )r3   r_   r   r_   r`   r|         
 z%test_multiplication.<locals>.<lambda>rS   rW   r   
      z	c = 5 @ b)r-   evalSyntaxErrorr3   Zmultiply_elementwiserF   r$   r   
isinstancerS   r   r   )rQ   hZc2r   r_   r   r`   test_multiplication   sr   
&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s3J  d d d  g dksAJ tg dg dg dg  d d d  g dks\J  d tdksfJ  d  ksnJ tdggd d dd ks~J tdd tdksJ tddgddggtd tddgddggksJ tddgddgg  tj d d  g dksJ tddgd dgg  tj d  ksJ tddgddggtj tddgtjdggksJ tddgddggd! td"dgd!d"ggksJ dd#lm	}m
}m td|gddgg td| gddggks*J t||gd|gg t| ||d    gd| ggksOJ t| |d   | d  |   d|d   gd| |d   gdd| ggsJ t|ddgd|dgdd|gg t| |d   dgd| dgdd| ggksJ tddgddgg  td dksJ tdgg  d td$gg  kr td  kr dksJ  J tg d%g d&g d'g d(g d)gt tfd*d t td+d  tg d,g d-g d.g  d/ tg d.g d.g d.gks>J t t fd0d t t fd1d td	dgddgg  d/ td2d3gd4d5ggkskJ tg d-g d-g d-g  d/ tg d-g d-g d-gksJ tg d,g d-g d-g  d/ tg d-g d-g d-gksJ td6d7d8t  tsJ 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g d-gksJ  d  tg d-g d-g d-gksJ t t fd<d tg d-g d=g d>g  d? tg d@g dAg dBgksDJ  d?  d ksOJ tg d,g dCg d.g td6  d  d kssJ t tfdDd   d  ksJ tg d.g d.g d.g td6d7d7dE   ksJ td6d7d7d;  td d d ksJ   dtdksJ   dtdksJ tg dFg dGg dHg  dI tdJdJdJksJ  t tdt dt dt ksJ tg d,g d-g d-g t t fdKd t t fdLd ttjtjgtjtjgg  tj  ksCJ 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sgJ d S )MNc                   S   s   t dd S Nr   rX   r-   r_   r_   r_   r`   r|          ztest_power.<locals>.<lambda>rX   rW   ry   r   r   ir      3   i)i  i  i,*  i7  )rX   ru   rW   )ry   rX   ry   )rz      ru   )	i"  i     i  i  ip  i  i  i  r   ru   d   r   i r   r   r      !      0   9   )r   rX   ry   r         ?      ?)rO   rP   rm   i   )rW   r   r   r   r   )r   r   r   r   rW   )r   rW   r   rW   r   )r   r   rW   r   rW   )rW   r   r   rW   r   c                      s     tdS Nr   )_matrix_pow_by_jordan_blocksr   r_   ro   r_   r`   r|          c                   S   s   t ddgddggtdS )Nru   rW   )r-   r   r   r_   r_   r_   r`   r|      s    r   ru   r   r   r   ru   r         $@c                          d S N @r_   r_   Ar_   r`   r|     r}   c                          t dd S rq   r   r_   r   r_   r`   r|     r   ihiO<iv0irm   T)integer)r   negativec                      s     S rY   r_   r_   )r   rm   r_   r`   r|     r}   )r   Znonnegativec                      r   rq   r   r_   r   r_   r`   r|     r   )rW   r   ru   )ry   rW   ru   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                      s     d S )N)subsdoitr_   )Anrm   r_   r`   r|         )r   positiverX   r   r   )r   rX   r   r   r   rX   r   gd%%@c                      r   r   r_   r_   r   r_   r`   r|   ,  r}   c                      s    t  S rY   r   r_   r   r_   r`   r|   -  r}   )rF   r&   r   r-   r1   r   r   Half	sympy.abcrO   rP   rm   r   Z_eval_pow_by_recursionr%   
ValueErrorr   r   rN   rC   r   r   r0   r:   r   )RrO   rP   r_   )r   r   ro   rm   r`   
test_power   s   @ 4426J<$0&("((*,(&&8r   c                  C   s   t dt dt gdt dt gg} tdE |   t tdt td d tdt  td d gtdt  td d tdt td d ggksSJ W d    d S 1 s^w   Y  d S )Nru   TrX   )r-   rS   r>   r   r"   r   r_   r_   r`   $test_issue_17247_expression_blowup_14  s   $
00"r   c                  C   sr   t dt dt gdt dt gg} td |  \}}|| |  s'J W d    d S 1 s2w   Y  d S Nru   T)r-   rS   r>   jordan_forminvr   PJr_   r_   r`   $test_issue_17247_expression_blowup_2;  s
   $
"r   c                  C   s   t dt dt gdt dt gg} td1 | d t dtd  d ddtd   gddtd   dtd  d ggks?J W d    d S 1 sJw   Y  d S )Nru   Tr   l                )r-   rS   r>   r   r_   r_   r`   $test_issue_17247_expression_blowup_3A  s   $
"r   c                  C   sR   t td} td | d t tdksJ W d    d S 1 s"w   Y  d S )Na1  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128]]Tr   a  [
            [     7369525394972778926719607798014571861/604462909807314587353088 - 229284202061790301477392339912557559*I/151115727451828646838272,   -19704281515163975949388435612632058035/1208925819614629174706176 + 14319858347987648723768698170712102887*I/302231454903657293676544,      -3623281909451783042932142262164941211/604462909807314587353088 - 6039240602494288615094338643452320495*I/604462909807314587353088,    109260497799140408739847239685705357695/2417851639229258349412352 - 7427566006564572463236368211555511431*I/2417851639229258349412352, -16095803767674394244695716092817006641/2417851639229258349412352 + 10336681897356760057393429626719177583*I/1208925819614629174706176,    -42207883340488041844332828574359769743/2417851639229258349412352 - 182332262671671273188016400290188468499*I/4835703278458516698824704],
            [50566491050825573392726324995779608259/1208925819614629174706176 - 90047007594468146222002432884052362145*I/2417851639229258349412352,  74273703462900000967697427843983822011/1208925819614629174706176 + 265947522682943571171988741842776095421*I/1208925819614629174706176, -116900341394390200556829767923360888429/2417851639229258349412352 - 53153263356679268823910621474478756845*I/2417851639229258349412352, 195407378023867871243426523048612490249/1208925819614629174706176 - 1242417915995360200584837585002906728929*I/9671406556917033397649408,   -863597594389821970177319682495878193/302231454903657293676544 + 476936100741548328800725360758734300481*I/9671406556917033397649408, -3154451590535653853562472176601754835575/19342813113834066795298816 - 232909875490506237386836489998407329215*I/2417851639229258349412352],
            [   -1715444997702484578716037230949868543/302231454903657293676544 + 5009695651321306866158517287924120777*I/302231454903657293676544,     -30551582497996879620371947949342101301/604462909807314587353088 - 7632518367986526187139161303331519629*I/151115727451828646838272,           312680739924495153190604170938220575/18889465931478580854784 - 108664334509328818765959789219208459*I/75557863725914323419136,    -14693696966703036206178521686918865509/604462909807314587353088 + 72345386220900843930147151999899692401*I/1208925819614629174706176,  -8218872496728882299722894680635296519/1208925819614629174706176 - 16776782833358893712645864791807664983*I/1208925819614629174706176,      143237839169380078671242929143670635137/2417851639229258349412352 + 2883817094806115974748882735218469447*I/2417851639229258349412352],
            [   3087979417831061365023111800749855987/151115727451828646838272 + 34441942370802869368851419102423997089*I/604462909807314587353088, -148309181940158040917731426845476175667/604462909807314587353088 - 263987151804109387844966835369350904919*I/9671406556917033397649408,   50259518594816377378747711930008883165/1208925819614629174706176 - 95713974916869240305450001443767979653*I/2417851639229258349412352,  153466447023875527996457943521467271119/2417851639229258349412352 + 517285524891117105834922278517084871349*I/2417851639229258349412352,  -29184653615412989036678939366291205575/604462909807314587353088 - 27551322282526322041080173287022121083*I/1208925819614629174706176,   196404220110085511863671393922447671649/1208925819614629174706176 - 1204712019400186021982272049902206202145*I/9671406556917033397649408],
            [     -2632581805949645784625606590600098779/151115727451828646838272 - 589957435912868015140272627522612771*I/37778931862957161709568,     26727850893953715274702844733506310247/302231454903657293676544 - 10825791956782128799168209600694020481*I/302231454903657293676544,      -1036348763702366164044671908440791295/151115727451828646838272 + 3188624571414467767868303105288107375*I/151115727451828646838272,     -36814959939970644875593411585393242449/604462909807314587353088 - 18457555789119782404850043842902832647*I/302231454903657293676544,      12454491297984637815063964572803058647/604462909807314587353088 - 340489532842249733975074349495329171*I/302231454903657293676544,      -19547211751145597258386735573258916681/604462909807314587353088 + 87299583775782199663414539883938008933*I/1208925819614629174706176],
            [  -40281994229560039213253423262678393183/604462909807314587353088 - 2939986850065527327299273003299736641*I/604462909807314587353088, 331940684638052085845743020267462794181/2417851639229258349412352 - 284574901963624403933361315517248458969*I/1208925819614629174706176,      6453843623051745485064693628073010961/302231454903657293676544 + 36062454107479732681350914931391590957*I/604462909807314587353088,  -147665869053634695632880753646441962067/604462909807314587353088 - 305987938660447291246597544085345123927*I/9671406556917033397649408,  107821369195275772166593879711259469423/2417851639229258349412352 - 11645185518211204108659001435013326687*I/302231454903657293676544,     64121228424717666402009446088588091619/1208925819614629174706176 + 265557133337095047883844369272389762133*I/1208925819614629174706176]])r-   r   r>   r   r_   r_   r`   $test_issue_17247_expression_blowup_4H  s   
"r   c                  C   s   t dddd } td+ | dttd ddt  td   dt td	   td
dks/J W d    d S 1 s:w   Y  d S )Nrz   c                 S      dd| |  t   S Nru   r   r   r^   jr_   r_   r`   r|   u      z6test_issue_17247_expression_blowup_5.<locals>.<lambda>TrS   r   $   ry   ZEXdomain)r-   r>   charpolyr   rS   r   r   r_   r_   r`   $test_issue_17247_expression_blowup_5t  s   
F"r   c                  C   Z   t dddd tdD } td | ddksJ W d    d S 1 s&w   Y  d S )Nr   c                 S      g | ]}t | qS r_   rS   r\   r_   r_   r`   
<listcomp>z  r   z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>@   TZbareissr   r-   r   r>   detr   r_   r_   r`   $test_issue_17247_expression_blowup_6y     
"r   c                  C   sP   t dddd } td | ddksJ W d    d S 1 s!w   Y  d S )Nrz   c                 S   r   r   r   r   r_   r_   r`   r|     r   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>T	berkowitzr   )r-   r>   r   r   r_   r_   r`   $test_issue_17247_expression_blowup_7~  s   
"r   c                  C   r   )Nr   c                 S   r   r_   r   r\   r_   r_   r`   r     r   z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>r   TZlur   r   r   r_   r_   r`   $test_issue_17247_expression_blowup_8  r   r   c                  C   s   t dddd tdD } td- |  t g dg dg dg dg dg dg dg dgd	fks6J W d    d S 1 sAw   Y  d S )
Nr   c                 S   r   r_   r   r\   r_   r_   r`   r     r   z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>r   T)ru   r   r   r   r   r   r   ru   rX   rW   ry   r   rz   r   r   r   r   r   r   r   r   r   r   )r-   r   r>   rrefr   r_   r_   r`   $test_issue_17247_expression_blowup_9  s   
"r   c                  C   sR   t dddd } td | dddksJ W d    d S 1 s"w   Y  d S )Nrz   c                 S   r   r   r   r   r_   r_   r`   r|     r   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>Tr   )r-   r>   Zcofactorr   r_   r_   r`   %test_issue_17247_expression_blowup_10  s   
"r  c                  C   s\   t dddd } td |  t dddgd ksJ W d    d S 1 s'w   Y  d S )Nrz   c                 S   r   r   r   r   r_   r_   r`   r|     r   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>Tr   r   )r-   r>   Zcofactor_matrixr   r_   r_   r`   %test_issue_17247_expression_blowup_11  s   
 "r  c                  C   s^   t dddd } td |  dddt dddiksJ W d    d S 1 s(w   Y  d S )Nrz   c                 S   r   r   r   r   r_   r_   r`   r|     r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Tru   r   ry   )r-   r>   Z	eigenvalsr   r   r_   r_   r`   %test_issue_17247_expression_blowup_12  s   
""r  c               	   C   sz  t ddt td dt gdt td dtd gddt td dt gdddt dgg} |  }|d ddt g dgfks@J |d d ttdtd   d ksTJ |d d dks^J |d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggksJ |d d ttdtd   d ksJ |d d dksJ |d d d jdddt t tdtd   d td  gdt td dt  d  td ttdtd   d  td dt  d   gt tdtd   d td  gdggks;J d S )	Nr   ru   rX   )r   r   r   ru   FT)ZdeepZnumerr   )r-   rS   Z
eigenvectsr   r"   )r   Zevr_   r_   r`   %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O |  t td dt td dt td dt td dt gddt ddt ddt ddt gg dg dg dg dg dg dgkseJ W d    d S 1 spw   Y  d S )Nr   ru   ry   Tr   r   )r-   rS   r>   Zechelon_formr   r_   r_   r`   %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A |  t td dt td dt td dt td dt ggt ddt ddt ddt ddt gggksWJ W d    d S 1 sbw   Y  d S )Nr   ru   ry   Tr   )r-   rS   r>   Zrowspacer   r_   r_   r`   %test_issue_17247_expression_blowup_15  s   4
r"r  c                  C   s   t dddt dt gd dt dt gd  d } tdW |  t td gdt gtd gdt gtd gdt gtd gdt ggt dt gtd gdt gtd gdt gtd gdt gtd gggksmJ W d    d S 1 sxw   Y  d S )Nr   ru   ry   T)r-   rS   r>   Zcolumnspacer   r_   r_   r`   %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sJ W d    d S 1 sw   Y  d S )Nr   c                 S   r   r_   r   r\   r_   r_   r`   r     r   z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>r   Tru   r   r   rX   r   rW   r   ry   r   r   r   rz   )r-   r   r>   Z	nullspacer   r_   r_   r`   %test_issue_17247_expression_blowup_17  s   
&&&&&&"r	  c                  C   sn   t dddt dt gd dt dt gd  d } td |  r%J W d    d S 1 s0w   Y  d S )Nrz   ru   rW   T)r-   rS   r>   is_nilpotentr   r_   r_   r`   %test_issue_17247_expression_blowup_18  s   4
"r  c                  C   sF   t td} td |  rJ W d    d S 1 sw   Y  d S )Nay  [
        [             -3/4,                     0,         1/4 + I/2,                     0],
        [                0, -177/128 - 1369*I/128,                 0, -2063/256 + 541*I/128],
        [          1/2 - I,                     0,                 0,                     0],
        [                0,                     0,                 0, -177/128 - 1369*I/128]]T)r-   r   r>   is_diagonalizabler   r_   r_   r`   %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C |  t dddtd td  gg dg dg dgt g dddt ddgddtd dgdddtd ggfksgJ W d    d S 1 srw   Y  d S )	Nru   r   T)ru   r   r   r   ru   ru   ru   r   r   r   r   ru   r   rX   )r-   rS   r>   diagonalizer   r_   r_   r`   %test_issue_17247_expression_blowup_20  s*   
"r  c                  C   V   t td} td | jddt tdksJ W d    d S 1 s$w   Y  d S )N  [
        [             -3/4,       45/32 - 37*I/16,                   0,                     0],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,                   0, -2063/256 + 541*I/128],
        [                0,         9/4 + 55*I/16, 2473/256 + 137*I/64,                     0],
        [                0,                     0,                   0, -177/128 - 1369*I/128]]T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   r   r_   r_   r`   %test_issue_17247_expression_blowup_21     
"r  c                  C   r  )Nr  TLUr  r  r  r   r_   r_   r`   %test_issue_17247_expression_blowup_22  r  r  c                  C   sZ   t td} td | jdd t tdksJ W d    d S 1 s&w   Y  d S )Nr  TADJr  r  )r-   r   r>   r   r"   r   r_   r_   r`   %test_issue_17247_expression_blowup_23  s   
""r  c                  C   V   t td} td | jddttdksJ W d    d S 1 s$w   Y  d S )Nr  TCHr  r  r.   r   r>   r   r-   r   r_   r_   r`   %test_issue_17247_expression_blowup_24)  r  r"  c                  C   r  )Nr  TLDLr  r  r!  r   r_   r_   r`   %test_issue_17247_expression_blowup_256  r  r$  c                  C   J   t td} td |  dksJ W d    d S 1 sw   Y  d S )Na  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64,         -9/32 - I/16,      183/256 - 97*I/128],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512, -219/128 + 115*I/256, 6301/4096 - 6609*I/1024],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,         1/4 - 5*I/16,        65/128 + 87*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,     85/256 - 33*I/16,    805/128 + 2415*I/512],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,            1/4 + I/2,        -129/64 - 9*I/64],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,     125/64 + 87*I/64,   -2063/256 + 541*I/128],
        [               -2,         17/4 - 13*I/2,             1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,                 -3/4,         45/32 - 37*I/16],
        [     1/4 + 13*I/4,    -825/64 - 147*I/32,          21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64,    -149/64 + 49*I/32,   -177/128 - 1369*I/128]]Try   r-   r   r>   rankr   r_   r_   r`   %test_issue_17247_expression_blowup_26C  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' |  \}}| t td ksEJ |t tdksOJ W d    d S 1 sZw   Y  d S )Nr   ru   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-   rS   r>   r   r"   r   r   r_   r_   r`   %test_issue_17247_expression_blowup_27P  s   
"r)  c                  C   sN   t td} td |  tdksJ W d    d S 1 s w   Y  d S )Nr  Ta  [
            sqrt(14609315/131072 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2)])r-   r   r>   Zsingular_valuesr   r_   r_   r`   %test_issue_17247_expression_blowup_28c  s   
"r*  c                  C   r%  )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   r_   r_   r`   test_issue_16823q  s   
"r+  c                  C   sH  t g ddtd dtd dtd td d dddddg	ddtd  ddtd  ddtd  ddtd  dddddg	d	td d dd
td  dd
td  dd
td  ddddd
g	ddtd  dtd d dtd d ddtd  dddddg	dd
td  dd
td  d	td d dd
td  ddddd
g	d	dtd  d	dtd  d	dtd  d	dtd  dddddg	dtd td d dtd dtd dddddg	g} td. |  t g dg dg dg dg dg dg dg dgdfksJ W d    d S 1 sw   Y  d S )N)	ru   ru   ru   ru   ru   r   ru   r   r   ru   rX   r   r   r  r   r   r   rW   r   ry   r   T)	ru   r   r   r   r   r   r   r   r   )	r   ru   r   r   r   r   r   r         )	r   r   ru   r   r   r   r   r   r   )	r   r   r   ru   r   r   r   r   r-  )	r   r   r   r   ru   r   r   r   r   )	r   r   r   r   r   ru   r   r   r-  )	r   r   r   r   r   r   ru   r   r   )	r   r   r   r   r   r   r   ru   r-  r   )r-   r   r>   r   r   r_   r_   r`   test_issue_18531  s0   6DDDDD6

$r.  c            
      C   s  t tdd  t tdd  t tdd  t t dtdd< W d    n1 s*w   Y  t tg   krItg g  krItddg ksLJ  J t  td	gd
gg d	gd
ggksbJ W d    n1 slw   Y  t  td	gd
ggj d	ggd
ggksJ W d    n1 sw   Y  tdgg} t  tj| d< W d    n1 sw   Y  tt	dgddgg}|}|j
|jksJ |j
dksJ |d d  t	dddgksJ tddt	dddg}|}|j
|jksJ |j
dksJ |d d  t	dddgks	J ||ksJ t||ksJ tddtd	d}td	dtdd}t||g}|j
dks9J |jdksAJ |d d  g dksNJ ttdtdks[J tttdttdkslJ t|| kswJ tt|t| ksJ |t|usJ tddtddd gtddd tddd gg}t|} | tg dg dg dg dg dgksJ |  |ksJ t|dd |ksJ tddd}td|g}t|td	d	gd	d	g|d |d g|d |d ggksJ t  t|dd dd |D ksJ W d    n	1 s'w   Y  ttdtdgttdgks@J 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spJ d S )Nc                   S   s   t ddtdS )Nr      )r-   r   r_   r_   r_   r`   r|     r   ztest_creation.<locals>.<lambda>c                   S   s   t ddg S )Nr   r   r   r_   r_   r_   r`   r|     r   c                   S      t dd S r   r   r_   r_   r_   r`   r|     r   r   r   rW   r   ru   )rX   r   rX   r   r   	ru   rX   rW   ry   r   rz   r   r   r   ry   )ru   ru   rX   rX   rX   )rW   rW   rW   ry   ry   FZevaluater   r   r   r   c                 S   s   g | ]}|gqS r_   r_   r\   r_   r_   r`   r         z!test_creation.<locals>.<listcomp>c                   S      t tdtddgS )NrX   r   rW   r-   r4   r_   r_   r_   r`   r|         c                   S   r4  )NrX   rW   r   r5  r_   r_   r_   r`   r|     r6  )r   rz   rz   )rF   r   
IndexErrorr-   rJ   tolistTr   ZEmptySetrS   rg   rf   r   r1   r+   as_immutable
as_mutabler4   r=   )
r   rO   ro   rP   Zc23Zc13rQ   datr   ZM2r_   r_   r`   test_creation  s   
:&*"4&((r=  c                   C   s   t dtddtddd tddd tddd tddd tddd tddd t g dg dg d	g d
gks?J d S )NrW   rX   ru   ry   r   rz   r   )ru   rX   rX   rX   rW   rW   )ry   rX   rX   rX   r   r   )rz   rz   r   r   r   r   )r-   Z	irregularr4   r_   r_   r_   r`   test_irregular_block  s   &0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s(J d S )NrX   rW   )	r   Oner   rS   rT   ZerorU   r-   r8  )Zlstro   r_   r_   r`   test_tolist  s   8rA  c                   C   s`   t dd t ddksJ t dd tt ddksJ t dd tt ddks.J d S Nr   rW   )r:   r;  r:  r+   r_   r_   r_   r`   test_as_mutable  s    $rC  c                  C   s  t d} | d dd df t dksJ | ddddf tdks$J tdddd }|dd d f tdddks<J |dddf tddd	ksLJ tg d
g dg dg dg}|d d df tddg dksnJ |dd d d f tg dg dgksJ d S )Nry   rW   rX   r   c                 S      | | S rY   r_   r   r_   r_   r`   r|     r}   ztest_slicing.<locals>.<lambda>ru   r   rX   rW   )r   ru   rX   rW   )ry   r   rz   r   )r   r   r      )r         r   r   )rW   r   rF  r   r   )r1   r:   r-   )m0m1m2r_   r_   r`   test_slicing   s        $0rL  c                  C   s   t d} td| ddddf< | tdksJ td| d dd df< | tdks,J tddd| d d df< | tdks@J t d| d d d d f< | t dksTJ g d| d d d d f< | tdkshJ ddg| d ddf< | td	kszJ d S )
Nry   rX   )r   r   r   r   rM  r   r   ru   r   r  ru   ru   rX   rW   ry   r   )ru   r   r   r   )rX   ru   r   r   )rW   r   ru   r   )ry   r   r   ru   rO  r   rz   r   r   r   r   rF  r   rG  rH  r      ))r   rX   rW   ry   )r   rz   r   r   rS  rT  )r:   r1   r-   r   r_   r_   r`   test_submatrix_assignment  s   rV  c                      s   t dddd   g dddgt ddg d	ksJ  ddgg d
t ddg dks0J  tdtd ks>J tt fdd tt fdd d S )Nry   rW   c                 S   s   | d | S NrW   r_   r   r_   r_   r`   r|   +  r   ztest_extract.<locals>.<lambda>)r   ru   rW   r   ru   rX   )r   ru   rW   ry   r   r   r   )r   r   rX   r   r   rF  c                           dgdgS )Nry   r   r   r_   r   r_   r`   r|   /  r   c                      rX  rB  rY  r_   r   r_   r`   r|   0  r   )r-   r   r   rF   r7  r_   r_   r   r`   test_extract*  s   ((rZ  c                  C   sh   t d} | ddtdddksJ tdddd }|ddtdks&J |d	d
tdks2J d S )NrW   ru   r   )	ru   r   r   r   ru   r   r   r   ru   ry   c                 S   rD  rY   r_   r   r_   r_   r`   r|   6  r}   ztest_reshape.<locals>.<lambda>)r   rW   ru   rX   )rW   ry   rX   r   rX   rz   ))r   ru   rX   rW   ru   rX   )rW   ry   rX   rW   ry   r   )r1   reshaper-   rI  rJ  r_   r_   r`   test_reshape3  s   r^  c                  C   sD   t d} | dd t dd ksJ | dd tdks J d S )NrW   c                 S   s   d|  S NrX   r_   r   r_   r_   r`   r|   >  r}   z test_applyfunc.<locals>.<lambda>rX   c                 S      dS Nr   r_   r   r_   r_   r`   r|   ?      )r1   	applyfuncr:   )rI  r_   r_   r`   test_applyfunc<  s   rd  c                  C   s   t ttt  dgtt t t ttttt    gg} |  }|t tt td  dgttd  ttd   tt ttd   td  ggksJJ tddd}t tt| gjddt t|tt|  gkslJ t g dg dg d	g t d
d
t	ddgg dg dgksJ d S )NrX   rW   rO   Treal)complexr   )r   r   r   r   ru   )r   ru   r   r   )
r-   rS   rT   r"   r   r   r   r   r   r   )rI  rJ  rO   r_   r_   r`   test_expandB  s   8F
rh  c                  C   s@  t ttd ttd gttd ttd  ttd ttd  gg} | tttt@ }|t td ttgtd tt td tt ggksQJ | tttt@ }|t td tgttd  td t ggksvJ | t	tt	t@ }|t td t gt td  td  t ggksJ d S r_  )
r-   r   rS   r   rT   ZrefinerL   rf  r   r   r]  r_   r_   r`   test_refineT  s   .<0:ri  c                  C   s0  t dd} t dddd} | t ddddksJ t dddd} t dddd} | t ddddks0J |  }|  || ks>J td}| t dd|dksNJ d	D ]}d
D ]}t |d||d} | | jkseJ qTqPt dddd} d}t| jd D ]}t| jd D ]}| ||f dkr|d7 }qqw|dksJ d S )NrW   )seedry   r      T)rj  	symmetric)rl  prng)r   rF  )r   F      )rl  percentrm  r   ru   rn  )minrp  ro  )r5   copyr   randomZRandomr9  r   rd   )r   r   rngsizerp  Z
zero_countr^   r   r_   r_   r`   test_random`  s2   

rv  c                     sr  t d} |  t dksJ | jddt dksJ | jddt dks&J | jddt dks2J | jddt dks>J | jddt dksJJ tg dg d	g d
g} |  }| | t dkseJ | jdd|ksoJ | jdd|ksyJ | jdd|ksJ | jdd|ksJ | jdd|ksJ tg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg dg d g d!g d"g d#g d$g}|jd%d| t |jd& ksJ t  g d'g d(g d)gt fd*d+d, D sJ t  g d'g d(g d)gt fd-d+d, D s7J d S ).Nry   r  r  r  r   r#  ZQR)rX   rW   r   )rW   rz   rX   )r   rW   rz   rW   )r   r   r   r   ru   r   r   ru   r   ru   ru   ru   r   r   r   ru   ru   r   r   r   r   ru   ru   r   r   )ru   r   ru   r   r   ru   r   r   ru   r   ru   r   ru   ru   ru   r   ru   ru   r   r   r   r   r   ru   r   )ru   ru   ru   ru   r   ru   r   r   ru   ru   r   r   r   ru   ru   ru   ru   r   r   ru   ru   r   r   ru   ru   )ru   r   r   r   r   r   ru   ru   r   r   ru   ru   ru   r   r   r   r   r   r   ru   r   r   ru   r   r   )ru   r   r   ru   ru   ru   r   ru   r   r   ru   r   r   ru   ru   ru   r   ru   r   r   r   ru   r   r   r   )ru   r   r   r   r   r   r   r   ru   ru   ru   r   ru   r   ru   ru   ru   ru   r   r   r   ru   ru   r   ru   )r   ru   ru   ru   r   r   r   r   ru   ru   ru   r   ru   r   ru   r   ru   r   ru   r   ru   r   r   ru   r   )ru   ru   r   r   r   ru   ru   r   r   ru   ru   r   ru   ru   r   ru   ru   r   ru   r   ru   ru   r   ru   ru   )r   r   ru   ru   ru   r   r   ru   ru   r   ru   ru   r   ru   r   r   r   r   r   r   ru   r   ru   r   ru   )ru   r   ru   ru   ru   r   ru   r   r   ru   ru   r   ru   ru   r   ru   ru   ru   ru   r   ru   ru   ru   r   r   )r   ru   ru   r   r   r   r   ru   ru   r   ru   r   ru   r   ru   ru   r   r   ru   r   r   r   ru   ru   r   )ru   r   r   ru   r   ru   r   ru   ru   r   r   ru   r   ru   r   ru   r   ru   r   ru   r   ru   ru   r   r   )r   ru   ru   r   r   ru   ru   r   r   ru   ru   r   ru   r   r   r   ru   r   r   ru   r   ru   ru   r   ru   )ru   ru   ru   r   ru   r   r   ru   r   r   ru   r   ru   ru   r   r   ru   ru   ru   r   ru   r   ru   ru   r   )r   ru   r   r   r   r   ru   ru   r   ru   ru   r   r   r   r   ru   r   ru   ru   ru   r   r   ru   r   r   )ru   ru   ru   ru   r   ru   ru   ru   ru   ru   ru   r   r   r   ru   r   ru   r   ru   r   r   ru   r   r   r   )r   r   r   ru   r   ru   ru   r   ru   r   r   r   r   r   ru   r   ru   ru   r   ru   r   ru   ru   r   ru   )r   ru   r   ru   r   r   r   r   ru   ru   ru   r   r   ru   ru   ru   r   r   ru   r   ru   ru   r   ru   ru   )ru   r   ru   ru   r   ru   r   ru   ru   r   ru   ru   ru   r   ru   r   r   r   r   ru   r   r   ru   r   ru   )r   r   r   ru   r   r   ru   ru   r   ru   ru   r   ru   r   ru   ru   r   r   r   r   r   r   r   r   r   )ru   r   r   r   r   ru   r   ru   r   r   ru   ru   r   ru   r   ru   ru   ru   ru   r   ru   ru   ru   ru   ru   )r   r   ru   ru   r   ru   r   r   r   ru   r   r   ru   r   r   ru   r   r   r   ru   r   ru   r   ru   ru   )r   r   r   r   r   ru   ru   ru   r   ru   ru   ru   r   r   r   ru   r   ru   ru   r   ru   ru   r   r   r   )r   r   ru   r   ru   ru   r   ru   ru   ru   r   r   ru   r   ru   r   r   ru   r   ru   r   r   r   r   r   )r   r   r   ru   ru   r   ru   ru   ru   r   r   ru   r   ru   r   ru   ru   r   ru   ru   ru   r   r   ru   r   ZBLOCKr   )r   1      )r   G   ^   );      A   c                 3   "    | ]}t | u V  qd S rY   rZ   r   r]   srn   ro   r_   r`   ra          ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   r~  rY   r  r  r  r_   r`   ra     r  )r1   r   r-   rd   r+   re   splitr,   )r   ZAinvZAAr_   r  r`   test_inverse~  sr   ""&r  c                     sT  t ddddg tt fdd t ddg d tt fdd t ddg d t ddg d	}  d
| ks;J t ddg d  d ksLJ t d
d
g d tt fdd t d
d
g d t d
d
g d}  d| ksvJ t d
d
g d t d
d
g d}  d| ksJ t d
d
g d t d
d
g d}  d| ksJ d S )NrX   ru   r   c                      
     dS r_  inv_modr_   r   r_   r`   r|     r   z)test_matrix_inverse_mod.<locals>.<lambda>rP  c                      r  r_  r  r_   r   r_   r`   r|     r   rO  )ru   ru   r   ru   rW   ru   r   r   ru   r1  c                      r  Nr   r  r_   r   r_   r`   r|     r   )	r   ru   rW   rX   rz   r   rX   ru   ru   )	rz   r   r   ru   r   rz   r   rz   ry   r   )	ru   rz   r   ry   ru   r   rW   r   r   )	ry   rW   rW   ru   rX   r   ru   r   ru   rz   )	ru   rz   ru   ry   ru   r   rW   rX   r   )	rz   r   rW   rz   rz   ry   ru   rz   ru   r   )r-   rF   r&   r   r  )ZAir_   r   r`   test_matrix_inverse_mod  s(   r  c                  C   s:  t ddtd t dtd  tt  g} ttg}| |t dt t td gtdt t ggks3J t ddttd td  g} | |t ddgdt td  td d td  ggks`J td t }ttg}t||t dt dt gdt dggksJ td td  }t||t dtd  dt td  gdt td  dtd  t ggksJ tttd   }td dtd   }t ddt gdt dt gg}|t|t ttgksJ |t|t ttgjksJ t|ttf|gt ddtd  dt gdtd  dt dt gdt dt dggksJ d S )Nru   rX   ry   rW   r   rz   )r-   rS   rT   jacobianr2   rU   r9  )LZsymsfgansr_   r_   r`   test_jacobian_hessian  s0   (6>.>r  c                  C   s2  t ttttgtttd ttd  ksJ t tttdt gttdt ks.J t tttgtttttt  ksCJ t dttd gtdksQJ dtt tt t dtt tt td   dtt tt t  tttt td   tttt td   } t tttttd gt | ksJ t tttttd gtdd | ksJ td  ttd  td ttd   dt ttd   dt ttd   }t tttttd gt |ksJ t tttttd gtdd |ksJ t g tdksJ d S )NrX   rW   ru   r   rz   r   r  )r9   r   rS   r   r   r"   )Zw1Zw2r_   r_   r`   test_wronskian  s&   2**J("R("
r  c                  C   sp  t dtgtdggtdt ddgddggksJ t tdgtt dggtdgtdggt ddgddggks;J t tdgtt dggtdftdfgt ddgddggks\J t tdgtt dggtdtdit ddgddggks{J t tt gjttd ttd idd	t td td  gksJ tD ]} t dd
gd
dgg| dddksJ qd S )Nru   ry   r   rX   r   r   r   T)Zsimultaneousr   )r-   rS   r   rT   rc   r1   rn   r_   r_   r`   	test_subs  s    4(($&,r  c                  C   s   t dtgtdggtdit ddgddggksJ t tdgtt dggtdtdit ddgddggks:J tD ]} t ddgddgg| dddiksTJ q<d S )	Nru   ry   r   rX   r   r   r   r   )r-   rS   ZxreplacerT   rc   r1   r  r_   r_   r`   test_xreplace
  s   $.r  c               
   C   s(  t d} td}tdt dt  ttt  t g|tt|t  |t dd|  t| t |    t gg}|  |ttt tt  dt gdt dddtt|    t|    ggksbJ dt d }t|gg}|  |t|ggks|J |jtd|k |t|jtdggksJ d S )Nrm   r  ru   rX   )Zratio)	r   r!   r-   rS   rT   r   r   r   r   )rm   r  r   eqr_   r_   r`   test_simplify  s    :& r  c                  C   s   t g dg dg} | jt ddgddgddgddgddgddgddgd	d	gd
d
gddgg
ks1J | jj| ks9J | j|  ksBJ d S )N)
ru   rX   rW   ry   r   rz   r   r   r   r   ru   rX   rW   ry   r   rz   r   r   r   r   )r-   r9  Z	transposer   r_   r_   r`   test_transpose#  s    
r  c                  C   s   t dtdgg dg} | jt ddgtdgddggksJ | jt dt dgg dgks.J | j|  ks7J | j| jjks@J | jt ddgt dgddggksSJ d S )Nr   r   )ru   rX   r   ru   rX   )r-   r   r9  C	conjugateHr   r_   r_   r`   test_conjugate4  s    
r  c               	   C   s~   t tdd  tdtttgddttgdddtgg dg} | jtg dt dddgt t ddgt t tdggks=J d S )Nc                   S   s
   t djS rW  )r1   Dr_   r_   r_   r`   r|   G  r   z!test_conj_dirac.<locals>.<lambda>ru   r   r  rP  r   )rF   AttributeErrorr-   r   r  r   r_   r_   r`   test_conj_diracF  s   

r  c                  C   s.   t g dg dg dg} |  dksJ d S )Nru   r   r   )r   r   r   )r   r   r   rH  r-   tracer   r_   r_   r`   
test_traceT  s
   r  c                  C   s*   t tddgdtdgg} | jdksJ d S )Nr   rE  )r-   rS   rT   rd   r   r_   r_   r`   
test_shape[  s   
r  c                  C   sn  t tddgdtdgg} | ddd  | t tddgdtd dggks&J | ddd  | t td ddgdt td dggksDJ | dt td ddggksUJ | d}d|d< | d	 td kshJ | dd d
f }d|d< | d	 td ks~J | d}|t td dt gksJ d|d< | d	 td ksJ | d d df }d|d< | d	 td ksJ d S )Nr   ru   c                 S   s   | | d S Nru   r_   )rr   r_   r_   r`   r|   d  r   z!test_col_row_op.<locals>.<lambda>rX   rW   c                 S   s   | t |  S rY   )rT   )rQ   r   r_   r_   r`   r|   h  r   *   r   r   )r-   rS   rT   Zrow_opZcol_oprowcol)r   Zr1Zc1r_   r_   r`   test_col_row_opa  s2   
"

r  c                  C   s   t d d D ]H} | d}|dddd  || g dg dg d	gks'J | dd }d
|d< |dddd  | || g dg dg dgksNJ qd S )NrX   rW   ru   r   c                 S      | d|  S r_  r_   rv   ur_   r_   r`   r|     r   z!test_zip_row_op.<locals>.<lambda>r  rX   ru   r   r   r   r   c                 S   r  r_  r_   r  r_   r_   r`   r|     r   )rX   r   r   )ry   r   r   r   )rc   r1   Z
zip_row_op)rn   r   r_   r_   r`   test_zip_row_op~  s   


r  c                  C   sd   t g d} t g d}t g d}| dvsJ | dvsJ | dks$J | |ks*J | |ks0J d S )Nrx   )rX   rX   rW   r_   )ru   ru   r   )ro   rO   rP   r_   r_   r`   test_issue_3950  s   r  c                  C   s  G dd d} G dd d}|  }| }t g d}|| dks"J d||< |d dks.J t g dg d	g}|||f d
ksBJ |d|f d
ksLJ ||df d
ksVJ d|||f< |d dksdJ d
|d|f< |d d
ksrJ d||df< |d dksJ d S )Nc                   @      e Zd Zdd ZdS )ztest_issue_3981.<locals>.Index1c                 S   r`  r  r_   selfr_   r_   r`   	__index__     z)test_issue_3981.<locals>.Index1.__index__N__name__
__module____qualname__r  r_   r_   r_   r`   Index1      r  c                   @   r  )ztest_issue_3981.<locals>.Index2c                 S   r`  r_  r_   r  r_   r_   r`   r    r  z)test_issue_3981.<locals>.Index2.__index__Nr  r_   r_   r_   r`   Index2  r  r  rx   rW   r   rX   ry   r   rz   rz   ru   ry   r   r   r   )r  r  Zindex1Zindex2ro   r_   r_   r`   test_issue_3981  s$   r  c                      sn   t tddg t fddtdD sJ t fddtdD s&J t fddtdD s5J d S )Nr   rz   c                 3   s(    | ]}   |  |   kV  qd S rY   evalfr\   rO   r_   r`   ra     s   & ztest_evalf.<locals>.<genexpr>rX   c                 3   ,    | ]}  d |  |  d kV  qdS rX   Nr  r\   r  r_   r`   ra        * c                 3   r  r  rm   r\   r  r_   r`   ra     r  )r-   r   re   r   r_   r_   r  r`   
test_evalf  s   "r  c                  C   s   t ttgttgg} |  du sJ t g dg dg} |  du s$J t g dddtdgg} |  du s8J t dtd	gg} |  du sHJ t g d
g} |  du sWJ t dgtgd	gg} |  du siJ t dgdgd	gg} |  du s{J d S )NTrO  rR  Fr   rz   r   ru   rW   rx   rX   )r-   rS   Zis_symbolicr  r_   r_   r`   test_is_symbolic  s   r  c                  C   sZ   t g dg} | jdu sJ t dgdgdgg} | jdu sJ tdd} | jdu s+J d S )Nrx   Tru   rX   rW   Fry   )r-   Zis_upperr:   r  r_   r_   r`   test_is_upper  s   
r  c                  C   sB   t g dg} | jdu sJ t dgdgdgg} | jdu sJ d S )Nrx   Fru   rX   rW   T)r-   is_lowerr  r_   r_   r`   test_is_lower  s   r  c                  C   sT   t ddg d} |  sJ t ddgddgg} |  rJ t g } |  s(J d S )Nry   )r   rX   ru   rz   r   r   ru   rX   r   r   r   rW   r   r   r   r   ru   r   r-   r
  r  r_   r_   r`   test_is_nilpotent  s   r  c                  C   s"  d\} }t | |}|d dt| | }||ksJ |j|j  kr(dks+J  J |j|j  kr8dks;J  J |j|j  krHdksKJ  J t dt ddksVJ tdtddksaJ t ddtdddgd ksqJ tddtdddgd ksJ |d |t | |ksJ d S )N)rW   r   r   rW   rX   r   rz   ru   )r:   fillr4   rf   rg   rd   r-   )rm   ro   rO   rP   r_   r_   r`   test_zeros_ones_fill  s   

     
r  c                  C   sf   t d} | t ksJ t dd} | jdksJ | jdksJ t dd} | jdks*J | jdks1J d S )Nr   rX   )r:   r-   rf   rg   r  r_   r_   r`   test_empty_zeros  s   

r  c                  C   s  t td tt gttt ttt gg} | tt dt tgttttggks-J t tt td gttdt tt  tdt  ggttt tt tgtdtggks\J t ttd t dt tt  tt gdt t	tt	ttd ggtdt g dtdtdggksJ | 
tt tddtd  ttd  d gtd tt d td tt d ggksJ d S )NrX   ru   r   )ru   r   ru   rW   )r-   rS   rT   r   r   r    r   limitr   r   	integrater   r  r_   r_   r`   test_issue_3749  s(   ,."$
 &r  c                  C   sD   t d} | dd dD ]}| j|dd d| jdd	ksJ qd S )
Nry   r   ru   )r  r  c                 S   s   | dkS ra  r_   r   r_   r_   r`   r|     r}   z%test_inv_iszerofunc.<locals>.<lambda>)r  
iszerofuncr  r  )r1   Zcol_swapr   )r   r  r_   r_   r`   test_inv_iszerofunc  s   

r  c                  C   s   t d\} }t| t| | t| g}t| |g}||}|||jks)J ||j|ks3J ||j|jks>J |jt|jd  | }|t	}|tddgd| d ggks_J d S )Nrho,phir   ru   rX   )
r   r-   r   r   r  r9  r1   rd   rc  r   )rhophiXYr   r  r_   r_   r`   test_jacobian_metrics   s   

$r  c                  C   s   t d\} }t| t| | t| | d g}t| |g}tt||  t| gt|| t| gd|  dgg}|||ksBJ d S )Nr  rX   r   )r   r-   r   r   r  )r  r  r  r  r   r_   r_   r`   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 ]D}tddD ]<}| d |d d f }|d |d d f }||}|j|ksNJ |j|ksUJ t|D ]}|d d |f |ksgJ qYq,q%d S Nru   rW   )	r-   r   rS   rT   rU   r   r  rf   rg   )r  r  r^   r   ZX_sliceZY_slicer   kr_   r_   r`   test_issue_45649  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 rY   r  r-   rS   rT   rU   r_   r  r_   r`   r|   J  r   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
     S rY   )r  r_   r  r  r_   r`   r|   M  r   c                      s     tttgttggS rY   r  r_   r  r_   r`   r|   N      )r-   r   rS   rT   rU   rF   	TypeErrorr_   r_   r  r`   test_nonvectorJacobianG  s    r  c                  C   sP   t ddgddgg} |  }|jdksJ tdD ]}|| |d ks%J qd S Nru   rW   rX   ry   )r-   Zvecrg   r   )ro   Zm_vecr^   r_   r_   r`   test_vecQ  s   r  c                  C   s6  t ddgddgg} |  }|jdksJ tdD ]}|| |d ks%J q| jdd}|d dks4J t dttt  gtt td  dgg} | jdd}|d tt td  ks\J t dttt  gtt dgg} | jddd}|d tt ks}J ttdd	  ttd
d	  ttdd	  ttdd	  d S )Nru   rX   rW   F)diagonalr   )r  Zcheck_symmetryc                   S      t ddgg S r  r-   vechr_   r_   r_   r`   r|   j  r3  ztest_vech.<locals>.<lambda>c                   S      t ddgddgg S r  r  r_   r_   r_   r`   r|   k      c                   S   r  r  r  r_   r_   r_   r`   r|   l  r3  c                   S   r  r  r  r_   r_   r_   r`   r|   m  r  )	r-   r  rg   r   rS   rT   rF   r$   r   )ro   Zm_vechr^   r_   r_   r`   	test_vechY  s"   ( r  c                      sZ   t g dtg dksJ dddgg tt fdd t  ddtg dks+J d S )	Nrx   ru   rX   rW   c                      s   t  S rY   )r0   r_   r   r_   r`   r|   t  r}   ztest_diag.<locals>.<lambda>F)strict)r0   r-   rF   r   r_   r_   r   r`   	test_diagp  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s-J | |gks6J | |gks?J d S Nru   rX   rW   )r-   rS   rT   rU   get_diag_blocksrO   rP   rQ   r_   r_   r`   test_get_diag_blocks1x  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s3J t| || | ||gksBJ t| || | ||gksQJ t||| |||gks`J d S r  )r-   rS   rT   rU   r0   r  r  r_   r_   r`   test_get_diag_blocks2  s    "r  c               
   C   s  t ddgddgg} t dtgtdgg}t dtdgtdtgtttgg}t| ||}|jddt|  | | ks>J t| ||}|jddt|  | | ksXJ t| ||}|jddt|  | | ksrJ t| | || || }|jddt|  |  | |  | |  ksJ |jdddt| jdd| jdd|jdd| jdd|jdd| jddksJ d S )	Nru   rX   rW   T)try_block_diagr  )r  r  r  )r-   rS   rT   rU   r0   r   )rO   rP   rQ   r   r_   r_   r`   test_inv_block  s"    ((($
r  c                   C   s   t tdd  t tdd  ttdtdksJ ttdtdks&J t tdd  ttdtdks9J ttdtdksEJ t tdd  ttdtdtddks\J t tdd  t td	d  t td
d  dS )zg
    Check that matrix dimensions can be specified using any reasonable type
    (see issue 4614).
    c                   S   
   t ddS )NrW   r   r:   r_   r_   r_   r`   r|     r   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddS Nru   rX   rW   ry   r  r_   r_   r_   r`   r|     r   rW   c                   S      t dS Ng      @r  r_   r_   r_   r`   r|     r}   c                   S   r  r  r1   r_   r_   r_   r`   r|     r}   ry   c                   S   r  r  r   r_   r_   r_   r`   r|     r}   c                   S   r  rt   r   r_   r_   r_   r`   r|     r   c                   S   s   t ddggS rt   r   r_   r_   r_   r`   r|     r   N)rF   r   r  r:   r[   r   r1   r4   r_   r_   r_   r`   test_creation_args  s    r  c                  C   sX  t ddg d} |  rJ |  sJ | jddsJ t ddg d} |  s*J tddd} |  s6J |  s<J t ddg d} | tdddksNJ t ddtdd} |  r]J |  scJ t d	} |  smJ t d
} |  swJ t dddtd dt  d ttd d ddtddg	} |  sJ | jddrJ |  jddsJ d S )NrX   r   ru   ru   r   Fr   r  ru   rW   )	ru   r   r   r   rX   r   r   r   rW   ))r   r   r   r   )r   r   r   )r   rz   r   r   )r-   is_diagonalis_symmetricr0   r:   rS   rT   r"   r   r_   r_   r`   test_diagonal_symmetrical  s,   6r  c                     sb  t ddt gdt dgg   sJ t ddg d   r"J   r(J tt fdd tddd   \} }| tdksEJ | ksKJ t ddg d   sYJ   s_J   \} }| 	   |  |ksqJ t ddg d   sJ   sJ   \} }| 	   |  |ksJ | tdksJ | ksJ t ddg d	   sJ   \} }| 	   |  |ksJ t ddg d
   sJ   \} }| 	   |  |ksJ | D ]}|
 d dksJ qt ddg d   sJ   s
J   \} }| 	   |  |ksJ | t ddgddggks,J t ddg d  dr<J tt fdd   sLJ   \} }| 	   |  |ks_J t ddg d   rnJ tt fdd t ddg d   rJ tt fdd td\}}}}t dd||||g   sJ   sJ d S )Nru   rX   rW   r   ru   r   r/  rW   r   c                            S rY   r  r_   r   r_   r`   r|     r}   z&test_diagonalization.<locals>.<lambda>r  )ru   r   r   rW   ru   ru   r   r   )	ru   rX   r   r   rW   r   rX   r   rX   rP  r   )r   ru   r   r   Tc                      r  )NTr  r_   r   r_   r`   r|     r   r   ru   r   r   c                      r  rY   r  r_   r   r_   r`   r|     r}   )	r   ru   r   r/  rW   r   rX   r   ry   c                      r  rY   r  r_   r   r_   r`   r|     r}   za b c d)r-   r   r  r  rF   r&   r0   r  r1   r   Zas_numer_denomr  r%   r   )r   r  r^   rO   rP   rQ   rR   r_   r   r`   test_diagonalization  sl   r	  c                      s   t ddgddgg   du sJ d d<   du sJ t ddgddgg    d d< tt fdd t   jdd W d    n1 sMw   Y  t   jdd	 W d    d S 1 sgw   Y  d S )
Nr   ru   Tr   Fc                      r  rY   r  r_   r  r_   r`   r|   "  r}   z"test_issue_15887.<locals>.<lambda>)Zclear_cache)Zclear_subproducts)r;   r  r  rF   r%   rJ   r_   r_   r  r`   test_issue_15887  s   "r
  c                     s:  t ddg d tt fdd t ddg d t ddg d}   \}}| |ks-J |   d ks7J t ddg d	 t ddg d
}   \}}| |ksSJ t ddg d t ddg d}   \}}| |ksoJ t ddg d t ddg d}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksJ t ddg d t ddg d}   \}}| |ksJ t ddg d   rJ t ddg d}   \}}| |ksJ t tdddtdddgtdddtdddgg   \}}| D ]}t|tr|j	dksJ q	d S )NrW   rX   r  c                      r  rY   )r   r_   r   r_   r`   r|   /  r}   z"test_jordan_form.<locals>.<lambda>)	r   r,  rz   r   ir   r   irG  )	r   r   r   r   ru   r   r   r   ru   ru   	r   ru   r   r   ry   r   r   ru   rX   )	rX   ru   r   r   rX   r   r   r   rX   )	rX   rz   ru   ru   r   ru   rX   r   )	r   ru   r   r   r   r   r   r   r   )	ry   r   rX   r   r  rW   rz   ry   )	r   ru   r   r   r   r   r   r   ru   ry   )rz   r   r   r   r   r   rW   rW   rX   ru   r   r   r   ru   r   r   )rX   ru   r   r   r   rX   r   r   r   r   rX   ru   r   r   r   rX   )rz   rX   r   r   rX   r   rz   rX   r   r  r   r   r   rW   ry   )r   r   r   r   r   rX   ru   r   r   r   rX   r   r   r   r   rX   )r   ry   rX   ru   r   ru   r   r   r   r   rW   r   ru   ru   r   rX   )ru   r   r   r   r   rX   r   r   r   r   ry   ru   r   r   r   ry   z1.0n   )Z	precisionz2.0z3.14159265358979323846264338327z4.0)
r-   rF   r&   r   r  r  r   valuesr   Z_prec)ZJmustr   r   Ztermr_   r   r`   test_jordan_form,  sR   
r  c                  C   s   t g dg dg dg dg} ddt  }ddt  }t |dddgd|ddgdd|dgddd|gg}t |dddgd|ddgdd|dgddd|gg}|  \}}||ks\||ks\J t|| |  | ksjJ d S )	N)rX   ry   ru   r   )r   rX   r   ru   )r   r   rX   ry   )r   r   r   rX   rX   ry   ru   r   )r-   r   r   r   r   )r   pqZJmust1ZJmust2r   r   r_   r_   r`   #test_jordan_form_complex_issue_9274w  s(   





 r  c                  C   s   t g dg dg dg dg} |  \}}|t g dg dg dg dgks*J |t g d	g dg dg dgks>J d S )
Nr  r  )r   r   ru   ru   r  r   ru   r   ru   rP  r  rN  r  )r-   r   r   r_   r_   r`   test_issue_10220  s"   
r  c               
   C   s   t g dg dg dg dg} |  \}}| t t t d ttd gdt ddt dgdtd d td  dtd d td  gg d	gksNJ |t t dddgdt ddgddtdgdddtggkslJ d S )
Nr  )r   r   r   r   )r   r   r   r   )r   r   rX   ru   rX   r   r   ru   r  )r-   r   r"   r   r   )r   r   r   r_   r_   r`   test_jordan_form_issue_15858  s&   .

r  c                  C   sr  t d\} }}t| |  |d ||   || ||  g|| ||  | |d ||   gg}|t}|ttd ||  ||   d| |  ||  t  || |  ||   tddksaJ t|tu siJ tddgddgg}| |t  krttd t d ksJ  J tddgtdgg}|t}|jtksJ | 	|jttd dt  ksJ d S )	Nz
UA K_i K_wrX   zZZ(K_i,K_w,UA)r   ru   rW   r   rz   )
r   r-   r   rS   r   rZ   r   genZas_exprr   )ZUAZK_iZK_wr   r   r  r_   r_   r`   test_Matrix_berkowitz_charpoly  s&   *$
06
*r  c                  C   s   t d} td| }| tt| ggksJ td| }| tt| t| t| d gdt| t| gddt| ggksBJ d S )Nlamdaru   rW   rX   r   )r   r-   jordan_blockZ_eval_matrix_exp_jblockr   )lro   r_   r_   r`   test_exp_jordan_block  s   r  c                  C   s  t ddgddgg} t tddtd d dtd d  gdtdgg}|  |ks.J t| |ks6J t ddgddgg} |  t tdgdtggksPJ t| t tdgdtggks`J t ddgddgg} |  t ttd t td gttd ttd ggksJ d S )	NrW   ry   r   r   r   r   ru   r   )r-   r   r   r   r   )ro   Zm_expr_   r_   r`   test_exp  s   8  Fr  c               
      s   t d} td|    tt| ggksJ td|    tt| d|  dd| d   dd| d   gdt| d|  dd| d   gddt| d|  gdddt| ggks\J tg dg d	g d
g tt fdd d S )Nr  ru   ry   r   rX   rW   r   r   r   r   c                      r  rY   )r   r_   r   r_   r`   r|     r}   ztest_log.<locals>.<lambda>)r   r-   r  Z_eval_matrix_log_jblockr   rF   r%   )r  r_   r   r`   test_log  s(   *
r  c                  C   sX   t ttfdf} | tsJ | trJ | tsJ | td} | tr*J d S )NrE  rX   )r-   rS   rT   ZhasrU   r   r   r   r_   r_   r`   test_has  s   r   c                  C   sR   t d} tdd| t| d t| d  tjg}t|\}}}}|tjks'J d S )NrS   rW   ru   rX   )r   r-   r   r   r   r   r(   rS   columnZpivot_offsetZ	pivot_valZpivot_assumed_nonzeroZ
simplifiedr_   r_   r`   :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s5J d S )NrS   rW   ru   rX   Zsimpfunc)r   r-   r   r   r(   r)   r!  r_   r_   r`   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2  s   

r%  c                  C   s   t d} tdd| t| d t| d  |  t| d t| d  g}t|td\}}}}t|dks5J |d d dks?J |d d d|  ksKJ |d d dksUJ |d d dks_J d S )NrS   rW   ru   rX   r$  r   )r   r-   r   r   r(   r)   lenr!  r_   r_   r`   +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gddggtddgddgg W d    n1 sw   Y  t tdd  t tdd  t tdd  t tdd  t tdd  t td d  t td!d  t td"d  t td#d  t td$d  t td%d  t td&d  t td'd  t td(d  t td)d  t td*d  t td+d  t td,d  t td-d  td. t t fd/d tg d0gtg d1g d2g d3g t t fd4d tg d1g d2g d3g t t fd5d d S )6Nc                   S   s   t ddgdggS rt   r   r_   r_   r_   r`   r|   1  r3  ztest_errors.<locals>.<lambda>c                   S      t ddggd S )Nru   rX   )g333333?r   r   r_   r_   r_   r`   r|   2  r3  c                   S   r(  )Nru   rX   )ru   g@r   r_   r_   r_   r`   r|   3  r3  c                   S   s   t ddddS )NrW   ry   T)rQ   rl  )r5   r_   r_   r_   r`   r|   4  r   c                   S   s   t ddgddS )Nru   rX   ry   rz   )r-   r\  r_   r_   r_   r`   r|   5  r   c                   S   s(   t ddgddggddgt ddgS Nru   rX   rW   ry   r   )r-   Zcopyin_matrixr_   r_   r_   r`   r|   7     ( c                   S   s"   t ddgddggddgt S r)  )r-   Zcopyin_listsetr_   r_   r_   r`   r|   8  s
    c                   S   s   t g dg dg S )Nrx   )rX   rW   r   r-   r   r_   r_   r_   r`   r|   :  r  c                   S   s&   t ddddgt ddgddggS r  )r-   row_joinr_   r_   r_   r`   r|   <     & c                   S   s"   t ddgt ddgddggS r  )r-   col_joinr_   r_   r_   r`   r|   >  s   " c                   S   "   t dgdt ddgddggS r  )r-   
row_insertr_   r_   r_   r`   r|   ?  
    c                   S   r0  r  )r-   
col_insertr_   r_   r_   r`   r|   A  r2  c                   S      t ddg S rt   r  r_   r_   r_   r`   r|   C  r   c                   S   s   t dgdS r  )r-   rc  r_   r_   r_   r`   r|   D  r   c                   S      t ddgddggddS Nru   rX   rW   ry   r   )r-   minorr_   r_   r_   r`   r|   E      c                   S   r5  r6  )r-   Zminor_submatrixr_   r_   r_   r`   r|   F  r8  c                   S      t g ddS Nrx   ru   r-   crossr_   r_   r_   r`   r|   G  r3  c                   S   r9  r:  r-   dotr_   r_   r_   r`   r|   H  r3  c                   S   s   t g dt ddgS )Nrx   ru   rX   r=  r_   r_   r_   r`   r|   I  r  c                   S   s   t ddgg S rt   r=  r_   r_   r_   r`   r|   J  r3  c                   S   s   t ddgdS )Nru   rX   rO   r=  r_   r_   r_   r`   r|   K  r3  ru   rX   rW   ry   c                   S   s   t ddgg dS )Nru   rX   rx   r=  r_   r_   r_   r`   r|   N  r6  c                   S   s   t g d S )Nrx   )r-   r   r_   r_   r_   r`   r|   O  r   c                   S   r  r  )r-   
normalizedr_   r_   r_   r`   r|   P  r  c                   S   s   t ddgjddS )Nru   rX   znot a methodr  r,  r_   r_   r_   r`   r|   Q  r   c                   S   r4  rt   r-   Z
inverse_GEr_   r_   r_   r`   r|   R  r   c                   S      t ddgddgg S rt   r@  r_   r_   r_   r`   r|   S  r  c                   S   r4  rt   r-   Zinverse_ADJr_   r_   r_   r`   r|   T  r   c                   S   rA  rt   rB  r_   r_   r_   r`   r|   U  r  c                   S   r4  rt   )r-   Z
inverse_LUr_   r_   r_   r`   r|   V  r   c                   S   r4  rt   r  r_   r_   r_   r`   r|   W  r   c                   S   r4  rt   r-   r   r_   r_   r_   r`   r|   X  r   c                   S   s   t ddgddggjddS )Nru   rX   rW   ry   zNot a real methodr  rC  r_   r_   r_   r`   r|   Z  r8  c                   S   (   t g dg dg dg dgjddS )NrO  rR  rS  rT  zNot functionr  rC  r_   r_   r_   r`   r|   \  
    c                   S   rD  )NrO  rR  rS  rT  FrE  rC  r_   r_   r_   r`   r|   _  rF  c                   S   s*   t tddgddggtddgddggS r  r2   r-   r_   r_   r_   r`   r|   b  s   * c                   S   s   t tddgddggg S r  rG  r_   r_   r_   r`   r|   c  r  c                   S   s   t tdd dS )NrS   rX   rO   )r2   r   r_   r_   r_   r`   r|   d  r3  c                   S   r0  )NrW   )r   rX   r  r_   r_   r_   r`   r|   e  r   c                   S   r0  )NrW   )rX   r   r  r_   r_   r_   r`   r|   f  r   rQ  c                      r  )Nzmethod=LU_decomposition())r   r_   r   r_   r`   r|   h  r   )r   r   r   rx   rX   rW   ry   r   c                           dS )Ng@)r1  r_   r   Vr_   r`   r|   k  r   c                      rI  )Ng)r3  r_   rJ  r_   r`   r|   m  r   )	rF   r   r7  r$   r  r&   rJ   r-   r>  r_   r_   rJ  r`   test_errors0  s   ,rL  c                   C   s   t t dks	J t tddggt tdgdgg  kr#dks&J  J t tdddd t tdddd   krAdksDJ  J t tg dg dgd	ksTJ tdgtdggksaJ t rfJ t tg ksoJ d S )
Nr   ru   rX   c                 S   r`  ra  r_   r   r_   r_   r`   r|   r  rb  ztest_len.<locals>.<lambda>c                 S   r`  ra  r_   r   r_   r_   r`   r|   s  rb  r   r   rz   )r&  r-   r_   r_   r_   r`   test_leno  s   : 
rM  c               	   C   s   t ddtftddfddtd ff} | tt tdt td d ftt dt dt fdt dt td d ffks=J | tt tdt tt ftd d dt dt fdt dt ttd  ffkshJ d S )Nru   ry   rX   r   r   rW   )r-   rS   rT   r  r   r_   r_   r`   test_integratez  s   $FFrN  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s*J d S )	Nru   ry   rX   r   r   r   )ru   ry   ru   )r   r   ru   )r-   r   rS   rT   r  r   r_   r_   r`   
test_limit  s   0(rO  c                  C   sT  t ddtftddfddtd d ff} t| tt| s J | tt dddddt ffks3J | tt d	ks>J t| tt dddddt ffksQJ t| tt d	ks\J |  }t|tt|slJ |ttdddddt ffksJ |ttd	ksJ t|ttdddddt ffksJ t|ttd	ksJ d S )
Nru   ry   rX   r   r   r   r   r   )r   r  r   )r;   rS   rT   r   r    rZ   r:  r<   )r   A_immr_   r_   r`   	test_diff  s   (&&&&rQ  c               
      s\  t ttgttgg} | | tddgddggddgddgggddgddggddgddggggks3J t| | tddgddggddgddgggddgddggddgddggggks\J |  }||tddgddggddgddgggddgddggddgddggggksJ t||tddgddggddgddgggddgddggddgddggggksJ | tt ddgddggksJ t	tt
g}| |tddddksJ | | tddgddggddgddgggddgddggddgddggggksJ |tt
gg}|jdksJ |tdgdggdgdgggks%J td}|ttt  tttggt t t tgksKJ  tttgdft td tt ttg tt td ttg tt tt tdggksJ tttt }|ttggttttt tttt gksJ |tttffttttt tttt gksJ |tttffttt tt tttt gksJ |ttffttggttttt tt tt gtttt tttt ggks J  ttt tttffdd k  ttt tttffdd k  tttggtttfft fd	d
tttfD k ttttgg}t|t	s|J |tddggksJ td tttgg}t|t	sJ |tdtd  dggksJ d S )Nru   r   rX   )rX   rX   ru   r  rW   r   r  c                    s&   g | ]  fd dt ttfD qS )c                    s   g | ]
}  | qS r_   )r    r\   )fxyzr   r_   r`   r     r8  z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)rS   rT   rU   )r]   rR  )r   r`   r     r.  z'test_diff_by_matrix.<locals>.<listcomp>)r;   rS   rT   rU   rV   r    rM   r:  rO   r<   rP   r:   rd   r!   r   r   r   r-   r   )r   rP  BZdBr  exprresr_   rS  r`   test_diff_by_matrix  sF   RRRR"T&8   :<>d..8$rW  c                      sh   t ddtftddfddtd d ff tt fdd t dtt d	d
dddt ffks2J d S )Nru   ry   rX   r   r   c                      s    j S rY   )Znonexistantattributer_   r   r_   r`   r|     s    ztest_getattr.<locals>.<lambda>r    r   r   r   )r-   rS   rT   rF   r  getattrr_   r_   r   r`   test_getattr  s   (.rY  c                  C   s   t g dg dg dg} | jsJ | j} | jsJ d| d< | jdu s%J t g dg dg dg} | jr7J tdd	} | jsAJ d S )
N)rW   ry   ru   )rX   ry   r   r   ru   )r   r   Fr[  r   rX   )r-   Zis_upper_hessenbergr9  Zis_lower_hessenbergr:   r   r_   r_   r`   test_hessenberg  s   



rZ  c                  C   s&  t tdd  t tdd  t tdd  t tdd  t tdd  tdt dfd	fjd
dttdt dgddggksAJ td} | jd
d}|tddgddtd t ggks_J ||j | kshJ td} |  }||j | ksyJ |js~J |tg dg dg dgksJ tddt ddt  fdt ddt fddt  dt dff} |  	 tdtddfdt ddffksJ t tdd  t tdd  t tdd  t tdd  t tdd  t
dt dfd	fjd
dttdt dgddggksJ t
d} | jd
d}|tddgddtd t ggks'J ||j | ks1J t
d} |  }||j | ksCJ |jsIJ |tg dg dg dgks[J t
ddt ddt  fdt ddt fddt  dt dff} |  tdtddfdt ddffksJ d S )Nc                   S      t d S Nr   r-   choleskyr_   r_   r_   r`   r|     r   ztest_cholesky.<locals>.<lambda>c                   S   r[  Nr   )rW   ry   r]  r_   r_   r_   r`   r|     r   c                   S      t dt dfdf S Nr   r   r   )r-   r   r^  r_   r_   r_   r`   r|     r  c                   S   r[  N)ru   r   )r   ru   r]  r_   r_   r_   r`   r|     r   c                   S      t djddS Nr`  F	hermitianr]  r_   r_   r_   r`   r|     r   r   r   r   Frg  ru   rd  rX   rz   ))   r   r   )r   r   r   )r   r   rF  r   )rW   rW   r   )r   ru   rW   ry   r   r   rF  r   rW   c                   S   r[  r\  r.   r^  r_   r_   r_   r`   r|     r   c                   S   r[  r_  rj  r_   r_   r_   r`   r|     r   c                   S   ra  rb  )r.   r   r^  r_   r_   r_   r`   r|     r  c                   S   r[  rc  rj  r_   r_   r_   r`   r|     r   c                   S   re  rf  rj  r_   r_   r_   r`   r|     r   )rF   r&   r   r-   r   r^  r   r9  r  r"   r.   )r   r  r_   r_   r`   test_cholesky  sL   (
"@.*$@0rk  c                  C   s  t ddd} tt| t| g}t|ddksJ |dtt| d t| d  tddks4J tdtddgg}| td	td
d tj	ksOJ |t
t|ksZJ |t
 t|ksfJ tddgddgg}|ddksyJ |ddksJ |ddksJ tddtdd  krdksJ  J |t
dksJ tdttg| tj	t gg}|dttdddttd   td  | d  ksJ tg dddtddgg}|dttddtdd  ksJ |dtju sJ |dtdd ksJ tddgddgg}tddgddgg}tdt gtdgg}tddgddgg}||||g}t ddd}dD ]W}td|tju sYJ |D ]!}	|D ]}
|	||
| |	|
 | }|dksyJ q_q[||||fD ]}t|| |t|||  }|dksJ qqJtdddt  dg}ttj	dt dg}tg d}tddtg}ttdtdddg}|||||g}t ddd}ddddtjtjtfD ]q}|dkrtg d|tju sJ |dkr,|D ]&}	|D ] }
|	||
| |	|
 | }t|dktju s(J q	q|ddddtjtjfv rX|D ]}	t||	 |t||	|  }|dksVJ q;qtddg d}|ddkslJ d S )NrS   Tre  rX   ru   r   r   rW   ri  r   ry   r   r   Z	frobeniusfro%   )ru   rX   r   rG  i  r   iI3 r   alpha)rl  rX   r   r   )r   r   r   g      Y@r   )	ru   rW   r   r   r   r   rW   r   rz   )r   r-   r   r   r   normr   r   r   r   r   maxrq  r1   rT   r   r   r   r@  r   r:   r   r   ZInfinityZNegativeInfinitytrue)rS   rv   r   rT  r  r  r  rn  Zorderr  r  Zdifr   rO   rP   rQ   rR   er_   r_   r`   test_matrix_norm  s   2"0,(

rs  c                     s   t dddtd} d| d< tdd| d< |  d	ksJ | d
< |  tdtttddt ks8J ttt	gt	 tgg}|  t
 fddtddtjtddtd tttdd fD sqJ tg  dks{J d S )NrS   Tre  rW   r   r   ru   rX   rX   r   r   c                 3   s*    | ]}t d  | V  qdS )r   N)r   Z
epsilon_eqr   r  )r]   valZMcrS   r_   r`   ra   v  s   ( z(test_condition_number.<locals>.<genexpr>r   rX   r   ry   r   )r   r1   r   Zcondition_numberr	   r   r
   r-   r   r   re   r   r   r   )r   r   r_   rv  r`   test_condition_numberj  s   .&*rw  c                  C   s   t d} t d}| | d d d d f ksJ | | d d d d f kr$J | |kr*J | |ks0J | dks6J | dkr<J td}t d}||ksJJ ||krPJ d S )N)rx   r  r   r   r   ))r   r   r   )rz   r   ry   )rW   rX   ru   r   )r  r   r   )r-   r.   )r   rT  r  r  r_   r_   r`   test_equality}  s   ry  c                   C   s@   t dtg dgtg dg dg dg dgksJ d S )NrW   )r   r   r   r  r   r   )r1   r/  r-   r_   r_   r_   r`   test_col_join  s   rz  c                  C   s\   t g dg} tddD ]}g d}||d ttd|| d |ks+J qd S )Nry   ry   ry   r   r   r  ry   rW   r   )r-   r   insertrD   r1   r1  r  r8  )Zr4r^   r  r_   r_   r`   test_row_insert  s   (r}  c                  C   sZ   t g d} tddD ]}g d}||d ttd|| d |ks*J qd S )Nr{  r   r   r   ry   rW   r   )r-   r   r|  rD   r:   r3  r  r8  )Zc4r^   r  r_   r_   r`   test_col_insert  s   (r~  c                  C   s|   t ddg t tddtddgksJ t g d t g dks&J t g d} | jdd dt g dks<J d S )	NrW   ry   r   r   )r   r   g0.++c                 S   s   | j dddjS )Nr   T)rm   Zchop)r  Zis_zeror   r_   r_   r`   r|     r   z!test_normalized.<locals>.<lambda>rE  )r-   r?  r   r   r_   r_   r`   test_normalized  s    
r  c                   C   s,   t dd dks
J t dd dksJ d S )Nc                   S   r[  rW  r1   Zprint_nonzeror_   r_   r_   r`   r|     r   z$test_print_nonzero.<locals>.<lambda>z[X  ]
[ X ]
[  X]
c                   S   s   t ddS )NrW   .r  r_   r_   r_   r`   r|     r   z[.  ]
[ . ]
[  .]
)rE   r_   r_   r_   r`   test_print_nonzero  s   

r  c                  C   s   t dtdksJ t dtdksJ tddt dddgd ks&J t ddgddgg} t ddgddgg}tD ]<}|d}| |ksIJ | td|dksSJ t||ks[J |d}||ksfJ |td|dkspJ t||ksxJ q<d S )NrW   ry   ru   r   r   rX   r  )r-   r1   r:   r4   rc   rZ   )r^   rU   rn   ro   r_   r_   r`   test_zeros_eye  s    

r  c                  C   s  t  jsJ t ddgddggjsJ tddjsJ tdjr"J t tdgddggjd ks1J ttdgddggjd ks@J ttdgddggjd ksOJ ttdgddggjd ks^J t tdgddggjdksmJ tddd} t | dgddggjdksJ d S )	Nr   rW   ry   ru   FrO   T)Znonzero)	r-   Zis_zero_matrixr:   r1   rS   r.   r+   r,   r   r  r_   r_   r`   test_is_zero  s   "r  c                  C   s&  t d } t| }t|  }t| }t|  }t| }t|  }|| td tdks-J || td tdks;J || td tdksIJ | ddt|   ksWJ | ddt|   kseJ | ddt|   kssJ tdtdks}J tdtdksJ tdtdksJ d S )NrW   ru   rX   r   )r   r8   r7   r6   r1   r  r   )ZthetaZr3_plusZr3_minusZr2_plusZr2_minusZr1_plusZr1_minusr_   r_   r`   test_rotation_matrices  s    


r  c                   C   sj   t tdd dksJ ttdtdksJ ttdd  t tddks)J ttddks3J d S )	NZvectorry   z	vector[4]rR   c                   S   r0  )NrR   r   )r'   r_   r_   r_   r`   r|     r   z%test_DeferredVector.<locals>.<lambda>testzDeferredVector('test'))strr'   r   rF   r7  reprr_   r_   r_   r`   test_DeferredVector  s
   r  c                   C   s   t tdrJ d S )Nr  )r@   r'   r_   r_   r_   r`    test_DeferredVector_not_iterable  s   r  c                   C      t tdd  d S )Nc                   S   s   t tdS )NrK  )r-   r'   r_   r_   r_   r`   r|     r   z,test_DeferredVector_Matrix.<locals>.<lambda>)rF   r  r_   r_   r_   r`   test_DeferredVector_Matrix     r  c                  C   s8  t } tddddg}tddddg}t||gtddddgtdd| dd | dd ggks2J t|j|jgtddddgtdd| dd | dd ggksTJ ttddgtddggdtdtd d tdd gttd d dtd d ggksJ ttdg}t|tdgggksJ d S )Nru   rX   rW   r   r   Tr   )r   r-   r*   r9  r   r#   )r   rJ  rK  r  r_   r_   r`   test_GramSchmidt 	  s   
.. 
r  c                   C   s4   t g dddksJ t g dddddksJ d S )NrO  ru   r   F)Zzero)r/   r_   r_   r_   r`   test_casoratian	  s   r  c                   C   s^   t  tdd jdksJ tddtdd tddksJ tddtdd t  ks-J d S )Nr   rW   )r   rW   )r-   r:   rd   r_   r_   r_   r`   test_zero_dimension_multiply	  s   ""r  c                      s   t ddtd  dd d f t ddggksJ  dd d f t ddggks*J  d d df t ddggjks<J  d d df t ddggjksNJ tt fdd tt fdd d S )	NrX   ry   ru   rW   r   c                      s    dd d f S r_  r_   r_   r   r_   r`   r|   "	  r   z'test_slice_issue_2884.<locals>.<lambda>c                      s    d S )Nrt  r_   r_   r   r_   r`   r|   #	  r}   )r-   r   r9  rF   r7  r_   r_   r   r`   test_slice_issue_2884	  s   ""$$r  c                   C   sJ   t ddd d df jdksJ t dddd d f tddg ks#J d S )Nr   rW   r   r   ru   )r:   rd   r-   r_   r_   r_   r`   test_slice_issue_3401&	  s    *r  c                  C   s  t dd} d| d< | d d df tg dksJ | d dks!J | dd dgks,J d| d< | d dks8J | ddd f tddggksIJ tdd	gg| ddd f< | dd d f tg d
gksgJ ddgg| ddd f< | dd d f tg dgksJ d| d< | d d d df tg dksJ g d| d< | d d df tg dksJ tg d| d< | d d df tg dksJ tg d| d< | d d df tg dksJ d S )NrW   ru   r   r   ry   r  r   r   rz   )ru   r   rz   +   )ru   r  r     r   )r  ru   r   ru   ru   ru   )r:   r-   r.   )r  r_   r_   r`   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sJ ttdd  t g dtddgdtdgg t  d  jks=J   d td	ksIJ  jtd
d td	ksWJ tt fdd tt fdd tt fdd d S )Nru   rX   r   )r   c                   S   rA  rt   r,  r_   r_   r_   r`   r|   F	  r  z'test_invertible_check.<locals>.<lambda>)r   r   r   r   rW   r  c                          j ddS )Nr  r  r   r_   r   r_   r`   r|   Q	  r   c                      r  )Nr  r  r  r_   r   r_   r`   r|   R	  r   c                      r  )Nr  r  r  r_   r   r_   r`   r|   S	  r   )	r-   r   rF   r   rS   r&  rf   r1   r   r_   r_   r   r`   test_invertible_checkB	  s   4r  c                  C   s@   t d\} }| | }|| tg dtg d| ksJ d S )Nzx, y)rW   r   rW   )r   r   r-   )rS   rT   rr  r_   r_   r`   test_issue_3959V	  s   ,r  c                   C   s$   t tddgddggdksJ d S )Nru   rX   rW   ry   zMatrix([[1, 2], [3, 4]]))r  r-   r_   r_   r_   r`   test_issue_5964\	  s   $r  c                  C   s<   t d\} }tt| d| g|d | d ggdksJ d S )Nx yrX   rW   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))r   r   r-   )rS   rT   r_   r_   r`   test_issue_7604`	  s   "r  c                	   C   s   t djsJ t d jsJ tdjrJ tdjrJ tg dgjr(J tddddddjs5J tddtdjr@J tdddddjrLJ tddddddddjr[J d S )	NrW   r  ru   )r   r   rt  rX   rz   )r   r   )r   r   rt  r   )r   rX   )r1   Zis_Identityr:  r:   r4   r-   r.   r   r_   r_   r_   r`   test_is_Identityf	  s   "r  c                   C   s  t ddt dddksJ t ddg ddksJ tg dtg ddks.J tdddt gttddt gdt ksGJ tdddt gjttddt gdd	dt ksbJ tdddt gjttddt gd
d	dt ks}J tdddt gjttddt gd
dddt ksJ tdddt gjtddt dgd
ddddt  ksJ tdddt gjtddt dgd
ddddt  ksJ ttdt gjttdt gddddksJ ttdt gjttdt gdddksJ ttdd  d S )Nru   rW   r  rx   rH  rX   r   Frg  TrG  Zphysicsrh  conjugate_conventionry   r   rz   rightr   left)r  c                   S   s    t ddgjt ddgdddS )Nru   rX   rW   ry   Tr  r  r=  r_   r_   r_   r`   r|   	  s     ztest_dot.<locals>.<lambda>)r4   r>  r-   r   rF   r   r_   r_   r_   r`   test_dott	  s   "2668<<00r  c                  C   s   t ddd\} }}}}}td|||f| d|| f| | d| f| ||  dff}td|  | | f| d|| f|| d|f||| dff}| |sQJ td tds^J |  | sjJ d S )NzB_x B_y B_z E_x E_y E_zTre  r   rW   )r   r-   ZdualZequalsr1   r:   )ZB_xZB_yZB_zZE_xZE_yZE_zFZFdr_   r_   r`   	test_dual	  s$   
r  c                  C   s   t ddg du sJ t dddtd dt  d ttd d  dtt t t t dg	} |  du s6J | jdddu s@J | jdd	 ddu sLJ | d
  | d
< |  du s[J | d
  | d
< |  } | jdddu spJ d| d< |  du s|J d S )Nru   rX   FrW   r   Tr  c                 S   s   | S rY   r_   r   r_   r_   r`   r|   	  rb  z%test_anti_symmetric.<locals>.<lambda>r   r   )r-   Zis_anti_symmetricrS   rT   r"   r   r_   r_   r`   test_anti_symmetric	  s   Dr  c                  C   s   t d} | jdd\}}||j |j|   kr t|jks#J  J | jddd\}}||j |j|   kr@t|jksCJ  J || |  | ksOJ d S )N)r   r   T)	normalize)r  sort)r-   r  r9  r1   rg   r   )r   r   rL   r_   r_   r`   #test_normalize_sort_diogonalization	  s   ..r  c                   C   r  )Nc                   S   s   t g dt ddg gS )Nrx   r   ru   r   r_   r_   r_   r`   r|   	  r  z!test_issue_5321.<locals>.<lambda>)rF   r   r_   r_   r_   r`   test_issue_5321	  r  r  c                  C   s   t tddtd t g dg dgksJ t tddtd t ddgddgddgddggks6J t} | | td| dtd t g dg dgksTJ d S )NrX   )ru   r   rX   r   )r   ru   r   rX   ru   r   )r-   hstackr1   vstackr.   r  r_   r_   r`   test_issue_5320	  s    r  c                  C   sV   t dgg} t| }t || t ddggksJ t || t dgdggks)J d S r  )r-   r   r  r  )r   ZAImr_   r_   r`   test_issue_11944	  s   $r  c                     s   g d} g d}t g d}|j} fdd}tD ].  | } |}|||| |||j| ||j|j| ||j|| qttdd  d S )Nrx   r   )r   ry   r   c                    s    || ksJ t |  ksJ d S rY   )rZ   )r   r  r  r_   r`   r  	  s   ztest_cross.<locals>.testc                   S   s"   t ddddgt ddddgS rt   r;  r_   r_   r_   r`   r|   	  s   "ztest_cross.<locals>.<lambda>)r-   r9  rc   r<  rF   r$   )rO   rP   r  r  r  r   rT  r_   r  r`   
test_cross	  s   r  c                  C   sr   t dd  D ]} | d| dh}t|dkr!| | dks#J qt d d D ]} t| dtr6J q*d S )Nr   ru   rX   )rc   r1   r&  popr   r   )rn   r  r_   r_   r`   	test_hash	  s   $r  c                      s   t d  tt fdd d S )Nr   c                      s   t  dS r  )hashr1   r_   r  r_   r`   r|   	  r   z!test_issue_3979.<locals>.<lambda>)rc   rF   r  r_   r_   r  r`   test_issue_3979	  s   r  c                  C   sH   dt gddgg} tddgt  dgg}tD ]}|||  ks!J qd S Nr   ru   )r   r-   rc   Zadjoint)r<  r  rn   r_   r_   r`   test_adjoint	  s
   r  c                  C   sL   ddl m} m}m} | t|td |td  ggtdggks$J d S )Nr   r   r   r   rX   ru   )sympyr   r   r   r+   rS   r  r_   r_   r`   test_simplify_immutable	  s   "
r  c                     sh   ddl m} m}m} | d|d\ |ddfdd}|dd fdd}| }||ks2J d S )	Nr   r   r!   r-   F, Gr  rX   c                        | | S rY   r_   r   )Gr_   r`   r|   
  r   ztest_replace.<locals>.<lambda>c                    r  rY   r_   r   r  r_   r`   r|   
  r   )r  r   r!   r-   replace)r   r!   r-   Kr   Nr_   )r  r  r`   test_replace	  s   r  c                     s  ddl m} m}m} | d|d\ }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 d    n1 sRw   Y  |dd fdd}t  | |d	}W d    n1 svw   Y  ||ksJ d S )
Nr   r  r  r  rX   ru   c                    r  rY   r_   r   r  r_   r`   r|   
  r   z"test_replace_map.<locals>.<lambda>T)r  r   r!   r-   rJ   r  )r   r!   r-   r  r  r   r  r_   r  r`   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J | tthks(J d S rt   )r-   rS   Zatomsr   r?  ZNegativeOner   r   r_   r_   r`   
test_atoms
  s    r  c            	         s  t ttgttgg} t| jddt|  ksJ t ddgddgddggt g d	g d
gt ttgg}|D ]2}|jdd}|| }|| }t|| |ksRJ t|| |ks\J |j|kscJ |j|ksjJ q8|D ]4}t|jdd}|| }|| }t|| |ksJ t|| |ksJ |j|ksJ |j|ksJ qmddl	m
  | jdd}|  }tdtdtdtdi}t fddt||||D sJ d S )NZRDr  rG  h   i  rW   r   r   )ru   r   r   )rF  r     EDr   compi_ib,  i  ij  c                 3   s&    | ]\}} |  |  V  qd S rY   r  )r]   r^   r   r  r_   r`   ra   >
  s
    
ztest_pinv.<locals>.<genexpr>)r-   rO   rP   rQ   rR   r   pinvr   r  Zsympy.core.numbersr  re   zipr   )	ZA1Asr   A_pinvAApApAr  wZrepsr_   r  r`   	test_pinv
  s:    
r  c                  C   st   t g dg dg dg dg dg dgg} | D ]}|jdd}|| }|| }|j|ks0J |j|ks7J qd S )	N)=   r   7   r/  ry  r   )>   `   U   r  rU  r   )E   8   r  ry   6   r   )r   r  [   )   ry  r   )r   ro  r   r   Z   r   )r   r   r   r   r   r   r  r  )r-   r  r  )r  r   r  r  r  r_   r_   r`   3test_pinv_rank_deficient_when_diagonalization_failsD
  s    	r  c                   C   sL   t ddt dd tddg ksJ t ddt dd tddg ks$J d S r  )r4   r-   r_   r_   r_   r`   test_issue_7201Z
  s   $(r  c                  C   s2   t tttfD ]} | tgdggjthksJ qd S ra  )r+   r,   r-   r.   rS   Zfree_symbolsr   r_   r_   r`   test_free_symbols^
  s   r  c                      s^  zddl m  W n ty   td Y nw t g dtg dks&J t g dgtg dgks8J t g dg dgtg dg dgksPJ t tttgttttgksbJ tt	 fdd t dd	g d
dggtdd	gd
dggksJ t dd	gd
dggtdd	gd
dggksJ t g  g gtg ksJ dS )zSee issue 7465.r   array?NumPy must be available to test creating matrices from ndarraysrx   r  c                      s(   t  ddgddggddgddgggS )	Nru   rX   rW   ry   r   rz   r   r   r   r_   r  r_   r`   r|   o
  r*  z#test_from_ndarray.<locals>.<lambda>ru   rX   rW   ry   N)
numpyr  ImportErrorrI   r-   rS   rT   rU   rF   NotImplementedErrorr_   r_   r  r`   test_from_ndarrayb
  s"    $$
40$r  c                  C   s   ddl m}  z
ddlm}m} W n ty   td Y nw | |ddgddgg}|d dks2J t|g d	ks<J | |ddgddgg}|d dksPJ t|g d	ksZJ d S )
Nr   
_matrixify)r  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesru   rX   rW   ry   rO  )sympy.matrices.commonr  r  r  r  r  rI   ri   )r  r  r  ro   r_   r_   r`   test_17522_numpyt
  s   r  c                  C   x   ddl m}  zddlm} W n ty   td Y nw | |ddgddgg}|d dks0J t|g d	ks:J d S )
Nr   r  )r  zEmpmath must be available to test indexing matrixified mpmath matricesru   rX   rW   ry   rO  )r  r  Zmpmathr  r  rI   ri   )r  r  ro   r_   r_   r`   test_17522_mpmath
     r  c                  C   r  )
Nr   r  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesru   rX   rW   ry   rO  )r  r  Zscipy.sparser  r  rI   ri   )r  r  ro   r_   r_   r`   test_17522_scipy
  r  r  c                  C   sr   t dtgt dgg} | jsJ dt | d< | jdu sJ t| d< | jd u s(J | d t | d< | jdu s7J d S )Nru   rX   r   Fr   r   )r-   r   Zis_hermitianrS   r  r_   r_   r`   test_hermitian
  s   
r  c                  C   sJ   t tttddgg} | d dt ksJ |  t dt ggks#J d S )NFr2  r   rX   )r-   r   rS   r   r  r_   r_   r`   	test_doit
  s    r  c                     s   t g dg dg dg} | d | t g dg dgks J t g dg dg dg}|d |t g dg dgks@J t g dg dg dg}|d |t g dg dgks`J t g dg dg dg tt fd	d
 t g dg dg dgttfdd
 t g dg dg dg} | d | t ddgddgddggksJ t g dg dg dg}|d |t ddgddgddggksJ t g dg dg dg tt fdd
 t g dg dg dgttfdd
 d S )Nrx   rH  r   ru   r   )r   rz   r   )r   r   rF  r   c                      r  r   row_delr_   r   r_   r`   r|   
  r   z+test_issue_9457_9467_9876.<locals>.<lambda>c                      r  Nr   r  r_   rK   r_   r`   r|   
  r   rW   rX   ry   r   c                      r  r   col_delr_   r  r_   r`   r|   
  r   c                      r  r  r  r_   rK   r_   r`   r|   
  r   )r-   r  rF   r7  r  )r   r  Or_   )r   rL   r`   test_issue_9457_9467_9876
  s.   



"
"r  c                  C   s   t ddd\} }t d\}}td}tdd| ||tg}||  | | | | ks*J || | || | ks8J | | ||  ksBJ || || ksLJ ||  | t||  dgd||  ggksbJ d S )Nr  F)Zcommutativeza brX   r   )r   r1   r-   rU   )rS   rT   rO   rP   r   ZM1r_   r_   r`   test_issue_9422
  s   0r  c            	      C   s   t g } ddgt g df}ddg|d jf}ddgt ddgdd	ggf}|||fD ])\}}|D ]"}t| |}d
|v r?||n|d|}||krPt|t|ksRJ q0q*d S )Nr3  r-  )r   rz   rW   r1  r/  ru   rX   rW   ry   joinr  )r-   r9  rX  id)	r   rO   rP   rQ   opsro   opr  newr_   r_   r`   test_issue_10770
  s   
r   c                  C   s>  t g dg dg dg} | g dg dt ddgdd	gd
dggks&J | g dg dt dgdgd
ggks<J | g dg dt g dgksOJ | g dg dt g dg dgkseJ | g dg dt ddg kswJ | g dg dt ddg ksJ | g dg dt dgdggksJ d S )Nrx   r  rx  r   )TTFru   rX   ry   r   r   r   )TFF)TFT)FFFrW   r   )FTF)r-   r   r   r_   r_   r`   test_issue_10658
  s   ,&$$r  c                  C   s~  t ddtd  dgdtd d d dtd d gg} |  dks&J t ddtd t  dgdddtd t  gg} t|  d	 t ddddtd t   gd	d	gg tddkscJ td
\}}}}}}}}}	}
}}t |||| || d	g|||| || d	g|||| || dg|||| || dg|	|
d|	 | |	|  d|
 | |
|  d	gg} |  dksJ d S )Nr   r   rX   ru   rW   r  ry   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'  r   r   r   r:   r   )ro   ZaxZayZbxZbyZcxcyZdxZdyexZeyZt0t1r_   r_   r`   !test_opportunistic_simplification
  s   <4F r  c                  C   s   t g dg dg} |  d t g dg dg  dk s J t g dg dg d	g}t g d
g dg dg}t g dg dg d	g}| |  dk sSJ | |  dk s_J d S )N)g~jth?gRM@g(\M@)gDl)@gQgp=
cG@r   )r   r   r   )r   r   r   V瞯<)q7K<r   ry   )      r   r   r   )r  r   g      @)r                 @)r	  r	  r   )r   r  r
  )r   r  g      )r-   r   ro  r   )ZmmZm_mixedZm_floatZm_invr_   r_   r`   test_partial_pivoting
  s   ,r  c                  C   st   t g dg dg dg} | jdd dd }t g dg d	g d
g}|| }| dk s0J |d dks8J dS )z When doing numerical computations, all elements that pass
    the iszerofunc test should be set to numerically zero if they
    aren't already. )?皙gɿr   )皙r  gٿr   )r  r  g333333?r   c                 S   s   t | dk S )Ng [n<)r   r   r_   r_   r`   r|     r   z*test_iszero_substitution.<locals>.<lambda>rE  r   )r   r   g4iҤIӿr   )r   r   glٲer   rM  r  rt  N)r-   r   ro  )ro   Zm_rrefZ	m_correctZm_diffr_   r_   r`   test_iszero_substitution
  s   r  c            
      C   sL  ddl m}  dtttdd  tttdd td  }dtd tttdd d  d	tttdd   d
tttdd d   }| dd}| dtd }| ||}t|t| |t| g}t|| || g}tt|| t|| g}dd }	|jd|	ddksJ |jd|	ddksJ |jd|	ddksJ d S )Nr   )Pointr   rG  -   rW   r  rX   r   r   ru   c                 S   s   t |  dk S )Ng#B;)r   rm   r   r_   r_   r`   r|   &  r   z"test_issue_11238.<locals>.<lambda>T)r   r  )	r  r  r   r   r   r   r-   r   r'  )
r  ZxxZyyZp1Zp2Zp0rJ  rK  m3Zr_   r_   r`   test_issue_11238  s   0R

r  c                  C   sh   t ddg d} | tj }| | }tD ]}|| \}}t|t| ks'J t|t| ks1J qd S )NrX   rO  )r-   r   ZImaginaryUnitrc   Zas_real_imagri   )rJ  rK  r  ZklsrO   rP   r_   r_   r`   test_as_real_imag+  s   
r  c                  C   s   t ddg d} |  \}}|d t dddgksJ |d t ddg dks)J t $ t ddgddggt ddgddggg d	ksHJ W d    d S 1 sSw   Y  d S )
NrW   r  ru   rX   r   )rX   ru   r   rX   ry   r   )r   r  rH  r|  )r-   Zjordan_cellsrJ   r>  )ro   r   ZJcellsr_   r_   r`   test_deprecated5  s   8"r  c                  C   s\   ddl m}  tg d}tg d}| |dtg dksJ | |dtg dks,J d S )	Nr   )Mod)r   ru   rX   )r   r/  r  rW   )rX   ru   rX   ry   )rX   r   ru   )r  r  r-   )r  r   rT  r_   r_   r`   test_issue_14489C  s
   r  c                  C   s\   zddl m}  W n ty   td Y nw tddgddgg}| |tdjjd	ks,J d S )
Nr   r  r  ru   rX   rW   ry   )dtypeZfloat64)r  r  r  rI   r-   floatr  name)r  r   r_   r_   r`   test_issue_14943K  s   r  c                  C   s4   t ddd} td}| d dk}t|dksJ d S )Nro   ru   rO   r   r   zm[0, 0] > 0)r=   r   r  )ro   rO   r_   r_   r`   test_case_6913U  s   r  c                  C   s.   t ddd} td}| ||| iksJ d S )Nr   rW   rO   )r=   rB   match)r   rO   r_   r_   r`   test_issue_11948[  s   r  c                  C   s   t dtgt dt gg} t j|  t dgtggt dgt gggks%J t dtdgt tdt gg} t j|  t dgtgdggt td gtdd gt gggksVJ t dtgdt gg}| \}}||j t dkssJ d S )Nru   r   rX   )r-   r   Zorthogonalizer   ZQRdecompositionr  r1   )Zvecsrr   rL   r   r_   r_   r`   test_gramschmidt_conjugate_dot`  s    4r   c                  C   sf   t tddd} t tddd}| |}t|| d }t|| d }||d ks+J |dks1J d S )NrO   rW   ru   rP   r   r   )r-   r=   r>  r    )rO   rP   rQ   rR   rr  r_   r_   r`   test_issue_8207m  s   
r!  c                     s<  ddl m}  tddgddgg  ttt tttttdt tt gdtdt ggks4J tddgddgg t  d ttttt	dd t	d d gt	d d t	dd ggkshJ t
tdd	  t
t fd
d	 tg dg dg dg dg  ttt  ksJ t
t fdd	 tddgddgg t t	ttd  ksJ tg dg dg dg t | tdtd  ksJ tg dg dg dg dg  ttt  ksJ tg dg dg dg dg  ttt ttt t  ksJ d S )Nr   nthrootru   rX   rW   rz   ry   c                   S   s   t dtttS r  )r:   analytic_funcr   rS   r_   r_   r_   r`   r|     r   ztest_func.<locals>.<lambda>c                      s    t  tt t S rY   )rS   r$  r   r_   r   r_   r`   r|     r   )r   r   r   rW   )r   ru   r   r   )r   r   r   ru   c                      s     tttS rY   )r$  r   rS   r_   r   r_   r`   r|     r   r  r   "   )rW   r,  ry   )r   r   r   )r   r   r   r   )ru   rX   r   r   )r   ru   rW   r   )r   r   ru   rW   )r   rX   ru   rz   )r   r   ru   rX   )r   r   r   rW   rM  )Zsympy.simplify.simplifyr#  r-   r$  r   rS   rV   r   r   r   rF   r   r   r   r"   r"  r_   r   r`   	test_funcv  s$   HT  "  2r&  c               	   C   s   dd } t d1 tj }|| }| sJ W d    n1 s$w   Y  W d    d S W d    d S 1 s<w   Y  d S )Nc                  S   s&   t jd ksJ tdgg} | |  } dS r   )r?   stater-   r   r_   r_   r`   r    s   ztest_issue_19809.<locals>.fT)r>   
concurrentZfuturesZThreadPoolExecutorZsubmitresult)r  ZexecutorZfuturer_   r_   r`   test_issue_19809  s   

"r*  (  rs  Zconcurrent.futuresr(  Zcollections.abcr   r  r   r   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   Zsympy.matrices.matricesr$   r%   r&   r'   r(   r)   Zsympy.matricesr*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   Zsympy.matrices.utilitiesr?   Zsympy.core.compatibilityr@   Z
sympy.corerA   rB   Z(sympy.functions.special.tensor_functionsrC   Zsympy.utilities.iterablesrD   rE   Zsympy.testing.pytestrF   rG   rH   rI   rJ   Zsympy.assumptionsrL   Zsympy.tensor.arrayrM   Zsympy.matrices.expressionsrN   r   rO   rP   rQ   rR   rS   rT   rU   rV   rc   rp   rs   rw   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r	  r  r  r  r  r  r  r"  r$  r(  r)  r*  r+  r.  r=  r>  rA  rC  rL  rV  rZ  r^  rd  rh  ri  rv  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r
  r  r  r  r  r  r  r  r  r   r#  r%  r'  rL  rM  rN  rO  rQ  rW  rY  rZ  rk  rs  rw  ry  rz  r}  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r  r  r  r  r  r  r  r  r  r   r!  r&  r*  r_   r_   r_   r`   <module>   s    \(,Ma,	O			:		
	
 HK
?7(]
		-


	