
    Xh                    @   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZL d dlMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZU d dlVmWZWmXZX d dlYmZZZ d dl[m\Z\m]Z]m^Z^ d dl_m`Z` d d	lambZbmcZcmdZd d d
lemfZf d dlgmhZhmiZimjZjmkZkmlZlmmZm d dlnmoZompZp d dlqmrZr ee%eefZsee%fZteefZud Zvd Zwd Zxd Zyd Zzd Z{d Z|d Z}d Z~d Zd Zd Zd Zd Zd Zd Zd Zd Zd  Zd! Zd" Zd# Zd$ Zd% Zd& Zd' Zd( Zd) Zd* Zd+ Zd, Zd- Zd. Zd/ Zd0 Zd1 Zd2 Zd3 Zd4 Zd5 Zd6 Zd7 Zd8 Zd9 Zd: Zd; Zd< Zd= Zd> Zd? Zd@ ZdA ZdB ZdC ZdD ZdE ZdF ZdG ZdH ZdI ZdJ ZdK ZdL ZdM ZdN ZdO ZdP ZdQ ZdR ZdS ZdT ZdU ZdV ZdW ZdX ZdY ZdZ Zd[ Zd\ Zd] Zd^ Zd_ Zd` Zda Zdb Zdc Zdd Zde Zdf Zdg Zdh Zdi Zdj Zdk Zdl Zdm Zdn Zdo Zdp Zdq Zdr Zds Zdt Zdu Zdv Zdw Zeldx             Zdy Zdz Zd{ Zd| Zd} Zd~ Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Zd Z d Z!d Z"d Z#d Z$d Z%d Z&d Z'd Z(d Z)d Z*dÄ Z+dĄ Z,dń Z-dƄ Z.dǄ Z/dȄ Z0dɄ Z1dʄ Z2d˄ Z3d̄ Z4d̈́ Z5d΄ Z6dτ Z7eldЄ             Z8dф Z9d҄ Z:dӄ Z;dԄ Z<dՄ Z=dք Z>dׄ Z?d؄ Z@dل ZAdڄ ZBdۄ ZCd܄ ZDd݄ ZEdބ ZFd߄ ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZP ekd          d             ZQd ZRd ZSdS )    N)Hashable)GAbsAddArrayDeferredVectorEExpr	FiniteSetFloatFunctionGramSchmidtIImmutableDenseMatrixImmutableMatrixImmutableSparseMatrixIntegerKroneckerDeltaMatPowMatrixMatrixSymbolMaxMinMutableDenseMatrixMutableSparseMatrixPolyPowPurePolyQ
QuaternionRationalRootOfSSparseMatrixSymbolTupleWildbanded
casoratiancosdiagdiffexpexpandeyefloorhessian	integratelogmatrix_multiply_elementwisenanonesoopi
randMatrix	rot_axis1	rot_axis2	rot_axis3rot_ccw_axis1rot_ccw_axis2rot_ccw_axis3signsimpsimplifysinsqrtsstrsymbolssympifytantrigsimp	wronskianzeroscancel)abcdtxyz)
NumberKindUndefinedKind)_find_reasonable_pivot_naive)MatrixErrorNonSquareMatrixError
ShapeError)
MatrixKind)_dotprodsimp_state	_simplifydotprodsimp)ArrayDerivative)ignore_warningsraisesskipskip_under_pyodideslowwarns_deprecated_sympy)captureiterable)versionc                     t          ddg d          } | j        dk    sJ | j        dk    sJ | d         dk    sJ | d         dk    sJ t          |           g dk    sJ t          | dd d f                   g dk    sJ t          | d d df                   ddgk    sJ t          | d d d d f                   t          |           k    sJ | d d d d f         | k    sJ t          |           | k    sJ t          g dg dg          | k    sJ t          g dg df          | k    sJ t          ddg          | k    sJ t          d	          | k    sJ t          ddgdd
gddgg          | k    rJ d S )N      )   rh   ri            rj   rj   rl   rj   rk   rl   rm   rj   rh   ri   )rp   ro   rk   rm   )r   rowscolslistrP   s    v/var/www/tools.fuzzalab.pt/emblema-extractor/venv/lib/python3.11/site-packages/sympy/matrices/tests/test_matrixbase.pytest__MinimalMatrixrv   #   s   q!'''((A6Q;;;;6Q;;;;Q419999T7a<<<<77(((((((!QQQ$==III%%%%!!!Q$==QF""""!!!QQQ$==DGG####QQQT7a<<<<!99>>>>999iii())Q....999iii())Q....9i())Q....())Q....AAA/00A555555    c                     t          ddgddgg          j        t          t                    k    sJ t          ddgddgg          j        t          t                    k    sJ t          ddg           j        t          t                    k    sJ t          t          gg          j        t          t                    k    sJ t          dt          dgg          gg          j        t          t
                    k    sJ t          dgg          j        t          t                    k    sJ t          dt          dgg          gg          j        t          t
                    k    sJ d S Nrj   rh   ri   rk   r   )r   kindrY   rS   rP   rT   r#    rw   ru   	test_kindr|   6   sL   Aq6Aq6"##(Jz,B,BBBBBAq6Aq6"##(Jz,B,BBBBB!Q Jz$:$:::::A3%==J!7!77777Avse}}%&'',
=0I0IIIII!#z*'='=====!VaSE]]+,--2j6O6OOOOOOOrw   c                     t          d          \  } }}}t          | |g||gg          }t          | |g||gg          }t          | |g||gg          }t	          | |g||gg          }|                                |                                cxk    r=|                                cxk    r$|                                cxk    r| |||dk    sn J d S )Nza:d)r   r   r   rj   rj   r   rn   )rD   r   r   r   r   todok)rK   rL   rM   rN   m1m2m3m4s           ru   
test_todokr   @   s   JAq!Q	aVaV,	-	-B	1v1v.	/	/B	q!fq!f-	.	.B	AA/	0	0B88:: 5 5 5 5rxxzz 5 5 5 5RXXZZ 5 5 5 5Aq!445 5 5 5 5 5 5 5rw   c                     t           j        t           j        t          t          z  t           j        gt          t          t          t          dz  gt          t           j         t          t          z  dgg} t           j        t           j        t          t          z  t           j        t          t          t          t          dz  t          t           j         t          t          z  dg}t          dd|          }|                                | k    sJ d S )Nrh   ri   rk   )	r"   OneHalfrP   rQ   ZerorR   r   tolist)lstflat_lstms      ru   test_tolistr   J   s    E161Q3'!Q1a41qufac1:M
NCqvqsAFAq!QT1qufac1MHq!XA88::rw   c                      t          t          j        dgdt          j        gt          dgg          } dt          j        idt          j        idt          id}|                                 |k    sJ d S )Nr   rj   r   rj   rh   )r   r"   r   r   rP   todod)r   dicts     ru   
test_tododr   Q   sd    
QK!Q011A15zq!&kq!f55D7799rw   c                  J    t          ddg d           t          t           fd           t          t           fd           t          t           fd           t          t           fd                                d                               d          cxk    rt	          g d	g d
g          k    sn J                      d                               d          cxk    rt	          ddgddgddgg          k    sn J                      d                               d          cxk    rt	          g d	g dg          k    sn J                      d                               d          cxk    rt	          ddgddgddgg          k    sn J d S )Nri   	rj   rh   ri   rk   rl   rm         	   c                  .                          d          S Nrl   row_deles   ru   <lambda>z"test_row_col_del.<locals>.<lambda>Y       qyy|| rw   c                  .                          d          S Nr   r   s   ru   r   z"test_row_col_del.<locals>.<lambda>Z       qyy}} rw   c                  .                          d          S r   col_delr   s   ru   r   z"test_row_col_del.<locals>.<lambda>[   r   rw   c                  .                          d          S r   r   r   s   ru   r   z"test_row_col_del.<locals>.<lambda>\   r   rw   rh   rp   ro   rj   rk   rl   r   r   r   r   r   rm   r   )r   r_   
IndexErrorr   r   r   r   s   @ru   test_row_col_delr   W   s   1999::A
:++++,,,
:,,,,---
:++++,,,
:,,,,---99Q<<199R==JJJJFIIIyyy3I,J,JJJJJJJ99Q<<199R==LLLLFQFQFQF3K,L,LLLLLLL99Q<<199R==JJJJFIIIyyy3I,J,JJJJJJJ99Q<<199R==LLLLFQFQFQF3K,L,LLLLLLLLLrw   c                  d   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          } | j                    | gk    sJ  |j                    |gk    sJ  |j                    |gk    sJ d S Nrj   rh   ri   )r   rP   rQ   rR   get_diag_blocks)rK   rL   rM   s      ru   test_get_diag_blocks1r   e   s    AA  AAA  AAq	Aq!9q!Qi011A11#%%%%11#%%%%11#%%%%%%rw   c                  .   t          ddgddgg          } t          dt          gt          dgg          }t          dt          dgt          dt          gt          t          t          gg          }t	          | ||          t	          | ||          t	          | ||          t	          |||          f\  }}}}t          |j        |j        |          }t          |j        |j        |          }t          |j        |j        |          }t          |j        |j        |          }|                                | ||gk    sJ |                                | ||gk    sJ |                                | ||gk    sJ |                                |||gk    sJ d S r   )r   rP   rQ   rR   r*   rq   rr   r   )rK   rL   rM   ABCDs          ru   test_get_diag_blocks2r   n   s   AA  AAA  AAq	Aq!9q!Qi011AaAQ1tAq!}}d1ammKJAq!Qqvqvq!!Aqvqvq!!Aqvqvq!!Aqvqvq!!A1a)++++1a)++++1a)++++1a)++++++rw   c                      t          ddg d          } |                     d          t          ddg d          k    sJ |                     d          t          ddg d          k    sJ d S )Nri   r   r   rj   rp   rj   rk   r   )r   rowcolr   s    ru   test_row_colr   ~   sv    q!00011A5588vaIII......5588vaIII........rw   c                      t          d                              t          g d                    t          g dg dg dg          k    sJ d S )Nri   r   r   r   )rj   r   r   r   )r   rj   r   r   )r   r   rj   r   )r.   row_joinr   r{   rw   ru   test_row_joinr      sg    q66??6))),,--<<<<<<<! " "" " " " " "rw   c                      t          d                              t          g dg                    t          g dg dg dg dg          k    sJ d S )Nri   r   rj   r   r   r   rj   r   r   r   rj   )r.   col_joinr   r{   rw   ru   test_col_joinr      sp    q66??6999+..//999999999       rw   c                      t          g dg          } t          dd          D ]j}g d}|                    |d           t          d                              ||                               d                                          |k    sJ kd S )Nrk   rk   rk   rl   r   rk   ri   r   )r   rangeinsertr.   
row_insertr   flat)r4ils      ru   test_row_insertr      s    			B2q\\ ; ;II	A1vv  B''++A..3355:::::; ;rw   c                     t          g d          } t          dd          D ]j}g d}|                    |d           t          d                              ||                               d                                          |k    sJ kt          d                              dt          d	d	gd	d	gd	d	gd	d	gd	d	gd	d	gg                    t          g d
g dg dg dg dg dg          k    sJ d S )Nr   r   rl   r   r   r   rk   ri   r   rm   rh   )rj   r   r   rh   rh   r   r   r   )r   rj   r   rh   rh   r   r   r   )r   r   rj   rh   rh   r   r   r   )r   r   r   rh   rh   rj   r   r   )r   r   r   rh   rh   r   rj   r   )r   r   r   rh   rh   r   r   rj   )r   r   r   rI   
col_insertr   r   r.   )c4r   r   s      ru   test_col_insertr      s7   						B2q\\ = =II	AQxx""1b))--a0055771<<<<<q66QAAAAAQRTUPV'W X XYY++++++++++++++++++- . .. . . . . .rw   c                      t          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    sJ                      t          d          t          d                     k    sJ t          t           fd           t          t           fd           d S )Nrk   ri   c                     | dz  |z   S Nri   r{   r   js     ru   r   ztest_extract.<locals>.<lambda>       !A#' rw   )r   rj   ri   r   rj   rh   )r   rj   ri   rk   r   
   r   r   rh   )r   r   rh   r   r      c                  4                          dgdg          S )Nrk   r   extractr   s   ru   r   ztest_extract.<locals>.<lambda>       qyy!qc22 rw   c                  4                          dgdg          S )Nr   ri   r   r   s   ru   r   ztest_extract.<locals>.<lambda>   r   rw   )r   r   r   r_   r   r   s   @ru   test_extractr      s    q!))**A99YYYA''6!Q8K8K8K+L+LLLLL99aVYYY''6!Q8K8K8K+L+LLLLL99U1XXuQxx((A----
:2222333
:222233333rw   c                     t          ddd           t          ddd                                         k    sJ                               t          j                  cxk    rt          g dg dg dg dg          k    sn J t          t          fd	           t          j                    t                      k    sJ t          j        d
d
          } t          j        d
d          }t          j        d
d          }t          j        d
d          }t          j        | |||          j        d
k    rj        dk    sJ d S )Nrk   ri   c                     | dz  |z   S r   r{   r   s     ru   r   ztest_hstack.<locals>.<lambda>   r   rw   c                     | dz  |z   S r   r{   r   s     ru   r   ztest_hstack.<locals>.<lambda>       1Q37 rw   )	r   rj   rh   r   rj   rh   r   rj   rh   )	ri   rk   rl   ri   rk   rl   ri   rk   rl   )	rm   r   r   rm   r   r   rm   r   r   )	r   r   r   r   r   r   r   r   r   c                  0                                     S N)hstackr   r   s   ru   r   ztest_hstack.<locals>.<lambda>       qxx2 rw   r   rj   rh   rm   )r   r   r_   rX   rI   rq   rr   )M1M2M3M4r   r   s       @@ru   test_hstackr      s   q!))**A	1**	+	+B88Aq!aA 6 6 4 4 4 4&111111111111	B3 ;4 ;4 4 4 4 4 4 4
 :.....///=??fhh&&&& 
a		B	a		B	a		B	a		Bb"b"%%A6Q;;16Q;;;;;;rw   c                      t          ddd            t          ddd                                            k    sJ                                   t          j                     cxk    r7t          g dg dg dg dg dg dg dg dg dg dg dg dg          k    sn J t          t           fd	           t          j                    t                      k    sJ d S )
Nrk   ri   c                     | dz  |z   S r   r{   r   s     ru   r   ztest_vstack.<locals>.<lambda>   r   rw   c                     | dz  |z   S r   r{   r   s     ru   r   ztest_vstack.<locals>.<lambda>   r   rw   r   ri   rk   rl   rm   r   r   r   r   r   c                  0                                     S r   )vstackr   s   ru   r   ztest_vstack.<locals>.<lambda>   r   rw   )r   r   r_   rX   r   s   @@ru   test_vstackr      sD   q!))**A	1**	+	+B88Aq!aA 6 6 . . . .& + + + + + + + + + + + +B- ;. ;. . . . . . . :.....///=??fhh&&&&&&rw   c                  P   t          t          t          fdf          } |                     t                    sJ |                     t                    rJ |                     t
                    sJ t          dt          fdf          } |                     t                    rJ d S )Nrh   ri   rh   )r   rP   rQ   hasrR   r$   r   s    ru   test_hasr     s    A  A5588OOOuuQxx55==A  AuuQxxrw   c                     t          d          } t          ddddg                                          du sJ t          ddd| dz  d| z  z   dz   t          | dz   dz   d| t          z  t           |  t          z  dg	          }|                                du sJ |                    d          J |                    d	           J t          ddd
 |D                       }|                    d          du sJ t          ddd t          j        gt          |          dd          z   D                       }|                                du sJ d S )NrP   rh   rj   Fri   r   Tr@   c                     | S r   r{   rt   s    ru   r   z(test_is_anti_symmetric.<locals>.<lambda>       ! rw   c                 ,    g | ]} |j                     S r{   r-   .0rP   s     ru   
<listcomp>z*test_is_anti_symmetric.<locals>.<listcomp>   s     ,,,Qhahjj,,,rw   c                 ,    g | ]} |j                     S r{   r	  r
  s     ru   r  z*test_is_anti_symmetric.<locals>.<listcomp>   s     @@@Qhahjj@@@rw   )rD   r   is_anti_symmetricrQ   r"   r   rs   )rP   r   s     ru   test_is_anti_symmetricr     sy   A!QA1133u<<<<q!aA!aa!eaZKAaC!aRT1MNNA  D((((..66644<<<q!,,!,,,--A..$6666q!@@15'DGGABBK*?@@@AAA  E))))))rw   c                  p   t          dt          gt           dgg          } | j        sJ t          dt          z  t          gt           dgg          } | j        du sJ t          t          t          gt           dgg          } | j        J t          t          dgt           dgg          } | j        du sJ d S )Nrj   rh   Fr   r   is_hermitianrP   rK   s    ru   test_is_hermitianr     s    A!Q !!A>1aA2q'"##A>U""""A!Q !!A>!!!A!Q !!A>U""""""rw   c                  v   t          t          t          gt          t          gg          }  | j                    du sJ t          g dg dg          }  | j                    du sJ t          g dddt          dgg          }  | j                    du sJ t          dt          d	gg          }  | j                    du sJ t          g d
g          }  | j                    du sJ t          dgt          gd	gg          }  | j                    du sJ t          dgdgd	gg          }  | j                    du sJ d S )NTrj   rh   ri   rk   rl   rm   r   r   Frl   rm   r   rj   ri   rp   rh   )r   rP   is_symbolicr  s    ru   test_is_symbolicr    sc   AA  A1=??d""""lll+,,A1=??e####q!Ql+,,A1=??d""""Aq	{A1=??d""""			{A1=??e####aS1#A1=??d""""aS1#A1=??e######rw   c                  z    t          dgdgg          } t          ddgddgg          }| j        rJ |j        sJ d S Nrj   rh   )r   	is_squarer   s     ru   test_is_squarer    sS    aSzA	!Q!Q 	!	!B{<rw   c                      t          ddg d          } |                                 sJ t          ddg d          } |                                 rJ d S )Nrh   r   rj   rj   r   r   rj   r   rj   )r   is_symmetricr   s    ru   test_is_symmetricr"    s^    q!\\\""A>>q!\\\""A~~rw   c                     t          g dg dg dg          } | j        sJ t          ddg d          } | j        sJ t          ddg d          } | j        du sJ | j        du sJ t          g dg dg dg          } | j        rJ d S )	Nri   rk   rj   rh   rk   rl   r   ri   )	ri   rh   r   rk   rk   rj   rj   rl   rh   )	ri   rh   r   rk   rk   rj   rj   rl   rh   Fri   rj   rh   )r   is_upper_hessenbergis_lower_hessenbergr  s    ru   test_is_hessenbergr)     s    			999iii011A    q!00011A    q!11122A E)))) E))))			999iii011A$$$$$$rw   c            
         t          t          ddg d                                                    h dk    sJ t          dd          } t          t          dd| dddg                                                    | dhk    sJ d S )	Nrh   r   rj   rh   ri   >   rj   rh   ri   rP   Trealr   rj   )setr   valuesr$   rt   s    ru   test_valuesr0  -  s    vaLLL 
 

&((  yy! ! ! !sAvaQ1aL 
 

&(( 1v     rw   c                     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    sJ | j        | j        j        k    sJ | j        t          ddgt           dgddgg          k    sJ d S )Nr   rl   rj   rh   r   rj   rh   )r   r   Tr   	conjugateHMs    ru   test_conjugater8  5  s   Aq			 	 	A 3&1a&a&a&" # # # # # # 3&1qb!*$**& ' ' ' ' ' '3!++--3!#%<<<<3&Aq'2q'q'# $ $ $ $ $ $ $ $rw   c                      t          t          t          t          d          gg          } | d         dt          z  k    sJ  | j                    t          dt          z  gg          k    sJ d S )NFevaluater   rh   )r   r   rP   doitr  s    ru   	test_doitr=  G  sf    QE***+,--AQ41Q3;;;;1688v!ug&&&&&&rw   c                  D    t          ddt          d          dg           t           fdt          d          D                       sJ t           fdt          d          D                       sJ t           fdt          d          D                       sJ d S )Nrh   rj   rl   rm   c              3   z   K   | ]5} j                     |         |                                          k    V  6d S r   evalfr  r   rK   s     ru   	<genexpr>ztest_evalf.<locals>.<genexpr>O  s@      >>wqwyy|qtzz||+>>>>>>rw   c              3   ~   K   | ]7} j         d           |         |                              d           k    V  8dS rh   Nr@  rB  s     ru   rC  ztest_evalf.<locals>.<genexpr>P  sD      @@!wqwqzz!}!

1-@@@@@@rw   c              3   ~   K   | ]7} j         d           |         |                              d           k    V  8dS rE  nrB  s     ru   rC  ztest_evalf.<locals>.<genexpr>Q  sD      88!sqs1vvayAaDFF1II%888888rw   )r   rB   allr   r  s   @ru   
test_evalfrJ  M  s    q!d1ggq\""A>>>>U1XX>>>>>>>>@@@@uQxx@@@@@@@@8888uQxx8888888888rw   c                      t          dt                    \  t          ddfd          } t          ddfd          }|                              }|| k    sJ d S )NF, Gclsrh   c                       | |z             S r   r{   r   r   Gs     ru   r   ztest_replace.<locals>.<lambda>V      !!AaC&& rw   c                       | |z             S r   r{   r   r   Fs     ru   r   ztest_replace.<locals>.<lambda>W  rR  rw   rD   r   r   replace)Kr7  NrU  rQ  s      @@ru   test_replacerZ  T  sr    6x(((DAqq!(((())Aq!(((())A			!QA666666rw   c            	      T   t          dt                    \  t          ddfd          } |                     d          \  }}|t          ddfd          k    sJ | d           d           d           d           d           d          ik    sJ d S )	NrL  rM  rh   c                       | |z             S r   r{   rT  s     ru   r   z"test_replace_map.<locals>.<lambda>^  rR  rw   Tc                       | |z             S r   r{   rP  s     ru   r   z"test_replace_map.<locals>.<lambda>`  s    !!AaC&& rw   r   rj   rV  )r7  rY  rN   rU  rQ  s      @@ru   test_replace_mapr^  \  s    6x(((DAqq!(((())A99Q4  DAqq!00001111111qqttQQqTT11Q441qqtt4444444rw   c                     	 ddl mm}  n# t          $ r t	          d           Y nw xY wt          ddgddgg           ddgddgg          } |            |          sJ  |  d	          |          sJ t          t          d
                              d          d                   dk    rt          t          fd           d S d S )Nr   )arrayarray_equal?NumPy must be available to test creating matrices from ndarraysrj   rh   ri   rk   Tcopynumpy.c                        d          S )NFrc  r{   )r   r`  s   ru   r   z'test_numpy_conversion.<locals>.<lambda>m  s    %%"6"6"6 rw   )re  r`  ra  ImportErrorr`   r   intrf   splitr_   	TypeError)ra  np_arrayr   r`  s     @@ru   test_numpy_conversionrm  c  s-   P,,,,,,,,, P P PNOOOOOP1!u~AuqeaU^$$H;uuQxx*****;uuQT***H55555
77!!#&&q)**a//y6666677777 0/s    ))c                     t          ddgddgg          } | |                     d          cxk    r|                     d          k    sn J |                     d          |                     d          cxk    r-|                     d          cxk    rt          d          k    sn J |                     d          |                     d	          cxk    r-|                     d
          cxk    rt          d          k    sn J |                                 |                     d          cxk    r-|                     d          cxk    rt          d          k    sn J d S )Nrj   rh   ri   rk   r   r   rm   ))rk   ri   rh   rj   r   r   ))rh   rk   rj   ri   )ri   rj   )rk   rh   )r   rot90r  s    ru   
test_rot90ru  o  sg   AA  A

((((aggajj((((((771::NNNN

NNNNf=M6N6NNNNNNN771::NNNN

NNNNf=M6N6NNNNNNN7799NNNNqwwr{{NNNNf=M6N6NNNNNNNNNrw   c                     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          z   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          z   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          z   dgg                              t          dt          di          t          ddgddgg          k    sJ t          t          t          z  gg                              t          t          dz
  t          t          dz
  id	          t          t          dz
  t          dz
  z  gg          k    sJ d S )
Nrj   rk   rl   rh   r   r   rr  T)simultaneous)r   rP   subsrQ   r{   rw   ru   	test_subsry  w  s   Aq6Aq6"##((A..&1a&1a&9I2J2JJJJJAq6AE1:&'',,q"g2w-?@@B7RG$%%& & & &Aq6AE1:&'',,q"g2w-?@@B7RG$%%& & & &Aq6AE1:&'',,aQ^<<B7RG$%%& & & &AaC5'??AE1a!e 44HHQUQUO$%&&' ' ' ' ' 'rw   c                  X   t          ddg d          t          t          fd           t          t          fd            j        ddgddgg          }  j        ddgddgg          | cxk    rt          g d	g d
g dg          k    sn J  j        ddgddgg          }  j        ddgddggd          | cxk    rt          g dg dg dg          k    sn J  j        ddgddggd          }  j        ddgddggdd          | cxk    rt          g dg dg dg          k    sn J  j        g d          t          g d	g d
g dg          k    sJ ddlm}  j         |g d                    t          g d	g d
g dg          k    sJ d S )Nri   rk   )rj   rh   ri   rk   rl   rm   r   r   r   r   r      c                  *      j         ddgg          S )Nr   rl   )permuter  s   ru   r   ztest_permute.<locals>.<lambda>  s    yqy1a&22 rw   c                  >      j         t          d                    S )NrP   )r}  r$   r  s   ru   r   ztest_permute.<locals>.<lambda>  s    yqy55 rw   r   rh   rj   r  r   r   r   r{  r  rr   )orientation)rh   ri   rj   rk   )rm   r   rl   r   )r   r   r   r{  backward)	direction)r  r  )ri   rj   rh   rk   )r   rl   rm   r   )r   r   r   r{  )rj   rh   r   ri   )Permutation)	r   r_   r   
ValueErrorpermute_rowsr}  permute_colssympy.combinatoricsr  )rL   r  rK   s     @ru   test_permuter    s   q!<<<==A
:2222333
:5555666AA'((A19q!fq!f%&&! > > > >v,;OO,;OO,;OO7= 0> 0> > > > > > >
 	AA'((A19q!fq!f%6:::a . . . ."+OO+OO+OO$- . .. . . . . . 	AA':>>>A19q!fq!f%6ZPPPTU . . . ."+OO+OO+OO$- . .. . . . . . 19\\\""f,;OO,;OO,;OO.= '> '> > > > >
 0/////19[[..//6,;OO,;OO,;OO;= 4> 4> > > > > > >rw   c                  ~   t          g dg dg dg dg          } |                     d          }|t          g dg dg dg dg          k    sJ |                     d          }|t          g dg dg dg dg          k    sJ |                                 }|t          g dg dg dg dg          k    sJ d S )Nrj   rj   rj   rj   rh   r   r   rj   rj   r   r   r   rj   r   r   r   r   r   )r   rj   rj   rj   )r   upper_triangular)r   Rs     ru   test_upper_triangularr    sE   	 	 	A 	
1A$$$$	       	
2A$$$$	       	
A$$$$	        rw   c                  ~   t          g dg dg dg dg          } |                                 }|t          g dg dg dg dg          k    sJ |                     d          }|t          g dg dg dg dg          k    sJ |                     d          }|t          g dg dg dg dg          k    sJ d S )Nr  rj   r   r   r   rj   rj   r   r   rj   rj   rj   r   rh   r   r  )r   lower_triangularr   Ls     ru   test_lower_triangularr    sE   $$$$	 	 	A 	
A$$$$	& ' ' ' ' ' ' 	
1A$$$$	       	
2A$$$$	        rw   c            	          t          g dt          t          t          gdt          z  dt          t          z  gg             z   t          g ddt          z  dt          z  dt          z  gdt          z  ddt          z  t          z  gg          k    sJ t          ddddg          t	          t
           fd           d S )	Nrp   rh   rh   rk   rm   rk   rj   c                       z   S r   r{   r   rH  s   ru   r   ztest_add.<locals>.<lambda>      q1u rw   r   rP   rQ   rR   r_   rX   r  s   @@ru   test_addr        			Aq!9qsC1o677Aq5FIII!QqS!A#1dAaCE8JKLLLLLLq!aVA
:}}}}}%%%%%rw   c                  N   t          ddgddgg          }  | j        d          t          k    sJ  | j        d          t          k    sJ 	 t	          d           n# t
          $ r Y nt          $ r Y nw xY w	 t	          d           d S # t
          $ r Y d S t          $ r Y d S w xY w)Nrj   rh   ri   rk   z2 @ aza @ 2)r   
__matmul__NotImplemented__rmatmul__evalSyntaxErrorrk  r  s    ru   test_matmulr    s    AA  A1<??n,,,,1=~----W      W      s0   A 
A5)	A54A59B
 

B$	B$#B$c                      G d dt                     } t          ddgddgg          } |             }||z  t          |d|z  gd|z  d|z  gg          k    sJ ||z  t          |d|z  gd|z  d|z  gg          k    sJ dS )zd
    Test that if explicitly specified as non-matrix, mul reverts
    to scalar multiplication.
    c                       e Zd ZdZdZdZdS )test_non_matmul.<locals>.fooFrn   N)__name__
__module____qualname__	is_Matrixis_MatrixLikeshaper{   rw   ru   foor    s        	rw   r  rj   rh   ri   rk   N)r	   r   )r  r   rL   s      ru   test_non_matmulr  	  s    
    d   
 	AA  AAQ3&1ac(QqS!A#J/000000Q3&1ac(QqS!A#J/00000000rw   c                  `    t          ddddg          } |  t          ddddg          k    sJ d S )Nrj   rh   r   r   r   rG  s    ru   test_negr    s@    q!aVA21r2h''''''''rw   c                  d    t          ddddg          } | | z
  t          ddddg          k    sJ d S )Nrj   rh   r   r  rG  s    ru   test_subr    sB    q!aVAq5F1a!Q((((((((rw   c            	          t          ddddg          } | dz  t          ddt          j        t          d          dz  g          k    sJ d S r  )r   r"   r   rG  s    ru   test_divr  #  sO    q!aVAQ3&A!Q/00000000rw   c                  j   t          t          j        dd                    g dk    sJ t          t          j        d                    g dk    sJ t          t          j        d                    t          k    sJ t          t          j        dt                              t          k    sJ d S )Nrh   rj   r   r   rj   rM  )rs   r   r.   typer{   rw   ru   test_eyer  (  s    
1a  !!\\\1111
1,,,....
1&((((
1&)))**f444444rw   c                     t          t          j        dd                    g dk    sJ t          t          j        d                    g dk    sJ t          j        dd          t          g dg dg          k    sJ t          t          j        d                    t          k    sJ t          t          j        dt                              t          k    sJ d S )Nrh   r  ri   rj   rj   rj   rM  )rs   r   r5   r  r{   rw   ru   	test_onesr  /  s    Aq!!""lll2222A<<<////;q!			999'= > >>>>>A6))))A6***++v555555rw   c                     t          t          j        dd                    g dk    sJ t          t          j        d                    g dk    sJ t          j        dd          t          g dg dg          k    sJ t          t          j        d                    t          k    sJ t          t          j        dt                              t          k    sJ d S )Nrh   r  ri   r   rM  )rs   r   rI   r  r{   rw   ru   
test_zerosr  7  s    Q""##|||3333Q  LLL0000<1III(>!?!?????Q  F****QF+++,,666666rw   c                  ^
    t           j        t          ddgddgg           t          dt          gt          dgg          t          dt          dgt          dt          gt          t          t          gg                      t          g dg ddddt          ddgddt          dddgdddddt          gddddt          dgg          k    sJ             t          g dg ddddt          dddgddt          ddddgdddddt          dgddddt          dt          gddddt          t          t          gg          k    sJ             t          g dg ddddt          dddgddt          dt          ddgddt          t          t          ddgddddddt          gdddddt          dgg          k    sJ t          t          t          t          g           t          ddgdd	gg          t          d
dgg            d          t          t          dddddgt          dddddgt          dddddgg dg dg dg dg          k    sJ t          t           fd            d          t          dgg          k    sJ  dd          t          ddgddgg          k    sJ  dd          t          ddgddgg          k    sJ  ddd          t          ddgddgddgg          k    sJ  ddg t          ddgddgg          k    sJ  t          ddg                    t          dgdgg          k    sJ  dddgd	gd           dgddgd	ggd          cxk    rt          ddgddgd	dgg          k    sn J t           d                    t           k    sJ t           dt                               t           k    sJ t          j        g d          t          j        ddd          k    sJ t          j        g dd          j        dk    sJ t          j        g dg          j        dk    sJ t          j        g dgd          j        dk    sJ t          j        g dgg          j        dk    sJ t          j        t          dd          dd          t          g dg dg          k    sJ t          j        t          dd          dd          t          ddgddgddgddgg          k    sJ d S )Nrj   rh   ri   )rj   rh   r   r   r   r   )rh   ri   r   r   r   r   r   )rj   rh   r   r   r   r   r   )rh   ri   r   r   r   r   r   rk   rl   rm   r   )r   r   r   r   r   r   )r   r   rj   rh   r   r   )r   r   ri   rk   r   r   )r   r   r   r   rl   rm   c                  $      dd          S )Nr   rl   rq   r{   rK   rL   rM   r*   s   ru   r   z test_diag_make.<locals>.<lambda>l  s    ttAq!QQ777 rw   r  )rr   )rq   rr   F)unpackrM  rp   rs  rp  r   r   rj   r   )r   r   r   rh   )
r   r*   rP   rQ   rR   r_   r  r  r  r5   r  s   @@@@ru   test_diag_maker  ?  s   ;DAA  AAA  AAq	Aq!9q!Qi011A41a==F	
Aq!Q	
Aq!Q	
Aq!Q	
Aq!Q$       41a==F	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1$       41a==F	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1	
Aq!Q1$       	1ayAAA  AAxA 41av	
Aq!Q	
Aq!Q	
Aq!Q'         :7777777888477fqcUmm####4???fq!fq!f%56666664???fq!fq!f%56666664"""fq!fq!fq!f-E&F&FFFFF4!Q=F	
A	
A$       41v6	
	
+ $ $     4QFAu---D1#1vs#E222   6<	
A	
A	
A> 7 7     
 Q==F""""QF###$$....;yyy!!V[Aq%9%99999;yyy///5????;			{##)V3333;			{511176AAAA;}%%+v5555;tAqzz1a((F4 - -     ;tAqzz1a((F	
A	
A	
A	
A	4 - -      rw   c                      t          ddt          d                                                    } |                     d          k    sJ t          |           dk    sJ t                              d                    dk    sJ t                              d                    dk    sJ t                              d	                    d
k    sJ t	                                                    t	                    k    sJ t          ddddi          }t	          |                                          t	          |          k    sJ t	                    t	          |          k    sJ t          t          fd           t          t          fd           t          t          fd           t          d	d          t          fdt          dj
        z
  j                  D                       k    sJ d S )Nri   r   r   )r   rk   r   rj   rj   rl   r   )ri   r   rh   rh   rn   c                  .                          d          S r   diagonalr   s   ru   r   ztest_diagonal.<locals>.<lambda>  s    qzz!}} rw   c                  .                          d          S )Nrr  r  r   s   ru   r   ztest_diagonal.<locals>.<lambda>  s    qzz"~~ rw   c                  8                          t                    S r   )r  r7   r   s   ru   r   ztest_diagonal.<locals>.<lambda>  s    qzz"~~ rw   c                 V    i | ]%}|t                              |                    &S r{   )rs   r  )r  r   r7  s     ru   
<dictcomp>z!test_diagonal.<locals>.<dictcomp>  s=     * * * d1::a==)) * * *rw   )r   r   r  tupler  r#   r_   r  r5   r'   rq   rr   )rN   sr7  r   s     @@ru   test_diagonalr    s   q!U1XXA	

A

188y    A6))))B  F****A4''''

a((((QFA;''A

a((((77d1gg
:,,,,---
:----...
:----...Q

A * * * *qx((* * * + +./0 0 0 0 0 0rw   c                     t          j        dd          t          j        dd          cxk    rot          j        dd          cxk    rTt          j        ddd          cxk    r8t          j        ddd          cxk    rt          g dg d	g d
g          k    sn J t          j        ddd          t          g dg dg dg          k    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          j        dd          t          j        dd          k    sJ d S )Nri   rh   
eigenvalue)sizer  upper)band)r  eigenvalr  rh   rj   r   )r   rh   rj   r   lowerrh   r   r   r2  r   c                  *    t          j        d          S Nrh   r   jordan_blockr{   rw   ru   r   z#test_jordan_block.<locals>.<lambda>  s    v2155 rw   c                  ,    t          j        dd          S )Ng      @rh   r  r{   rw   ru   r   z#test_jordan_block.<locals>.<lambda>  s    v23:: rw   c                  ,    t          j        d          S )Nrh   r  r  r{   rw   ru   r   z#test_jordan_block.<locals>.<lambda>  s    v2a@@@ rw   c                  .    t          j        dd          S )Nrh   rk   )r  r  r  r{   rw   ru   r   z#test_jordan_block.<locals>.<lambda>  s    Fq" " " rw   )r  r  )r   r  r_   r  r{   rw   ru   test_jordan_blockr    s   q!$$(;A!(L(L(L    "a888   "1ag666    "q2 2 2   
 						        q!'222fIIIIII> 7  7         
 :55666
:::;;;
:@@AAA
:" "# # #
 A!444Q///0 0 0 0 0 0rw   c            	         t          ddgddgg          } |                     t          dgdgg                    t          dgdgg          gk    sJ |                     t          dgdgg          d          t          dt          d          z  dz  gt          d          dz  gg          gk    sJ |                     t          dgdgg          t          dgdgg                    t          dgdgg          t          t          d	d          gt          d
d          gg          gk    sJ |                     t          dgdgg          t          dgdgg                    t          dgdgg          gk    sJ |                     t          dgdgg                    g k    sJ t          g dg dg dg          }t          dgdgg          t          dgdgg          t          dgdgg          g |j         t          dgdgg          t          t          dd          gt          dd          gg          gk    sJ t          g d          t          g d          t          g d          gt	          t
          fd           t          g d          t          g d          t          g d          gt	          t
          fd           d S )Nrj   rh   ri   rk   T	normalizerl   r   rm   r   )r   rj   r   )ri   rm   r   )r   rl   rh   r   r         r   rp   )rj   rk   rl   c                  &    t          j         ddiS N	rankcheckTr   orthogonalizevecss   ru   r   z$test_orthogonalize.<locals>.<lambda>      v3TJTJJ rw   ro   r   c                  &    t          j         ddiS r  r  r  s   ru   r   z$test_orthogonalize.<locals>.<lambda>  r  rw   )r   r  rB   r    r_   r  )r   rH  r  s     @ru   test_orthogonalizer    s*   AA  A??6A3*--..6A3*3E3E2FFFFF??6A3*--?>>	!DGG)A+a,	-	-./ / / /??6A3*--vtaSk/B/BCC	!qc
		VhsA&6&6%7(1a..9I$JKKLM M M M??6A3*--vtaSk/B/BCC	"s		   ??6A3*--.."4444			:::yyy122ARD1#;"s!4!4frdRD\6J6JKD1?D!	"s		fx2&7(2r:J:J9K%LMMNO O O O 999viii00&2C2CDD
:JJJJKKK999viii00&2C2CDD
:JJJJKKKKKrw   c                     t          j        d          \  } }| t          g dg dg dg          k    sJ |t          g dg dg dg          k    sJ t          j        d          \  } }| t          g dg dg d	g d
g dg dg dg          k    sJ |t          g dg dg dg d
g dg dg dg          k    sJ d S )Nrj   )r   rj   r   rj   r   rj   )r   rj   rj   rj   rj   r   ri   )rr  rj   r   r   r   r   r   )rj   r   rj   r   r   r   r   )r   rj   r   rj   r   r   r   )r   r   rj   r   rj   r   r   )r   r   r   rj   rj   rj   r   )r   r   r   r   rj   rh   rj   )r   r   r   r   r   rj   ri   )ri   rj   r   r   r   r   r   )rj   rh   rj   r   r   r   r   )r   rj   rj   rj   r   r   r   )r   	wilkinson)wminuswpluss     ru   test_wilkinsonr    s   $Q''MFEV *

 )		 )		+ , , , , , , F%II%II%II' ( ( ( ( ( (
 $Q''MFEV 8 8 8 7 7 7 7 7 7 7 7 7 7 7 7 7 7 7             F1111111111111111111113 4 4 4 4 4 4 4 4rw   c            	         t          d          \  } }t          ddd| z  |g          }|                    | d          t          ddt          dd          |g          k    sJ t          ddt	          |           | z  f|ddfdd| dz  dz   ff          }|                    | d          t          d|ddfd	f          k    sJ d S )
Nx yrh   rj   rl   rk   r   r   )rj   rk   rj   )r   rl   rj   )rD   r   limitr    rA   )rP   rQ   r   r   s       ru   
test_limitr    s    5>>DAqq!ac1XA771a==F1a(1a..!)<======As1vvax 1a)b!QTAX->?@@A771a==FI1ay*#EFFFFFFFFrw   c                       t          g dg dg dg           g dt          t           fd           t          t           fd           d S )Nrp   ro   r   r  c                       z  S r   r{   r7  vs   ru   r   z"test_issue_13774.<locals>.<lambda>      ac rw   c                       z  S r   r{   r  s   ru   r   z"test_issue_13774.<locals>.<lambda>  r
  rw   )r   r_   rk  r  s   @@ru   test_issue_13774r     sc    			999iii011A		A
9kkkkk"""
9kkkkk"""""rw   c                     t          d          t          d          t          t          d            t          t          fd           t          t          fd           t          t          fd           t          d          \  } }}t	          j        t          d| g                    t	          |  g          k    sJ t	          j        t          d|| g                    t	          d	|  gd| gg          k    sJ t	          j        t          d||| g                    t	          d	d	|  gdd	| gd	d| gg          k    sJ d S )
NrP   rQ   c                  *    t          j        d          S Nrj   )r   	companionr{   rw   ru   r   z test_companion.<locals>.<lambda>
  s    v/22 rw   c                  J    t          j        t          dg                     S r  r   r  r   rt   s   ru   r   z test_companion.<locals>.<lambda>  s    v/aS!== rw   c                  L    t          j        t          ddg                     S )Nrh   rj   r  rt   s   ru   r   z test_companion.<locals>.<lambda>  s    v/aVQ@@ rw   c                  R    t          j        t           z   g                    S r   r  rP   rQ   s   ru   r   z test_companion.<locals>.<lambda>  s$    v/QqS1a&0A0ABB rw   zc0:3rj   r   )r$   r_   r  rD   r   r  r   )c0c1c2rP   rQ   s      @@ru   test_companionr    sz   sAsA
:22333
:====>>>
:@@@@AAA
:BBBBBCCCJBBD!R!,,--">>>>D!Ra0011RC1rc(#$$% % % %D!RR!4455AsaRC[1a"+6778 8 8 8 8 8rw   c            	         t          d          \  } }}t          | ||g          }|                    t          | ||gg d                    }|t          dgdgdgg          k    sJ t          | | | | | g| | | | | g| | | | | gg          }|                    t          | gdg                    }|t          g dg dg dg          k    sJ d S )Nzx, y zrp   rj   rh   ri   )rj   rj   rj   rj   rj   )rD   r   rx  zip)rP   rQ   rR   r   r   s        ru   test_issue_10589r    s    hGAq!	Aq			B	aAY			**	+	+B!qcA3((((((	!Q1a1aAq/Aq!Q?C	D	DB	aS1#		B///???KLLLLLLLLrw   c                       G d dt                     } t          ddg d          } | ddg d          }||z  }t          ||           sJ |t          ddgddgg          k    sJ d S )	Nc                   "    e Zd Zej        dz   ZdS )test_rmul_pr19860.<locals>.Foog{Gz?N)r  r  r  r   _op_priorityr{   rw   ru   Foor  #  s        )6=rw   r!  rh   r  r   r         )r   r   
isinstance)r!  rK   rL   rM   s       ru   test_rmul_pr19860r%  "  s    > > > > >" > > > 	q!\\\""AAq,,,A 	
!AaB"b*++++++++rw   c                       t          ddgddgg           t          ddgddgg          t          t           fd           t          t           fd           d S )Nrj   rh   ri   rk   c                       z   S r   r{   r   r   s   ru   r   z"test_issue_18956.<locals>.<lambda>4      a!e rw   c                       z   S r   r{   r(  s   ru   r   z"test_issue_18956.<locals>.<lambda>5  r)  rw   )r   r   r_   rk  r(  s   @@ru   test_issue_18956r+  1  sm    1v1vA1qe}A
9mmmmm$$$
9mmmmm$$$$$rw   c                       G d dt                     } t          ddddg          }| |             k    sJ  G d d|           }| |            k    sJ d S )Nc                       e Zd Zd Zd ZdS )test__eq__.<locals>.Myc              3      K   dV  dV  d S r  r{   selfs    ru   __iter__ztest__eq__.<locals>.My.__iter__:  s      GGGGGGFrw   c                 ,    t          |           |         S r   )rs   )r1  r   s     ru   __getitem__z"test__eq__.<locals>.My.__getitem__>  s    ::a= rw   N)r  r  r  r2  r4  r{   rw   ru   Myr.  9  s2        	 	 		! 	! 	! 	! 	!rw   r5  rh   rj   c                       e Zd Zd ZdS )test__eq__.<locals>.My_sympyc                      t          |           S r   r  r0  s    ru   _sympy_z$test__eq__.<locals>.My_sympy._sympy_C  s    $<<rw   N)r  r  r  r9  r{   rw   ru   My_sympyr7  B  s#        	  	  	  	  	 rw   r:  )objectr   )r5  rK   r:  s      ru   
test__eq__r<  8  s    ! ! ! ! !V ! ! ! 	q!aVA9999         2       

??????rw   c                  *   t          t                    D ]\  } }|                    dd          }|j        dk    rt	          d |j        D                       sJ |j        dk    rt          |j                  t          u sJ |j        dk    rt          |j                  t          u sJ | dz  s8t          |	                                          t          t          t          fv sJ t          |                                          t          u sJ d S )Nri   rh   )ri   rh   c              3   B   K   | ]}t          |          t          u V  d S r   )r  ri  r  r   s     ru   rC  ztest_args.<locals>.<genexpr>L  s,      (I(IAaC(I(I(I(I(I(Irw   )	enumerateall_classesrI   r  rI  rq   r  ri  rr   r   rs   r  r%   r   r   )rH  rN  r   s      ru   	test_argsrB  H  s   K(( 	+ 	+3IIaOOw&  S(I(I(I(I(I%I%I   v{{tAF||s2222v{{tAF||s22221u 	+>>dE5%999999		??d*****	+ 	+rw   c                     t           t          fD ]_} |                     dd          }t                      5  |j        }d d d            n# 1 swxY w Y   ||                                k    sJ `t          t          fD ]_} |                     dd          }t                      5  |j        }d d d            n# 1 swxY w Y   ||	                                k    sJ `d S Nri   rh   )
r   r   rI   rc   _matr   r#   r   _smatr   )rN  r   matsmats       ru   test_deprecated_mat_smatrI  U  sZ   &  IIaOO#%% 	 	&C	 	 	 	 	 	 	 	 	 	 	 	 	 	 	affhh22 ! !IIaOO#%% 	 	7D	 	 	 	 	 	 	 	 	 	 	 	 	 	 	qwwyy     	! !s#   A		A	A	#B77B;	>B;	c                      t          ddt          t          g          } | t          z  t          ddt          t          z  t          t          z  g          k    sJ d S r  )r   rP   rQ   rR   )r	  s    ru   test_divisionrK  b  sJ    q!aVAQ3&A!QqSz********rw   c            	          t          g dt          t          t          gdt          z  dt          t          z  gg             z   t          g ddt          z  dt          z  dt          z  gdt          z  ddt          z  t          z  gg          k    sJ t          ddddg          t	          t
           fd           d S )	Nrp   rh   r  r  rk   r  rj   c                       z   S r   r{   r  s   ru   r   ztest_sum.<locals>.<lambda>k  r  rw   r  r  s   @@ru   test_sumrN  g  r  rw   c                     t          ddgt          t          gg          } t          |           t          ddgt	          t                    t	          t                    gg          k    sJ t          dddt          g          } t          dddt	          t                    g          }t          |           |k    sJ d S )Nrj   r   rh   rr  ri   )r   rP   rQ   absr   r  s     ru   test_absrQ  n  s    B!Q !!Aq66VaVc!ffc!ff%56777777q!b!WAq!aQ[!!Aq66Q;;;;;;rw   c                      t          d          } t          d          }| |z    | j        |          cxk    rt          ddgddgg          k    sn J d S )N)rj   rh   rs  rS  )ri   r   rh   rk   rm   rj   )r   addrK   rL   s     ru   test_additionrW  v  s|      	 	A
 	  	 	A
 q5EAE!HH8888AA'7 8 888888888rw   c            
         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    sJ |ddgdf         |ddgdgf         k    sJ |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    sJ |d         dk    sJ |ddd d f         t          g dg dg          k    sJ |d d ddf         t          ddgdd	gd
dgg          k    sJ |d d ddf         |ddgdf         k    sJ |dd d df         |dddgf         k    sJ  | ddt          d                    }|g dd d f         t          g dg dg dg dg dg          k    sJ |d d g df         t          g dg dg dg          k    sJ t          j        d          }d|d<   d|d<   d	|d<    |j        ddgdg          t          dgdgg          k    sJ  |j        ddgg d          t          g dg dg          k    sJ  |j        g dg d          t          g dg dg dg dg          k    sJ d S )Nri   r   rj   r   r   r   r   rh   rk   rm   r   r~   )r   rh   rj   rh   rj   r   )ri   rl   rk   rl   rk   )rm   r   r   r   r   rS  r   rh   r   )rh   rh   rh   r   )rj   r   rj   rh   )rh   r   rj   r   rh   r   r   r   )r   r   ri   r   )r   rk   r   rk   )r   r#   r   rI   r   )r7  rK   s     ru   test_fancy_index_matrixr[    s5   l#  AaE!HHAaaadG||||AAAw&Ayyy111111Aw&++++++!Q|vyyy)))&<======!Q|q!Q!~----QF|q!q!f~----QF|v1v1v1v&>??????w!||||1aaayFIIIyyy#9::::::AaCyFQFQFQF#;<<<<<<1ayAq!faiL((((CCaCyAa!QiL((((AaE!HH!!!#$IIIIIIIIII0 ) )     KKK FOOOOOO, % %     
 	1AAdGAdGAdG19aVaS!!VCC-	 &
 &
 
 
 
 
 19aVYYY''6IIII3 , ,     19\\\<<<00F	< 5 5      rw   c                     t          d          t          d          t          t          fd           t          t          fd           z  } | d         dk    sJ | d         dk    sJ | d	         d
k    sJ | d         d
k    sJ | d         dk    sJ | d         dk    sJ z  } | d         dk    sJ | d         dk    sJ | d	         d
k    sJ | d         d
k    sJ | d         dk    sJ | d         dk    sJ t	          |           }| j        |           k    sJ |d         dk    sJ |d         dk    sJ |d	         dk    sJ |d         d
k    sJ |d         dk    sJ |d         dk    sJ t          t          fd           t          d          z  } t          | t                     sJ | d         t          k    sJ | d         dt          z  k    sJ | d	         dt          z  k    sJ | d         dk    sJ t          z  }| |k    sJ dz  } t          | t                     sJ | d         dk    sJ | d         dk    sJ | d	         dk    sJ | d         dk    sJ t          t          dgdt          gg          }|dz  |k    sJ t          t          t          gddgg          }|dz  t          t          t          gt          t          gg          k    sJ t          t          dd                    }t          dd           }t          |||g          }|                    |          t          |g|g|gg          k    sJ d S )N)rS  rs  r   rm   rT  c                       z  S r   r{   rV  s   ru   r   z%test_multiplication.<locals>.<lambda>  s    qs rw   c                       i z  S r   r{   r  s   ru   r   z%test_multiplication.<locals>.<lambda>  s    ad rw   r~   r   r   rh   r   rm   rn   rY     ro  r   rk   c                  $    t                     S r   )r3   rV  s   ru   r   z%test_multiplication.<locals>.<lambda>  s    :1a@@ rw   rP   ri   rl   r   r"  rj   )r   r_   rX   rk  r3   multiply_elementwiser$   r$  rP   r6   r4   r5   r    )	rM   hr  r7  r   _hr   rK   rL   s	          @@ru   test_multiplicationre    s     	 	A 	  	 	A
 :{{{{{###
9llll###	!AT7a<<<<T7a<<<<T7a<<<<T7a<<<<T7b====T7a<<<<	AAT7a<<<<T7a<<<<T7a<<<<T7a<<<<T7b====T7a<<<<#Aq))A&&q))))))T7a<<<<T7a<<<<T7b====T7a<<<<T7a<<<<T7a<<<<
:@@@@@AAA	F3KKAa     T7a<<<<T7ac>>>>T7ac>>>>T7a<<<<	
QB7777	AAa     T7a<<<<T7c>>>>T7c>>>>T7a<<<<Q!R!""A6Q;;;;R1a&!""A6Vc3Z#s4555555 	tAqzzA
1a..BB|A!!!$$			0 ) )      rw   c                      t          t          d            t          ddgddgg            dz  t          ddgdd	gg          k    sJ t          g d
g dg dg            dz  t          g dg dg dg          k    sJ  dz  t          d          k    sJ  dz   k    sJ t          dgg          dz  d         ddz  k    sJ t          ddgddgg          t	          d          z  t          ddgddgg          k    sJ t          ddgddgg                                dd                               dd          k    sJ  t	          d          z  t          ddgddgg          k    sJ t          d          d z  t          d          k    sJ t          ddgd!d"gg            t          j        z  d d          g d#k    sJ t          ddgd$dgg            t          j        z  dz   k    sJ t          ddgddgg          t          j        z  t          ddgt          j        dgg          k    sJ t          ddgddgg          d%z  t          ddgd%dgg          k    sJ dd&lm	 t          dt          gddgg          z  t          dt          z  gddgg          k    sJ t          t          t          gdt          gg          z  t          t          z  t          t          dz
  z  z  z  gdt          z  gg          k    sJ t          t          z  t          dz
  z  z  t          z  dz  z  t          z  z  z
  dt          dz  z  z  gdt          z  t          dz
  z  z  gddt          z  gg          sJ t          t          ddgdt          dgddt          gg          z  t          t          z  t          dz
  z  z  dgdt          z  dgddt          z  gg          k    sJ t          ddgddgg                                t          d                                         d          k    sJ t          dgg            dz  t          d'gg          cxk    r@                     t          d                    cxk    r                     d          k    sn J t          g d(g d)g d*g d+g d,g          t          t          fd-           t          t          d.            t          g d/g d0g d1g            d2z  t          g d1g d1g d1g          k    sJ t          t           fd3           t          t           fd4           t          d5dgddgg            d2z  t          d6d7gd8d9gg          k    sJ t          g d0g d0g d0g            d2z  t          g d0g d0g d0g          k    sJ t          g d/g d0g d0g            d2z  t          g d0g d0g d0g          k    sJ t!          d:d;<          t#           z  t$                    sJ t!          d:d;d;=          t          t           fd>           t!          d:d;d;?           z  t          t'          d          t'          d          t'          d           t'          d          z
  dz   gdt'          d          dt'          d          z
  gg d0g          k    sJ  dz   z  t          g d0g d0g d0g          k    sJ t          t           fd@           t          g d0g dAg dBg            dCz  t          g dDg dEg dFg          k    sJ  dCz   dz  k    sJ t          g d/g dGg d1g           t!          d:           z                      d                                           dz  k    sJ t          t          fdH           z   dz  z  k    sJ t          g d1g d1g d1g           t!          d:d;d;I           z   k    sJ t!          d:d;d;?           z  t-          dz  dz  dz            k    sJ  z                      d          t          d          k    sJ  z                      d          t/          d          k    sJ t          g dJg dKg dLg            dMz  t-          dNdNdN          k    sJ  t0          z  t-          dt0          z  dt0          z  dt0          z            k    sJ t          g d/g d0g d0g           t          t           fdO           t          t           fdP           t          t          j        t          j        gt          j        t          j        gg            t          j        z   k    sJ t          ddgddgg            t          j        z  t          t          j        t          j        gdt          j        z  dt          j        z  gg          k    sJ d S )QNc                  &    t          d          dz  S NrS  rh   r  r{   rw   ru   r   ztest_power.<locals>.<lambda>  s    ): rw   rh   ri   rk   rl   i  i  i,*  i7  )rh   rj   ri   )rk   rh   rk   )rm   r{  rj   )i"  i     )i  i  ip  )i  i  i  r   rj   d   r~   r   r   r"  r#     cayleymethodmultiplyr   r{     !   i 0   9   )rl   rh   rk   r   r   g      ?rG  i   )ri   r   r   r   rr  )r   rr  rr  r   ri   )r   ri   r   ri   r   )r   r   ri   r   ri   )ri   r   r   ri   r   c                  H                          t          d                    S Nr   )_matrix_pow_by_jordan_blocksr"   r   s   ru   r   ztest_power.<locals>.<lambda>%  s     > >quu E E rw   c                  l    t          ddgddgg                              t          d                    S )Nrj   ri   )r   rv  r"   r{   rw   ru   r   ztest_power.<locals>.<lambda>(  s3    AA'7 8 8 U UVWX[V\V\ ] ] rw   r   r   r         $@c                       dz  S N @r{   r  s   ru   r   ztest_power.<locals>.<lambda>+      q#v rw   c                  *     t          dd          z  S rD  r    r  s   ru   r   ztest_power.<locals>.<lambda>,      q(1a..0 rw   r   ihiO<iv0irH  T)integer)r  negativec                       z  S r   r{   )r   rH  s   ru   r   ztest_power.<locals>.<lambda>6  s    q!t rw   )r  nonnegativec                  *     t          dd          z  S rD  r  r  s   ru   r   ztest_power.<locals>.<lambda>=  r  rw   )ri   r   rj   )rk   ri   rj   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                  T                          d                                          S )Nr   )rx  r<  )AnrH  s   ru   r   ztest_power.<locals>.<lambda>E  s    rwwq"~~2244 rw   )r  positiver  )r   rh   r   r   r|  gd%%@c                       dz  S r{  r{   r  s   ru   r   ztest_power.<locals>.<lambda>T  r}  rw   c                       t           z  S r   r   r  s   ru   r   ztest_power.<locals>.<lambda>U  s    q!t rw   )r_   rW   r   r.   r   powr"   r   	sympy.abcrH  rK   rL   rv  _eval_pow_by_recursionrV   r  r$   r$  r   r   rx  r<  r*   rI   r   )r   r  r   rH  s   @@@@ru   
test_powerr    s   
!:!:;;;AA  Aa46D$<%8999999			999jjj122Aa46???OOO___MNNNNNNa43q66>>>>a419999QC5MMS $'1c61111Aq6Aq6"##WQZZ/6Ar7RH:M3N3NNNNN1qe}A55H5%%r*)E)EEEEEgajj=FQGb"X#6777777q668s1vv%%%%R2r(#$$AqvIqqq>\\\))))AQ !!AqvI>QAq6Aq6"##QV+v1v{6K/L/LLLLLAq6Aq6"##S(FQFS!H3E,F,FFFFFAq6Aq6"##Q&&1ac(QF1C*D*DDDDDAq6Aq6"##Q&&1a41qs8A2FAqD	1R*S*SSSSS	
Aq1q5z!|ad1a4i!Q$q&01QT6:;q!ta!a%jl;!ad;= > > > > > Aq!9q!Qi!Q344a76	
Aq1Q3xz1	
AqD!	
Aq!tC < <    
 	AA  A))!A$$//13K3KA3N3NNNNNuAb5FUG9%% % % % %)G)G")N)N % % % %	  $$% % % % % % 	   "3"3"3___oooWfWfWfghhA
;EEEEFFF ;]]^^^			999iii011Ad7fiiiIII>??????
:~~~~&&&
:0000111AA  Ad7fz95	97MNOOOOOO			999iii011Ad7fiiiIII>??????			999iii011Ad7fiiiIII>??????sD!!!AadF#####sD4000A
:|||||$$$sDd333Aa46	1		~a33nQ6J6J5J^\]_`MaMa5ade5ef~a33QQ_`acdQeQeMeffffh i i i i i i q1u:IIIyyy ABBBBBB
:0000111			999iii011Ac6V___oooOPPPPPPc6QT>>>>			***YYY/00AsA	
AB771a==1a4''''
:444445557a!A#h 	())AsD4000Aa419999sDd333Aa441adAqD))))))qD;;q!A&&&&qD;;q!a(((()**Ac6T666222222a44Aq!tQT******			999iii011A
:~~~~&&&
:||||$$$ 1616"2344Aaf9>>>>A1vAaf9!&!&!1AafHah3G HIIIIIIIIrw   c            
         t          dt          z   dt          z
  gdt          z
  dt          z   gg          } t          d          5  |                                                                 t          t          dt          z            t          d          z   dz  t          dt          z             t          d          z   dz  gt          dt          z             t          d          z   dz  t          dt          z            t          d          z   dz  gg          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrj   Trh   )r   rP   r\   r,   r-   r6  s    ru   $test_issue_17247_expression_blowup_1r  \  sY   1ac
QqS!A#J'((A	T		 ? ?uuww~~61Q3xx#a&& !#s1Q3xxi#a&&&8!%;<1Q3xxi#a&& !#s1Q3xx#a&&'8!&;<+> $? $? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?s   C"D55D9<D9c                  (   t          dt          z   dt          z
  gdt          z
  dt          z   gg          } t          d          5  |                                 \  }}||z  |                                z  sJ 	 d d d            d S # 1 swxY w Y   d S Nrj   T)r   rP   r\   jordan_forminvr7  PJs      ru   $test_issue_17247_expression_blowup_2r  d  s    1ac
QqS!A#J'((A	T		  }}1s15577{                 s   4BBBc            	      n   t          dt          z   dt          z
  gdt          z
  dt          z   gg          } t          d          5  | dz  t          dt          dz  z  dz   ddt          dz  z  z
  gddt          dz  z  z
  dt          dz  z  dz   gg          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrj   Trj  l                )r   rP   r\   r6  s    ru   $test_issue_17247_expression_blowup_3r  k  sf   1ac
QqS!A#J'((A	T		 _ _#v+AsF25SSUs  wU  VW  Y\  V\  w\  V\  ]+.LQPSV.SSUstuwztzUz  ~\  V\  ]!^ _ _ _ _ _ _ __ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _s   AB**B.1B.c                      t          t          d                    } t          d          5  | dz  t          t          d                    k    sJ 	 d d d            d S # 1 swxY 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\   r6  s    ru   $test_issue_17247_expression_blowup_4r  s  s    8 	q K L L 	M 	MA 
T		 J J"uq "H  I  I J J J J J J JJ J J J J J J J J J J J J J J J J Js   &A  A$'A$c                  J   t          ddd           } t          d          5  |                     d          t          t          dz  ddt
          z  z
  t          dz  z  z   dt
          z  t          dz  z  z   t          d	
          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrm   c                 (    dd| |z   z  t           z  z   S Nrj   r   r  r   s     ru   r   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>      !rQqSk!m"3 rw   TrP   rl   $   rk   EXdomain)r   r\   charpolyr   rP   r   r6  s    ru   $test_issue_17247_expression_blowup_5r    s    q!3344A	T		 _ _zz#(1a42!8QT/+ABqDAI+MqY]"^"^"^^^^^^_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _s   A(BBBc                      t          ddd t          d          D                       } t          d          5  |                     d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   c                 "    g | ]}t           |z   S r{   rt   r?  s     ru   r  z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>      ...aac...rw   @   Tbareissr   r   r   r\   detr6  s    ru   $test_issue_17247_expression_blowup_6r    s    q!..5"::...//A	T		 % %uuY1$$$$$% % % % % % % % % % % % % % % % % %   A""A&)A&c                      t          ddd           } t          d          5  |                     d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrm   c                 (    dd| |z   z  t           z  z   S r  r  r   s     ru   r   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>  r  rw   T	berkowitzr   )r   r\   r  r6  s    ru   $test_issue_17247_expression_blowup_7r    s    q!3344A	T		 ' 'uu[!!Q&&&&&' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' 's   AAAc                      t          ddd t          d          D                       } t          d          5  |                     d          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   c                 "    g | ]}t           |z   S r{   rt   r?  s     ru   r  z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>  r  rw   r  Tlur   r  r6  s    ru   $test_issue_17247_expression_blowup_8r    s    q!..5"::...//A	T		    uuT{{a                                   r  c                  *   t          ddd t          d          D                       } t          d          5  |                                 t          g dg dg dg dg dg dg dg dg          dfk    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nr   c                 "    g | ]}t           |z   S r{   rt   r?  s     ru   r  z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>  r  rw   r  T)rj   r   r   r   rr  r   r   r  r   rj   rh   ri   rk   rl   rm   r   r   r   r   r   r   r   r   r   r   )r   r   r\   rrefr6  s    ru   $test_issue_17247_expression_blowup_9r    s!   q!..5"::...//A	T		 	6 	6vvxxF************************$, - - /56 6 6 6 6 6	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6 	6s   ABBBc                      t          ddd           } t          d          5  |                     dd          dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrm   c                 (    dd| |z   z  t           z  z   S r  r  r   s     ru   r   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>  r  rw   Tr   )r   r\   cofactorr6  s    ru   %test_issue_17247_expression_blowup_10r    s    q!3344A	T		 % %zz!Q1$$$$$% % % % % % % % % % % % % % % % % %s   AAAc                      t          ddd           } t          d          5  |                                 t          dddgdz            k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrm   c                 (    dd| |z   z  t           z  z   S r  r  r   s     ru   r   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>  r  rw   Tr   r  )r   r\   cofactor_matrixr6  s    ru   %test_issue_17247_expression_blowup_11r    s    q!3344A	T		 ; ;  ""fQA3r6&:&::::::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;s   .AA"%A"c                      t          ddd           } t          d          5  |                                 dddt          z  dddik    sJ 	 d d d            d S # 1 swxY w Y   d S )Nrm   c                 (    dd| |z   z  t           z  z   S r  r  r   s     ru   r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>  r  rw   Trj   r   rk   )r   r\   	eigenvalsr   r6  s    ru   %test_issue_17247_expression_blowup_12r    s    q!3344A	T		 5 5{{}}AqsAq! 4444445 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5s   )AA Ac            
         t          ddt          z
  t          dz   dt          z
  gdt          z
  t          dz   dt          dz   gddt          z
  t          dz   dt          z
  gdddt          z
  dgg          } |                                 }|d         ddt          g d          gfk    sJ |d         d         t          t          d          t          dz
  z  z
  dz   k    sJ |d         d         dk    sJ |d         d         d                             dd          t          t           t          d          t          dz
  z  z   dz
  t          dz
  z  gdt          z  t          dz  dt          z  z
  dz   z  t          dz   t          t          d          t          dz
  z  z
  dz   z  t          dz  dt          z  z
  dz   z  z   gt           t          d          t          dz
  z  z   dz
  t          dz
  z  gdgg          k    sJ |d         d         t          t          d          t          dz
  z  z   dz   k    sJ |d         d         dk    sJ |d         d         d                             dd          t          t           t          d          t          dz
  z  z
  dz
  t          dz
  z  gdt          z  t          dz  dt          z  z
  dz   z  t          dz   t          t          d          t          dz
  z  z   dz   z  t          dz  dt          z  z
  dz   z  z   gt           t          d          t          dz
  z  z
  dz
  t          dz
  z  gdgg          k    sJ d S )	Nr   rj   rh   )r   r   r   rj   FT)deepnumerr   )r   rP   
eigenvectsrB   r-   )r7  evs     ru   %test_issue_17247_expression_blowup_13r    s4   Aq1ua!e$	
QA1a!e$Aq1ua!e$A1q5!$	& 	' 	'A 
Ba5QF===11233333a58q477AE?*Q.....a58q====a58A;555"tAwwA

"QU	+,	Aq!taczA~	!a%!d1ggq1uo*=*A!BAqD1Q3JQRN!S	ST"tAwwA

"QU	+,	
	A : :     a58q477AE?*Q.....a58q====a58A;555"tAwwA

"QU	+,	Aq!taczA~	!a%!d1ggq1uo*=*A!BAqD1Q3JQRN!S	ST"tAwwA

"QU	+,	
	A : :      rw   c                  0   t          dddt          z   dt          z
  gdz  dt          z
  dt          z   gdz  z   dz            } t          d          5  |                                 t          t          dz   dt          z
  t          dz   dt          z
  t          dz   dt          z
  t          dz   dt          z
  gddt          z  ddt          z  ddt          z  ddt          z  gg dg dg dg dg dg dg          k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   rj   rk   Tr   r  )r   rP   r\   echelon_formr6  s    ru   %test_issue_17247_expression_blowup_14r    s   q!qsAaCjlac1Q3Z\11455A	T		 	G 	G~~6UAE1q5!a%QAq1ua!eDacqAaCQ!A#1!DDDDDDDDDDDDDDDDDDD+F $G $G G G G G G	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	G 	Gs   B,DDDc                  *   t          dddt          z   dt          z
  gdz  dt          z
  dt          z   gdz  z   dz            } t          d          5  |                                 t          t          dz   dt          z
  t          dz   dt          z
  t          dz   dt          z
  t          dz   dt          z
  gg          t          ddt          z  ddt          z  ddt          z  ddt          z  gg          gk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   rj   rk   Tr   )r   rP   r\   rowspacer6  s    ru   %test_issue_17247_expression_blowup_15r    s   q!qsAaCjlac1Q3Z\11455A	T		 P Pzz||QAq1ua!eQUAPQESTWXSXZ[^_Z_(`'a b bdjmnpqrspsuvxyz{x{}~  AB  CD  AD  FG  IJ  KL  IL  mM  lN  eO  eO   P  P  P  P  P  PP P P P P P P P P P P P P P P P P Ps   B)DDDc                     t          dddt          z   dt          z
  gdz  dt          z
  dt          z   gdz  z   dz            } t          d          5  |                                 t          t          dz   gdt          z
  gt          dz   gdt          z
  gt          dz   gdt          z
  gt          dz   gdt          z
  gg          t          dt          z
  gt          dz   gdt          z
  gt          dz   gdt          z
  gt          dz   gdt          z
  gt          dz   gg          gk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   rj   rk   T)r   rP   r\   columnspacer6  s    ru   %test_issue_17247_expression_blowup_16r    s2   q!qsAaCjlac1Q3Z\11455A	T		 y y}}6AE7AE7AE7AE7APQE7TUXYTYSZ\]`a\a[bdehidicj*k#l#lntwx{|w|v}  @A  DE  @E  F  HI  LM  HM  GN  PQ  TU  PU  OV  XY  \]  X]  W^  `a  de  `e  _f  hi  lm  hm  gn  pq  tu  pu  ov  vw  ox  ox  #y  y  y  y  y  yy y y y y y y y y y y y y y y y y ys   CD66D:=D:c                  D   t          ddd t          d          D                       } t          d          5  |                                 t          dgdgdgdgdgdgdgdgg          t          dgd	gdgdgdgdgdgdgg          t          d
gdgdgdgdgdgdgdgg          t          dgdgdgdgdgdgdgdgg          t          dgdgdgdgdgdgdgdgg          t          dgdgdgdgdgdgdgdgg          gk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   c                 "    g | ]}t           |z   S r{   rt   r?  s     ru   r  z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>  r  rw   r  Trj   r   r   rh   rr  ri   r   rk   r   rl   r  rm   rq  )r   r   r\   	nullspacer6  s    ru   %test_issue_17247_expression_blowup_17r    s   q!..5"::...//A	T		 8 8{{}}QCaS!aS!aS!566QCaS!aS!aS!566QCaS!aS!aS!566QCaS!aS!aS!566QCaS!aS!aS!566QCaS!aS!aS!566!8 8 8 8 8 88 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8 8s   CDDDc                     t          dddt          z   dt          z
  gdz  dt          z
  dt          z   gdz  z   dz            } t          d          5  |                                 rJ 	 d d d            d S # 1 swxY w Y   d S )Nrm   rj   ri   T)r   rP   r\   is_nilpotentr6  s    ru   %test_issue_17247_expression_blowup_18r    s    q!qsAaCjlac1Q3Z\11455A	T		 $ $>>######$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $s   A66A:=A:c                      t          t          d                    } t          d          5  |                                 rJ 	 d d d            d S # 1 swxY 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_diagonalizabler6  s    ru   %test_issue_17247_expression_blowup_19r     s    q a b b 	c 	cA
 
T		 ) )&&(((((() ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) )s   AAAc                      t          t          dz   dt          z
  ddgdt          z
  t          dz   dt          dz   gddt          z
  t          dz   dgdddt          dz   gg          } t          d          5  |                                 t          dddt          dz   t          dz
  z  gg dg dg dg          t          g dddt          z  ddgddt          dz   dgdddt          dz   gg          fk    sJ 	 d d d            d S # 1 swxY w Y   d S )	Nrj   r   T)rj   r   r   r   r  r  rZ  rh   )r   rP   r\   diagonalizer6  s    ru   %test_issue_17247_expression_blowup_20r  *  s   UQU#UQUQU#	
QUQU#	
QU#	% 	& 	&A
 
T		 
& 
&}}6AAA''''''''''	+) $* $*
 """!"!QU"!AE"	$ % %	#& 	& 	& 	& 	& 	&
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
& 
&s   3BDD
Dc                      t          t          d                    } t          d          5  |                     d          t          t          d                    k    sJ 	 d d d            d S # 1 swxY 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GErm  v  [
            [-26194832/3470993 - 31733264*I/3470993, 156352/3470993 + 10325632*I/3470993, 0, -7741283181072/3306971225785 + 2999007604624*I/3306971225785],
            [4408224/3470993 - 9675328*I/3470993, -2422272/3470993 + 1523712*I/3470993, 0, -1824666489984/3306971225785 - 1401091949952*I/3306971225785],
            [-26406945676288/22270005630769 + 10245925485056*I/22270005630769, 7453523312640/22270005630769 + 1601616519168*I/22270005630769, 633088/6416033 - 140288*I/6416033, 872209227109521408/21217636514687010905 + 6066405081802389504*I/21217636514687010905],
            [0, 0, 0, -11328/952745 + 87616*I/952745]]r   r"   r\   r  r6  s    ru   %test_issue_17247_expression_blowup_21r  =      q c d d 	e 	eA
 
T		 < <uuDu!!VA /: -; -; &< &< < < < < << < < < < < < < < < < < < < < < < <   7A11A58A5c                      t          t          d                    } t          d          5  |                     d          t          t          d                    k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  TLUrm  r  r  r6  s    ru   %test_issue_17247_expression_blowup_22r  K  r  r  c                      t          t          d                    } t          d          5  |                     d                                          t          t          d                    k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  TADJrm  r  )r   r"   r\   r  r-   r6  s    ru   %test_issue_17247_expression_blowup_23r  Y  s    q c d d 	e 	eA
 
T		 < <uuEu""))++va 9: 7; 7; 0< 0< < < < < << < < < < < < < < < < < < < < < < <s   A	BB
Bc                      t          t          d                    } t          d          5  |                     d          t	          t          d                    k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  TCHrm  r  r#   r"   r\   r  r   r6  s    ru   %test_issue_17247_expression_blowup_24r  g  s    Q c d d 	e 	eA
 
T		 < <uuDu!!VA /: -; -; &< &< < < < < << < < < < < < < < < < < < < < < < <r  c                      t          t          d                    } t          d          5  |                     d          t	          t          d                    k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  TLDLrm  r  r  r6  s    ru   %test_issue_17247_expression_blowup_25r  u  s    Q c d d 	e 	eA
 
T		 < <uuEu""fQ 0: .; .; '< '< < < < < << < < < < < < < < < < < < < < < < <r  c                      t          t          d                    } t          d          5  |                                 dk    sJ 	 d d d            d S # 1 swxY 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]]Trk   r   r"   r\   rankr6  s    ru   %test_issue_17247_expression_blowup_26r    s    q z { { 	| 	|A 
T		  vvxx1}}}}}                    AAAc            	      <   t          ddt          z
  t          dz   dt          z
  gdt          z
  t          dz   dt          dz   gddt          z
  t          dz   dt          z
  gdddt          z
  dgg          } t          d          5  |                                 \  }}|                                t          t          d                                                    k    sJ |t          t          d                    k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr   rj   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   rP   r\   r  r-   r"   r  s      ru   %test_issue_17247_expression_blowup_27r	    s   Aq1ua!e$	
QA1a!e$Aq1ua!e$A1q5!$	& 	' 	'A
 
T		 K K}}1xxzzVA 'o %p %p q q rx  rx  rz  rz	z z z z
 F1 I J J K K K K K K KK K K K K K K K K K K K K K K K K Ks   B DDDc                      t          t          d                    } t          d          5  |                                 t          d          k    sJ 	 d d d            d S # 1 swxY 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\   singular_valuesr6  s    ru   %test_issue_17247_expression_blowup_28r    s    q c d d 	e 	eA
 
T		 d d  ""a )c 'd 'd d d d d dd d d d d d d d d d d d d d d d d ds   (A""A&)A&c                      t          t          d                    } t          d          5  |                                 dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Na	  [
        [1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I,15/128-3/32*I,19/256+551/1024*I],
        [21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I,129/256-549/512*I,42533/16384+29103/8192*I],
        [-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I],
        [1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I],
        [-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I],
        [1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I],
        [-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I],
        [-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I],
        [0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I],
        [1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I],
        [0,-4*I,0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I],
        [0,1/4+1/2*I,1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I]]Tr   r  r6  s    ru   test_issue_16823r    s    q F G G 	H 	HA 
T		  vvxx1}}}}}                 r  c                     t          g ddt          d          z   dt          d          z   dt          d          z
  t          d           dz
  dddddg	ddt          d          z  z   ddt          d          z  z
  ddt          d          z  z
  ddt          d          z  z   dddddg	d	t          d          z  dz
  dd
t          d          z  z
  dd
t          d          z  z   dd
t          d          z  z   ddddd
g	ddt          d          z  z
  dt          d          z  dz   dt          d          z  dz   ddt          d          z  z
  dddddg	dd
t          d          z  z   dd
t          d          z  z   d	t          d          z  dz
  dd
t          d          z  z
  ddddd
g	d	dt          d          z  z   d	dt          d          z  z
  d	dt          d          z  z
  d	dt          d          z  z   dddddg	dt          d          z
  t          d           dz
  dt          d          z   dt          d          z   dddddg	g          } t          d          5  |                                 t          ddddddddt	          d          dz  g	ddddddddt	          d           dz  g	ddddddddt	          d          dz  g	ddddddddt	          d           dz  g	g dddddddddt	          d           dz  g	g dddddddddt	          d           dz  g	g          dfk    sJ 	 d d d            d S # 1 swxY w Y   d S )N)	rj   rj   rj   rj   rj   r   rj   r   r   rj   rh   r   r   rq  r   r   rr  ri   r   rk   r  r{  T)	r   r   r   r   rj   r   r   r   r   )	r   r   r   r   r   r   rj   r   r   r  )r   rB   r\   r  r"   r6  s    ru   test_issue_18531r    s   ###	
T!WWb477lAQK$q''Aq!RAN	aQiaQiaQiaQiQPRTVXYZ	DGGaQtAwwYQtAwwYAd1ggIr2qRTVWX	
QtAwwY$q''	Aqay1}a!DGG)mQQPRTUV	aQiQtAwwY477
QAd1ggIq"bRTVWX	aQiaQiaQiaQiQPRTVXYZ	
T!WWtAwwhlAQKd1ggr1aAN	
 		 		A 
T		 	K 	KvvxxF1aAq!add1f-1aAq!addU1W-1aAq!add1f-1aAq!addU1W-***1aAq!addU1W-***1aAq!addU1W-$/ 0 0 2JK K K K K K	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	K 	Ks   &CMMMc            	         t          t          d            t          t          d            t          t          d            t          t                    5  dt          d          d<   d d d            n# 1 swxY w Y   t                      t          g           cxk    rt          ddg           k    sn J t          g g          t          ddg           k    sJ t          g g g          t          d	dg           k    sJ t	                      5  t          dgd
gg                                          dgd
ggk    sJ 	 d d d            n# 1 swxY w Y   t	                      5  t          dgd
gg          j                                        dggd
ggk    sJ 	 d d d            n# 1 swxY w Y   t          dgg          } t	                      5  t          j        | d<   d d d            n# 1 swxY w Y   t          t          dgddgg          }|}|j
        |j        k    sJ |j
        d	k    sJ |d d          t          dddgk    sJ t          d	d	t          dddg          }|}|j
        |j        k    sJ |j
        d	k    sJ |d d          t          dddgk    sJ ||k    sJ t          |          |k    sJ t          d	dt          dd                    }t          ddt          dd                    }t          ||g          }|j
        dk    sJ |j        dk    sJ |d d          g dk    sJ t          t          d	                    t          d	          k    sJ t          t          t          d	                              t          t          d	                    k    sJ t          |           |j                    k    sJ t          t          |                    t          |                                          k    sJ |t          |          usJ t#          dd	          t#          dd          d	z  gt#          d	d          dz  t#          d	d	          dz  gg}t          |          } | t          g dg dg dg dg dg          k    sJ |                                 |k    sJ t          |d                                          |k    sJ 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	                      5  t          |d                                          d |D             k    sJ 	 d d d            n# 1 swxY w Y   t          t#          d	          t#          d          g          t          t#          d	          g          k    sJ t          t          d            t          t          d            t          dd	gddgg          } t          | dg          }	|	t          dd	gddgddgg          k    sJ d S )Nc                  >    t          ddt          d                    S )Nrl   rk  )r   r   r{   rw   ru   r   ztest_creation.<locals>.<lambda>  s    vaE"II66 rw   c                  $    t          ddg           S )Nrl   r   r  r{   rw   ru   r   ztest_creation.<locals>.<lambda>  s    vaR00 rw   c                  ,    t          d          d         S rh  r  r{   rw   ru   r   ztest_creation.<locals>.<lambda>  s    vf~~a0 rw   rl   rS  ri   r   rj   rh   r  r~   r   r   r   rk   )rj   rj   rh   rh   rh   )ri   ri   ri   rk   rk   Fr:  r   r   r   rn   c                     g | ]}|gS r{   r{   r?  s     ru   r  z!test_creation.<locals>.<listcomp>#  s    7I7I7I7I7I7Irw   c                  Z    t          t          d          t          dd          g          S )Nrh   r   ri   r   r5   r{   rw   ru   r   ztest_creation.<locals>.<lambda>'  !    vtAwwQ

&;<< rw   c                  Z    t          t          d          t          dd          g          S )Nrh   ri   r   r  r{   rw   ru   r   ztest_creation.<locals>.<lambda>(  r  rw   )rl   rm   rm   )r_   r  r   r   rc   r   r3  r"   EmptySetrP   rr   rq   r   r.   r   as_immutable
as_mutabler5   r   )
r7  rK   r   rL   c23c13rM   datr   r   s
             ru   test_creationr     s   
:66777
:00111
:00111	
		  vq               88vbzz5555VAq"%5%55555552$<<6!Q++++++2r(vaB////// 
 	!	! ? ?T{m$$++--A3+>>>>>? ? ? ? ? ? ? ? ? ? ? ? ? ? ?		!	! C CT{m$$&--//aSED6?BBBBBC C C C C C C C C C C C C C CuA		!	!  *$               	AA  A	A6QV6Q;;;;QQQ4Aq!Q<q!aAq\""A	A6QV6Q;;;;QQQ4Aq!Q<6666!99>>>>
AuQ{{
#
#C
AuQ||
$
$CSzA6Q;;;;6Q;;;;QQQ4.......#a&&>>SVV####?3q662233s1vv7N7NNNNN1!1!11111/!$$%%););)F)F)H)HHHHHF1II1IItAayy{#d1Qiik4!99Q;%?
@CsA       88::#&&&--//36666S!QA77A,C#;;&AAtWagtWag	"      
 
 	!	! J JcE***11337I7IS7I7I7IIIIIIJ J J J J J J J J J J J J J J 477DGG$%%a	):):::::
:<<===
:<<=== 	AA  A	F		B!Q!Q!Q011111111sZ   A66A:=A:0EEE)6F,,F03F0G22G69G6 4V!!V%(V%c                  b   t          j        dt          dd          t          dd          dz  t          dd          dz  t          dd          dz  t          dd          dz  t          dd          dz  t          dd          dz            t          g dg dg d	g d
g          k    sJ d S )Nri   rh   rj   rk   rl   rm   r   )rj   rh   rh   rh   ri   ri   )rk   rh   rh   rh   rl   rl   )rm   rm   r   r   rl   rl   )r   	irregularr5   r{   rw   ru   test_irregular_blockr#  0  s    AtAayy$q))A+tAayy{Qq		!T!AYYq[$q))A+tAayy{< <?E	G @ @     rw   c                     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 f         t          ddd          k    sJ |dddf         t          ddd          k    sJ t          g d	g d
g dg dg          }|d d df         t          ddg d          k    sJ |dd d d f         t          g dg dg          k    sJ d S )Nrk   ri   rh   r   c                     | |z   S r   r{   r   s     ru   r   ztest_slicing.<locals>.<lambda>>  
    1q5 rw   rj   r   r   r+  )rk   rl   rm   r   )r   r   r   r   )r{        r"  r   )ri   r   r   r"  r   )r.   rI   r   )m0r   r   s      ru   test_slicingr*  9  sW   	QBbqb"1"f:Qac1Q3h<588####	1((	)	)Bad8vaI......ac1f:1f------	|||^^^=M=M=MN	O	OBaaae9q!^^^444444bcc111f:1A1A1A BCCCCCCCCrw   c                     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    sJ g d| d d d d f<   | t          d          k    sJ ddg| d ddf<   | t          d	          k    sJ d S )
Nrk   rh   )r  r  r  r  rj   r  r   )r  )rh   rj   r   r   )ri   r   rj   r   )rk   r   r   rj   r  r  r  r'  r(  r"     ))r   rh   ri   rk   )r   rm   r   r   r  r-  )rI   r.   r   r   s    ru   test_submatrix_assignmentr/  G  s   aAa&&Aac1Q3hK & ' ' ' ' ' ' AAbqb"1"fIA;;;;Q<((AaaadG & ' ' ' ' ' ' AhhAaaadGa====MMMAaaadG * + + + + + + 1vAbqb!eH * + + + + + + + +rw   c                  B   t          d          } |                     dd          t          ddd          k    sJ t          ddd           }|                    dd          t          d          k    sJ |                    dd	          t          d
          k    sJ d S )Nri   rj   r   )	rj   r   r   r   rj   r   r   r   rj   rk   c                     | |z   S r   r{   r   s     ru   r   ztest_reshape.<locals>.<lambda>f  r&  rw   )r   r&  )ri   rk   rh   r   rh   rm   ))r   rj   rh   ri   rj   rh   )ri   rk   rh   ri   rk   rl   )r.   reshaper   r)  r   s     ru   test_reshaper4  c  s    	QB::ava,GHHHHHH	1((	)	)B::	1 DEEF F F F::av&NOOOOOOOOrw   c                      t          d          } |                     d           t          d          dz  k    sJ |                     d           t          d          k    sJ d S )Nri   c                     d| z  S r  r{   rt   s    ru   r   z test_applyfunc.<locals>.<lambda>n  s
    !A# rw   rh   c                     dS Nr   r{   rt   s    ru   r   z test_applyfunc.<locals>.<lambda>o  s    ! rw   )r.   	applyfuncrI   )r)  s    ru   test_applyfuncr:  l  sa    	QB<<&&#a&&(2222<<$$a000000rw   c            	         t          t          t          t          z   z  dgt          t          z   t          z  t          z  t          t          t          t          t          z   z  z   z  gg          } |                                 }|t          t          t          z  t          dz  z   dgt          t          dz  z  t          t          dz  z  z   t          t          z  t          t          dz  z  z   t          dz  z   gg          k    sJ t	          dd          }t          t          t          |z            g                              d          t          t          |          t          t          |          z  z   g          k    sJ t          g dg dg d	g                                          t          d
d
t          dd          gg dg dg          k    sJ d S )Nrh   ri   rK   Tr,  )complexr   )r   r   r   r   rj   )r   rj   r   r   )
r   rP   rQ   r-   r$   r,   r   r)   rA   r    )r)  r   rK   s      ru   test_expandr=  r  s   	!QU)QAE19a-A1q5	M1B!CD	E	EB	B
A#1*a1QT6AadF?AaC!AqD&L1a4,?@AC C C C C C 	sA3qs88*$$T$22A3q66!"##$ $ $ $ 999jjj)))45599;;v	
Ax1~~

		G @ @      rw   c            	         t          t          t                    dz  t          t          dz            gt          t          dz            t          t                    dz  z  t          t          dz            t          t                    dz  z  gg          } |                     t          j        t                    t          j        t                    z            }|t          t          dz  t          t                    gt          dz  t          t                    z  t          dz  t          t                    z  gg          k    sJ |                     t          j        t                    t          j        t                    z            }|t          t          dz  t          gt          t          dz  z  t          dz  t          z  gg          k    sJ |                     t          j	        t                    t          j	        t                    z            }|t          t          dz  t           gt           t          dz  z  t          dz   t          z  gg          k    sJ d S r  )
r   r   rP   rB   rQ   refiner   r-  r  r  r3  s     ru   test_refiner@    s   	#a&&!)T!Q$ZZ(adCFFAI%tAqDzz#a&&!)';<> 
? 
?B	16!99qvayy(	)	)B!Q$A!Q$s1vv+q!tCFF{)CDEEEEEE	1:a==1:a==0	1	1B!Q$Qq!tVQT!V$45666666	1:a==1:a==0	1	1B!Q$qbAg1uQw%7899999999rw   c                     t          dd          } t          ddd          } | t          ddd          k    sJ t          dddd          } t          ddd          } | t          ddd          k    sJ |                                 } |j                     || k    sJ t          j        d          }| t          dd|          k    sJ d	D ]'}d
D ]"}t          |d||          } | | j        k    sJ #(t          ddd          } d}t          | j        d                   D ]2}t          | j        d                   D ]}| ||f         dk    r|dz  }3|dk    sJ d S )Nri   )seedrk   r      T)rB  	symmetric)rD  prng)r   r   )rj  F      )rD  percentrE  r   rj   rF  )minrH  rG  )r8   rd  r@   randomRandomr3  r   r  )r7  r"   rngr  rH  
zero_countr   r   s           ru   test_randomrN    s   1aA1aa   A
1aa(((((((1aC  A11---A
115555555	AAJLLL6666
-

C
137777777   $ 	 	G44sKKKA88888	 	21b)))AJ171:    qwqz"" 	  	 AAw!||a
	  rw   c                     t          d          } |                                 t          d          k    sJ |                     d          t          d          k    sJ |                     d          t          d          k    sJ |                     d          t          d          k    sJ |                     d          t          d          k    sJ |                     d          t          d          k    sJ t          g dg d	g d
g          } |                                 }| |z  t          d          k    sJ |                     d          |k    sJ |                     d          |k    sJ |                     d          |k    sJ |                     d          |k    sJ |                     d          |k    sJ 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          }|                    d%          |z  t          |j        d&                   k    sJ t           g d'g d(g d)g          t          fd*d+                                D                       sJ t           g d'g d(g d)g          t          fd,d+                                D                       sJ d S )-Nrk   r  rm  r  r  r  QR)rh   ri   rl   )ri   rm   rh   )r   ri   rm   ri   )r   r   r   r   rj   r   r   rj   r   rj   rj   rj   r   r   r   rj   rj   r   r   r   r   rj   rj   r   r   )rj   r   rj   r   r   rj   r   r   rj   r   rj   r   rj   rj   rj   r   rj   rj   r   r   r   r   r   rj   r   )rj   rj   rj   rj   r   rj   r   r   rj   rj   r   r   r   rj   rj   rj   rj   r   r   rj   rj   r   r   rj   rj   )rj   r   r   r   r   r   rj   rj   r   r   rj   rj   rj   r   r   r   r   r   r   rj   r   r   rj   r   r   )rj   r   r   rj   rj   rj   r   rj   r   r   rj   r   r   rj   rj   rj   r   rj   r   r   r   rj   r   r   r   )rj   r   r   r   r   r   r   r   rj   rj   rj   r   rj   r   rj   rj   rj   rj   r   r   r   rj   rj   r   rj   )r   rj   rj   rj   r   r   r   r   rj   rj   rj   r   rj   r   rj   r   rj   r   rj   r   rj   r   r   rj   r   )rj   rj   r   r   r   rj   rj   r   r   rj   rj   r   rj   rj   r   rj   rj   r   rj   r   rj   rj   r   rj   rj   )r   r   rj   rj   rj   r   r   rj   rj   r   rj   rj   r   rj   r   r   r   r   r   r   rj   r   rj   r   rj   )rj   r   rj   rj   rj   r   rj   r   r   rj   rj   r   rj   rj   r   rj   rj   rj   rj   r   rj   rj   rj   r   r   )r   rj   rj   r   r   r   r   rj   rj   r   rj   r   rj   r   rj   rj   r   r   rj   r   r   r   rj   rj   r   )rj   r   r   rj   r   rj   r   rj   rj   r   r   rj   r   rj   r   rj   r   rj   r   rj   r   rj   rj   r   r   )r   rj   rj   r   r   rj   rj   r   r   rj   rj   r   rj   r   r   r   rj   r   r   rj   r   rj   rj   r   rj   )rj   rj   rj   r   rj   r   r   rj   r   r   rj   r   rj   rj   r   r   rj   rj   rj   r   rj   r   rj   rj   r   )r   rj   r   r   r   r   rj   rj   r   rj   rj   r   r   r   r   rj   r   rj   rj   rj   r   r   rj   r   r   )rj   rj   rj   rj   r   rj   rj   rj   rj   rj   rj   r   r   r   rj   r   rj   r   rj   r   r   rj   r   r   r   )r   r   r   rj   r   rj   rj   r   rj   r   r   r   r   r   rj   r   rj   rj   r   rj   r   rj   rj   r   rj   )r   rj   r   rj   r   r   r   r   rj   rj   rj   r   r   rj   rj   rj   r   r   rj   r   rj   rj   r   rj   rj   )rj   r   rj   rj   r   rj   r   rj   rj   r   rj   rj   rj   r   rj   r   r   r   r   rj   r   r   rj   r   rj   )r   r   r   rj   r   r   rj   rj   r   rj   rj   r   rj   r   rj   rj   r   r   r   r   r   r   r   r   r   )rj   r   r   r   r   rj   r   rj   r   r   rj   rj   r   rj   r   rj   rj   rj   rj   r   rj   rj   rj   rj   rj   )r   r   rj   rj   r   rj   r   r   r   rj   r   r   rj   r   r   rj   r   r   r   rj   r   rj   r   rj   rj   )r   r   r   r   r   rj   rj   rj   r   rj   rj   rj   r   r   r   rj   r   rj   rj   r   rj   rj   r   r   r   )r   r   rj   r   rj   rj   r   rj   rj   rj   r   r   rj   r   rj   r   r   rj   r   rj   r   r   r   r   r   )r   r   r   rj   rj   r   rj   rj   rj   r   r   rj   r   rj   r   rj   rj   r   rj   rj   rj   r   r   rj   r   BLOCKr   )rr  1      )r   G   ^   );      A   c              3   `   K   | ](}t                              |                    u V  )d S r   r  r  r  r  rN  r   s     ru   rC  ztest_inverse.<locals>.<genexpr>  8      LLtAEE!HH~~$LLLLLLrw   zGE ADJ LU CH LDL QRc              3   `   K   | ](}t                              |                    u V  )d S r   rZ  r[  s     ru   rC  ztest_inverse.<locals>.<genexpr>  r\  rw   )r.   r  r   r  r   rI  rj  r   )r   AinvAArN  r   s      @@ru   test_inverser`    s   AA5577c!ff555Q''''555#a&&((((555Q''''555#a&&((((555Q''''							 	 	A 5577DT6SVV555%%%%555$&&&&555%%%%555$&&&&555%%%%	\\\WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW1Y 
Z 
ZB2 666!!B&#bhqk*:*:::::
C\\\\\\\ 	 	A LLLLL.C.I.I.K.KLLLLLLLL
C\\\\\\\ 	 	A LLLLL.C.I.I.K.KLLLLLLLLLLrw   c                  h   t          d          \  } }}}}t          d          }t          dddddd| z  |z  d|z  |z  z
  d| z  d|z  z
  z  d| z  |z  d| z  d|z  z
  z  gdddddd| z  |z  d|z  |z  z   d| z  |z  d|dz  z  z
  z  dgdd| z  |z  d|z  |z  z
  d| z  d|z  z
  z  d| z  |z  d| z  d|z  z
  z  ddddgdd| z  |z  d|z  |z  z   d| z  |z  d|dz  z  z
  z  dddddgdddd| z  |z  d|z  |z  z
  d| z  d|z  z
  z  d| z  |z  d| z  d|z  z
  z  ddgdddd| z  |z  d|z  |z  z   d| z  |z  d|dz  z  z
  z  dddgdd| z  |z  |z  d|z  | z  d|z  |z  z
  z  dd| z  |z  |z  d|z  | z  d|z  |z  z
  z  dd| z  |z  |z  d|z  | z  d|z  |z  z
  z  dgg          }|                                }||z  t          d          z
                      t
                    t          d          k    sJ t          d	 |                    t                    D                       d
k     sJ d S )Nz)Tau Tau_syn_in Tau_syn_ex C_m Tau_syn_gap__hr         ?       @      rh   r   c              3   4   K   | ]}t          |          V  d S r   rP  r  fs     ru   rC  z:test_inverse_symbolic_float_issue_26821.<locals>.<genexpr>  (      //!s1vv//////rw        @@)
rD   r   r  r.   r9  rJ   rI   maxatomsr   )Tau
Tau_syn_in
Tau_syn_exC_mTau_syn_gaprb  r7  Mis           ru   'test_inverse_symbolic_float_issue_26821rt    s   4;<g4h4h1CZk
%..C	
1QqCGCKJs 22SWS^5KLTRUXV`M`befibijmnxjxbxMyz	
1QqDHSLZ!33c#gj6HZYZ]IZ6Z[\_`	
CGCKJs**SWS^-CDT#XjEXZ]^aZabefpbpZpEqrstuvwxyz	
DHSLZ++c#gj.@ZQR]AR.RSTWXYZ[\]^_`	
1QCCOC//#c'#k/2IJ4PS8T_K_adehahilmxixaxKyz{|}~	
1QSS_S003s7;3Fs;XY>GY3YZ[^_`abc	T#Xj $c#gck#c'*2D&DEaSQ\H\]`H`befibijmbmnqrunu  wB  oB  cB  IC  DE  FJ  KN  FN  OY  FY  Z]  F]  _b  cf  _f  gj  _j  kn  or  kr  s}  k}  _}  F~  @  	A 	 	A 
BbD3q66M$$V,,a8888 //rxx/////#555555rw   c                  4   t          d          \  } }}}}t          d          }t          g dd|dz  z  d|z  dddddgg dddd|dz  z  d|z  dddgg d	ddddd|dz  z  d|z  dgd
|z  dd
|z  dd
|z  dd| z  gg          }||z                                  }|                    |          ||z  z
                      t
                    t          d          k    sJ t          d |                    t                    D                       dk     sJ d S )Nz-Tau, Tau_syn_in, Tau_syn_ex, C_m, Tau_syn_gaprb  )r   rc  r   r   r   r   r   r   rh   r   r   )r   r   r   rc  r   r   r   )r   r   r   r   r   rj   r   rj   r   c              3   4   K   | ]}t          |          V  d S r   rg  rh  s     ru   rC  z6test_matrix_exponential_issue_26821.<locals>.<genexpr>  rj  rw   rk  )
rD   r   r,   r+   r9  rJ   rI   rl  rm  r   )rK   rL   rM   rN   r   rO   r7  Mes           ru   #test_matrix_exponential_issue_26821rx    sW    KLLMAq!QA;;;	AqD"Q$aAQ1;;;;Q1a4AQ1;;;;QaAr!Q$w1;qSQAaCA1Q31bd; 	 	A A#BGGAJJ2((00E!HH<<<< //rxx/////#555555rw   c                     t          ddt          dz  t          z  dt          dz  z  t          t          z  z   g          } t          t          g}|                     |          t          dt          z  t          z  t          dz  gt          dt          z  t          z   gg          k    sJ t          ddt          t          dz  t          dz  z  g          } |                     |          t          ddgdt          z  t          dz  z  t          dz  dz  t          dz  z  gg          k    sJ t          dz  t          z  }t          t          g}t	          ||          t          dt          z  dt          z  gdt          z  dgg          k    sJ t          dz  t          dz  z  }t	          ||          t          dt          dz  z  dt          z  t          dz  z  gdt          z  t          dz  z  dt          dz  z  t          z  gg          k    sJ t
          t          t          dz  z  z   }t          dz  dt          dz  z  z   }t          ddt          z  gdt          z  dt          z  gg          }|t	          |t          t          t          g                    k    sJ |t	          |t          t          t          g          j                  k    sJ t	          |t          t          f|g          t          ddt          dz  z  dt          z  gdt          dz  z  dt          z  dt          z  gdt          z  dt          z  dgg          k    sJ d S )Nrj   rh   rk   ri   r   rm   )r   rP   rQ   jacobianr0   rR   r3  )r  symsri  ganss        ru   test_jacobian_hessianr~    s   q!ad1fa1fqsl+,,Aq6D::dv!Aq!t}q!A#'l&CDDDDDDq!aAad^$$A::dv1v!AqD!Q$q&A+/F&GHHHHHH	1QAq6D1dv!QqSzAaC8&<======	1QT	A1d1a41QT"QqSAXqAvax$89::; ; ; ; 	
AadF
A	1qAvA
1!*Q3!*  C'!VQF^^,,,,,,'!VQF^^-......1q!fqc""f1a41	
1a4AaC1aCAaC1. '  '             rw   c                     t          t          t                    t          t                    gt                    t          t                    dz  t          t                    dz  z   k    sJ t          t	          t                    t	          dt          z            gt                    t	          dt          z            k    sJ t          t	          t                    t          gt                    t	          t                    t          t	          t                    z  z
  k    sJ t          dt          t          dz  gt                    dk    sJ dt	          t                    z  t          t                    z  t          z  dt          t                    z  t	          t                    z  t          dz  z  z   dt	          t                    z  t          t                    z  t          z  z
  t	          t                    t          t                    z  t          dz  z  z
  t	          t                    t          t                    z  t          dz  z  z   } t          t	          t                    t          t                    t          dz  gt                                                    | k    sJ t          t	          t                    t          t                    t          dz  gt          d                                          | k    sJ t          dz   t          t                    dz  z  t          dz  t          t                    dz  z  z
  dt          z  t          t                    dz  z  z
  dt          z  t          t                    dz  z  z
  }t          t          t                    t          t                    t          dz  gt                                                    |k    sJ t          t          t                    t          t                    t          dz  gt          d                                          |k    sJ t          g t                    dk    sJ d S )Nrh   ri   rj   r  rm   r  rm  )rH   r)   rP   rA   r,   r-   )w1w2s     ru   test_wronskianr  4  s   c!ffc!ff%q))SVVQYQ-BBBBBc!ffc!A#hh'++s1Q3xx7777c!ffa[!$$A3q66(99999aAqD\1%%****	CFF3q66	!	aAhs1vvoad2	2Qs1vvXc!ff_Q5F	FAs1vvad
 VVCFF]1a4/
0Bc!ffc!ffad+Q//6688B>>>>c!ffc!ffad+Q{CCCJJLL   
Q$s1vvqy1a4A	>	)AaCA	M	9AaCA	M	IBc!ffc!ffad+Q//6688B>>>>c!ffc!ffad+Q{CCCJJLL   Rq      rw   c                     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          z   dgg                              t          dt          di          t          ddgddgg          k    sJ t          D ]E} t          ddgddgg          |                     d                              ddi          k    sJ Fd S )	Nrj   rk   rl   rh   r   r   rr  r   )r   rP   xreplacerQ   rA  r.   rM  s    ru   test_xreplacer  E  s   Aq6Aq6"##,,aV44AA  ! ! ! !Aq6AE1:&''00!RB@@Q"a!""# # # # G G1v1v&''3771::+>+>1v+F+FFFFFFG Grw   c                     t          d          } t          d          }t          dt          z  dt          z  z   t          t          t          z  z   t          z  g |t                    t           |t                    z  z    |t                    z  dd| z  t          | t          z            | z  z
  z  t          z  gg          }|                                 |t          t          t          z   t          t          z  z  dt          z   gdt          z   dddt          t          | z            z  z
  t          | z  z  z  gg          k    sJ dt          z   dz  }t          |gg          }|                                 |t          |gg          k    sJ |                    t                     |t          |                    t                    gg          k    sJ t          d          } t          d          }t          dt          z  dt          z  z   t          t          t          z  z   t          z  g |t                    t           |t                    z  z    |t                    z  dd| z  t          | t          z            | z  z
  z  t          z  gg          }|                                t          t          t          z   t          t          z  z  dt          z   gdt          z   dddt          t          | z            z  z
  t          | z  z  z  gg          k    sJ dt          z   dz  }t          |gg          }|                                t          |gg          k    sJ |                    t                    t          |                    t                    gg          k    sJ t          t          t          t                    dz  t          t                    dz  z   gg                    t          dgg          k    sJ t          ddgddgg          }d|                                z                                  t          dd	          k    sJ d S )
NrH  ri  rj   rh   )ratiorG  ri   rk   "   )r$   r   r   rP   rQ   r)   r7   r@   r6   r   rA   tracer    )rH  ri  r7  eqr   s        ru   test_simplifyr  N  s   sAAQqS1Q3YQqSAH1Q44!AAaDD&=!!A$$&QqS3q2v;;q=-@(AB(FHJ 	K 	KAJJLLL1q51q5/!a%I$%E1q1SAYY;A.F+GIK L L L L L L
a%!BvAJJLLLvJJRJ2../0111111sAAqS1Q3YQqSA@1Q44!AAaDD&=!!A$$
QqS3q2v;;q=%8 9B >@ 	 	A ::<<6q51q5/!a%9E1q1SAYY;A679#      
 a%!B"A::<<6B4&>>))))::B:6BKKbK,A,A+B*C#D#DDDDDOc!ffai#a&&!)&;%<$=>>??#aSE**+ + + + 	Q!Q !!AqwwyyM##%%!R888888rw   c                     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    sJ | j        j        | k    sJ | j        |                                 k    sJ d S )N)
rj   rh   ri   rk   rl   rm   r   r   r   r   rj   rh   ri   rk   rl   rm   r   r   r   r   )r   r3  	transposer6  s    ru   test_transposer  v  s    ......0 	1 	1A3&QFFFFFFFFFF	% 	& 	& 	& 	& 	& 	& 35A::::3!++--rw   c            
      N   t          t          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                  *    t          d          j        S r   )r.   r   r{   rw   ru   r   z!test_conj_dirac.<locals>.<lambda>  s    3q668 rw   rj   r   r  r  r   )r_   AttributeErrorr   r   r   r6  s    ru   test_conj_diracr    s    
>++,,,Aq!Aq!Aq! 	 	A
 3&***2A*2r2*2rAr*, - - - - - - - -rw   c                  j    t          g dg dg dg          } |                                 dk    sJ d S )Nr   )r   rl   r   )r   r   r   r(  r   r  r6  s    ru   
test_tracer    sE    							 	 	A 7799??????rw   c                      t          ddddg          } | j        dk    sJ t          t          ddgdt          dgg          }|j        dk    sJ d S )Nrj   rh   r   rS  r   )r   r  rP   rQ   )r   r7  s     ru   
test_shaper    sh    q!aVA7fAq	Aq	 	 	A7frw   c                  t   t          t          ddgdt          dgg          } |                     dd            | t          t          ddgdt          dz   dgg          k    sJ |                     dd            | t          t          dz   ddgdt          z   t          dz   dgg          k    sJ |                     d          t          t          dz   ddgg          k    sJ |                     d          }d|d<   | d         t          dz   k    sJ | dd d	f         }d|d<   | d         t          dz   k    sJ |                     d          }|t          t          dz   dt          z   g          k    sJ d|d<   | d         t          dz   k    sJ | d d df         }d|d<   | d         t          dz   k    sJ d S )
Nr   rj   c                     | |z   dz   S r  r{   )rr   s     ru   r   z!test_col_row_op.<locals>.<lambda>  s    QUQY rw   rh   ri   c                     | t           |z  z   S r   )rQ   )rM   r   s     ru   r   z!test_col_row_op.<locals>.<lambda>  s    QAX rw   *   r~   r   )r   rP   rQ   row_opcol_opr   r   )r7  r1r  s      ru   test_col_row_opr    s   Aq	Aq	 	 	AHHQ&&'''1AE1' ( ( ( ( ( ( HHQ%%&&&QAq)QAq)+ , , , , , ,
 5588vAq!}o......	
qBBqET7a!e	
1crc6BBqET7a!e	
qBQA''''''BqET7a!e	
111a4BBqET7a!erw   c                      t          g dg dg          } |                     dd           | d         dk    sJ | d         dk    sJ | d         d	k    sJ d S )
Nrp   ro   rj   ri   r   r{  r~   rS  r`  )r   row_multr6  s    ru   test_row_multr    sk    ww 	 	AJJqOOOS6R<<<<S6Q;;;;S6R<<<<<<rw   c                      t          g dg dg dg          } |                     ddd           | d         dk    sJ | d	         d
k    sJ | d         dk    sJ d S )Nrp   ro   r  rh   r   rl   r~   rm   r   rk   r   rh   r   )r   row_addr6  s    ru   test_row_addr    sy    wwww 	 	A IIa!S6Q;;;;S6Q;;;;S6Q;;;;;;rw   c                  J   t           D ]} |                     d          }|                    ddd            | | g dg dg dg          k    sJ |                     d          dz  }d	|d
<   |                    ddd            | | | g dg dg dg          k    sJ d S )Nri   rj   r   c                     | d|z  z   S r  r{   r	  us     ru   r   z!test_zip_row_op.<locals>.<lambda>      AaC rw   r   r  r   rh   r   r   c                     | d|z  z   S r  r{   r  s     ru   r   z!test_zip_row_op.<locals>.<lambda>  r  rw   )rh   r   r   )rk   r   r   r   )mutable_classesr.   
zip_row_op)rN  r7  s     ru   test_zip_row_opr    s    & &GGAJJ	Q//000CC""$ % % % % % % GGAJJqL$	Q//000!!CC##% & & & & & & && &rw   c                      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    sJ d S )Nrp   )rh   rh   ri   r{   )rj   rj   r  )r   rK   rL   s      ru   test_issue_3950r    sz    yyyAyyyAyyyARS66666666666666rw   c                      G d d          }  G d d          } |             } |            }t          g d          }||         dk    sJ d||<   |d         dk    sJ t          g dg d	g          }|||f         d
k    sJ |d|f         d
k    sJ ||df         d
k    sJ d|||f<   |d         dk    sJ d
|d|f<   |d         d
k    sJ d||df<   |d         dk    sJ d S )Nc                       e Zd Zd ZdS )test_issue_3981.<locals>.Index1c                     dS r  r{   r0  s    ru   	__index__z)test_issue_3981.<locals>.Index1.__index__      1rw   Nr  r  r  r  r{   rw   ru   Index1r    #        	 	 	 	 	rw   r  c                       e Zd Zd ZdS )test_issue_3981.<locals>.Index2c                     dS r  r{   r0  s    ru   r  z)test_issue_3981.<locals>.Index2.__index__  r  rw   Nr  r{   rw   ru   Index2r    r  rw   r  rp   ri   rl   rh   ro   rm   rj   rk   rS  r   r  )r  r  index1index2r   s        ru   test_issue_3981r    sk                  VXXFVXXFyyyAV9>>>>AfIQ419999			999%&&AVV^!!!!QY<1VQY<1AffnT7a<<<<AaiLT7a<<<<AfaiLT7a<<<<<<rw   c                      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 )Nrp   Trj   rh   ri   Frk   )r   is_upperrI   r  s    ru   test_is_upperr    sz    			{A:aS1#A:aA:rw   c                      t          g dg          } | j        du sJ t          dgdgdgg          } | j        du sJ d S )Nrp   Frj   rh   ri   T)r   is_lowerr  s    ru   test_is_lowerr    sZ    			{A:aS1#A:rw   c                      t          ddg d          }  | j                    sJ t          ddgddgg          }  | j                    rJ t          g           }  | j                    sJ d S )Nrk   )r   rh   rj   rm   r   r   rj   rh   r   r   r   ri   r   r   r   r   rj   r   r   r  r  s    ru   test_is_nilpotentr    s    q!EEEFFA1>AA  Aq~r

A1>rw   c                     d\  } }t          | |          } |j        d           dt          | |          z  }||k    sJ |j        |j        cxk    rdk    sn J |j        |j        cxk    rdk    sn J |j        |j        cxk    rdk    sn J t          d          t          dd          k    sJ t          d          t          dd          k    sJ t          dd          t          dddgdz            k    sJ t          dd          t          dddgdz            k    sJ  |j        d           |t          | |          k    sJ d S )N)ri   rl   rl   ri   rh   r   rm   rj   )rI   fillr5   rq   rr   r  r   )rH  r   rK   rL   s       ru   test_zeros_ones_fillr  '  s   DAqaA
AFAKKK	DAJJA66666QV    q      6QV    q      7ag''''''''''88uQ{{""""77d1ajj    A;;&As1u------1::1qc!e,,,,,,
AF1IIIarw   c                      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    sJ d S )Nr   rh   )rI   r   rq   rr   r  s    ru   test_empty_zerosr  <  sx    aA====aA6Q;;;;6Q;;;;aA6Q;;;;6Q;;;;;;rw   c                     t          t          dz  t          t          z  gt          t          t                    z  t          t	          t                    z  gg          }  | j        t                    t          dt          z  t          gt          t                    t	          t                    gg          k    sJ t          t          t           t          dz  gt          t                    dt          z  t          t                     z
  t          dt          z  z   gg                              t          t                    t          t          t           t          gt          dt          gg          k    sJ t          t          t                    dz
  t          z  dt          z  t          t          z  z   t          t          z  gdt          z  t          t                    t          t          t          dz                       gg                              t          d          t          g dt          dt          d          gg          k    sJ  | j
        t                    t          t          dd          t          dz  z  t          t          dz  z  dz  gt          dz  t          t                    z  dz  t          dz  t	          t                    z  dz  gg          k    sJ d S )Nrh   rj   r   r  ri   )r   rP   rQ   rA   r)   r+   r,   r  r6   rP  r1   r    r  s    ru   test_issue_3749r  G  s2   AqsaAh#a&&1233A16!991a3q663q66*:;<<<<<<	
QB1	Q1sA2wwAaC(* + ++05B<<bS"Ar{+,,- - - - 
a&&1*a1qsAqD*	
1c!ffc#a!e**oo&( ) )).q!			B3q66?+,,- - - - 1;q>>V	!Q1	a1fQh'	
Ac!ffQ1SVVA&%( ) ) ) ) ) ) ) )rw   c                      t          d          } |                     dd           dD ]4}|                     |d           |                     d          k    sJ 5d S )	Nrk   r   rj   )r  r  c                     | dk    S r8  r{   rt   s    ru   r   z%test_inv_iszerofunc.<locals>.<lambda>[  s
    a rw   )rn  
iszerofuncr  rm  )r.   col_swapr  )r   rn  s     ru   test_inv_iszerofuncr  W  s{    AAJJq!    uuF/?/?u@@EEE            rw   c                  \   t          d          \  } }t          | t          |          z  | t          |          z  g          }t          | |g          }|                    |          }||                    |j                  k    sJ ||j                            |          k    sJ ||j                            |j                  k    sJ |j        t          |j        d                   z  |z  }|                    t                    }|t          ddgd| dz  gg          k    sJ d S )Nrho,phir   rj   rh   )
rD   r   r)   rA   rz  r3  r.   r  r9  rG   )rhophiXYr  r|  s         ru   test_jacobian_metricsr  _  s   y!!HCCHHc#c((l+,,ASzA	

1A

13q!!!!!!qs######	C
OOAA	HAACF,--------rw   c                     t          d          \  } }t          | t          |          z  | t          |          z  | dz  g          }t          | |g          }t          t          |          |  t          |          z  gt          |          | t          |          z  gd| z  dgg          }|                    |          |k    sJ d S )Nr  rh   r   )rD   r   r)   rA   rz  )r  r  r  r  r  s        ru   test_jacobian2r  l  s    y!!HCCHHc#c((lCF344ASzA	SC4C=!	SCCL!cEq! 	 	A
 ::a==Arw   c                  b   t          t          t          t          z   t          z             t          t          t          z   t          z             t          t          t          z   t          z             g          } t          t          t          t          g          }t          dd          D ]}t          dd          D ]q}| d |d d f         }|d |d d f         }|                    |          }|j        |k    sJ |j        |k    sJ t          |          D ]}|d d |f         |k    sJ rd S Nrj   ri   )	r   r,   rP   rQ   rR   r   rz  rq   rr   )r  r  r   r   X_sliceY_slicer  ks           ru   test_issue_4564r  x  s%   AEAIAEAIAEAI?@@A1ayA1a[[ * *q! 	* 	*AAAAhGAAAhG  ))A6Q;;;;6Q;;;;1XX * *Aw')))))*	** *rw   c                  @    t          t          t          t          z   t          z             t          t          t          z   t          z             gt          t          t          z   t          z             t          t          t          z   t          z             gg           t          t           fd            dd d f          t          t          t          gt          t          gg          t          t           fd           t          t           fd           d S )Nc                  l                          t          t          t          t          g                    S r   rz  r   rP   rQ   rR   r  s   ru   r   z(test_nonvectorJacobian.<locals>.<lambda>  s!    ajjAq	):):;; rw   r   c                  .                                    S r   )rz  r  r  s   ru   r   z(test_nonvectorJacobian.<locals>.<lambda>  s    ajjmm rw   c                  |                          t          t          t          gt          t          gg                    S r   r  r  s   ru   r   z(test_nonvectorJacobian.<locals>.<lambda>  s(    ajj1a&1a&0B)C)CDD rw   )r   r,   rP   rQ   rR   r_   rk  r  s   @@ru   test_nonvectorJacobianr    s    QUQYQUQY0QUQYQUQY02 	3 	3A
9;;;;<<<	!QQQ$AAA  A
9+++++,,,
9DDDDEEEEErw   c                      t          ddgddgg          } |                                 }|j        dk    sJ t          d          D ]}||         |dz   k    sJ d S Nrj   ri   rh   rk   )r   vecrr   r   )r   m_vecr   s      ru   test_vecr    ss    AA  AEEGGE:????1XX ! !Qx1q5     ! !rw   c                  ~   t          ddgddgg          } |                                 }|j        dk    sJ t          d          D ]}||         |dz   k    sJ |                     d          }|d         dk    sJ t          dt          t          t
          z   z  gt
          t          z  t          dz  z   dgg          } |                     d          }|d         t
          t          z  t          dz  z   k    sJ t          dt          t          t
          z   z  gt
          t          z  dgg          } |                     dd          }|d         t
          t          z  k    sJ t          t          d            t          t          d	            t          t          d
            t          t          d            d S )Nrj   rh   ri   Fr  r   )r  check_symmetryc                  J    t          ddgg                                          S r  r   vechr{   rw   ru   r   ztest_vech.<locals>.<lambda>       v1vh//4466 rw   c                  P    t          ddgddgg                                          S r  r  r{   rw   ru   r   ztest_vech.<locals>.<lambda>  '    v1v1v&677<<>> rw   c                  J    t          ddgg                                          S r  r  r{   rw   ru   r   ztest_vech.<locals>.<lambda>  r  rw   c                  P    t          ddgddgg                                          S r  r  r{   rw   ru   r   ztest_vech.<locals>.<lambda>  r  rw   )	r   r  rr   r   rP   rQ   r_   rX   r  )r   m_vechr   s      ru   	test_vechr    s   AA  AVVXXF;!1XX " "ayAE!!!!!VVUV##F!9>>>>Aq1uI1q!tQ011AVVUV##F!9!ad
""""Aq1uI1a)**AVVU5V99F!9!
:66777
:>>???
:66777
:>>?????rw   c                       t          g d          t          g d          k    sJ dddgg t          t           fd           t           d          t          g d          k    sJ d S )Nrp   rj   rh   ri   c                  "    t                     S r   )r*   r   s   ru   r   ztest_diag.<locals>.<lambda>  s    tAww rw   F)strict)r*   r   r_   r  r   s   @ru   	test_diagr    s}    			??fYYY//////	
AsA
:'''%   F999$5$5555555rw   c                  d   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	          | ||          }|                    d          t	           | j                     |j                     |j                              k    sJ t	          | ||          }|                    d          t	           | j                     |j                     |j                              k    sJ t	          | ||          }|                    d          t	           | j                     |j                     |j                              k    sJ t	          | | || ||           }|                    d          t	           | j                     | j                     |j                     | j                     |j                     | j                              k    sJ |                    dd          t	           | j        d           | j        d           |j        d           | j        d           |j        d           | j        d                    k    sJ d S )	Nrj   rh   ri   T)try_block_diagr  )r  rn  rm  )r   rP   rQ   rR   r*   r  )rK   rL   rM   r   s       ru   test_inv_blockr    s   AA  AAA  AAq	Aq!9q!Qi011AQ1A555%%eaegguquww)H)HHHHHQ1A555%%eaegguquww)H)HHHHHQ1A555%%eaegguquww)H)HHHHHQ1aAA555%%%!%''51577EAEGGUQUWW*> *> > > > >55U533tUUQU%000%!%u2E2E2EUUQU%000%!%u2E2E2E8G 8G G G G G G Grw   c                  .   t          t          d            t          t          d            t          t	          d                    t          d          k    sJ t          t          d                    t          d          k    sJ t          t          d            t          t	          d                    t          d          k    sJ t          t          d                    t          d          k    sJ t          t          d            t          t	          d          t          d                    t          dd          k    sJ t          t          d            t          t          d            t          t          d	            d
S )zg
    Check that matrix dimensions can be specified using any reasonable type
    (see issue 4614).
    c                  "    t          dd          S )Nri   r   rI   r{   rw   ru   r   z$test_creation_args.<locals>.<lambda>  s    uQ|| rw   c                  &    t          dddd          S Nrj   rh   ri   rk   r	  r{   rw   ru   r   z$test_creation_args.<locals>.<lambda>  s    eAq!Q// rw   ri   c                       t          d          S N      @r	  r{   rw   ru   r   z$test_creation_args.<locals>.<lambda>  s    uRyy rw   c                       t          d          S r  r.   r{   rw   ru   r   z$test_creation_args.<locals>.<lambda>  s    s2ww rw   rk   c                       t          d          S r   r  r{   rw   ru   r   z$test_creation_args.<locals>.<lambda>  s    fQii rw   c                  "    t          dd          S r  r  r{   rw   ru   r   z$test_creation_args.<locals>.<lambda>  s    fQll rw   c                  &    t          ddgg          S r  r  r{   rw   ru   r   z$test_creation_args.<locals>.<lambda>  s    vq1#h// rw   N)r_   r  rk  rI   ri  r   r.   r5   r{   rw   ru   test_creation_argsr    sQ   
 :++,,,
9//000Q==E!HH$$$$a((((
:(()))s1vv;;#a&&    wqzz??c!ff$$$$
:'''A

##tAqzz1111
9''(((
9**+++
://00000rw   c                  8   t          ddg d          } |                                 rJ |                                 sJ |                     d          sJ t          ddg d          } |                                 sJ t          ddd          } |                                 sJ |                                 sJ t          ddg d          } | t          ddd          k    sJ t          ddt	          dd                    } |                                 rJ |                                 sJ t          d	          } |                                 sJ t          d
          } |                                 sJ t          dddt
          dz  dt
          z  z   dz   t          t
          dz   dz  ddt          ddg	          } |                                 sJ |                     d          rJ |                                                     d          sJ d S )Nrh   r  Fr  r  rj   ri   )	rj   r   r   r   rh   r   r   r   ri   ))rl   r   r]  r~   )rl   r   r   )r   rm   r   r   )r   is_diagonalr!  r*   rI   rP   rQ   r-   r   s    ru   test_diagonal_symmetricalr    s   q!\\\""A}}>>>>5>)))))q!\\\""A==??Q1A==??>>q!00011AQ1q!U1a[[!!A~~==??'((A==??%&&A==??q!aA!aQUQJ1aAFGGA>>~~u~-----88::""E"2222222rw   c                  	   t          ddt          z   gdt          z
  dgg                                          sJ t          ddg d                                          rJ                                 rJ t	          t
          fd           t          ddd                                          \  } }| t          d          k    sJ |k    sJ t          ddg d                                          sJ                                 sJ                                 \  } }| 	                                z  | z  |k    sJ t          ddg d                                          sJ                                 sJ                                 \  } }| 	                                z  | z  |k    sJ | t          d          k    sJ |k    sJ t          ddg d                                          sJ                                 \  } }| 	                                z  | z  |k    sJ t          ddg d	                                          sJ                                 \  } }| 	                                z  | z  |k    sJ | D ]"}|
                                d         dk    sJ #t          ddg d
                                          sJ                                 sJ                                 \  } }| 	                                z  | z  |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                                           sJ                                 \  } }| 	                                z  | z  |k    sJ t          ddg d                                          rJ t	          t          fd           t          ddg d                                          rJ t	          t          fd           t          d          \  }}}}t          dd||||g                                          sJ                                 sJ d S )Nrj   rh   ri   rr  rj   rr  rk  ri   r   c                  ,                                      S r   r  r   s   ru   r   z&test_diagonalization.<locals>.<lambda>	       rw   r  )rj   r   r   ri   r  )	rj   rh   r   r   ri   r   rh   r   rh   r  r   )r   rj   r   r   Tc                  .                          d          S )NTr  r   s   ru   r   z&test_diagonalization.<locals>.<lambda>/	  s    d 3 3 rw   r   rj   r   r   c                  ,                                      S r   r  r   s   ru   r   z&test_diagonalization.<locals>.<lambda>7	       rw   )	rr  rj   rr  rk  ri   r   rh   r   rk   c                  ,                                      S r   r  r   s   ru   r   z&test_diagonalization.<locals>.<lambda>;	  r!  rw   za b c d)r   r   r  r!  r_   rW   r*   r  r.   r  as_numer_denomr  rV   rD   )r  r   r   rK   rL   rM   rN   r   s          @ru   test_diagonalizationr$    s   AaC1Q3(#$$A     q!+++,,A""$$$$$~~
!8!8!8!8999 	Q1A]]__FQA;;;;6666q!\\\""A>>     ]]__FQ5577Q;?aq!\\\""A>>     ]]__FQ5577Q;?aA;;;;6666q!\\\""A     ]]__FQ5577Q;?aq!11122A     ]]__FQ5577Q;?a * *!!!$)))))q!\\\""A==??     ]]__FQ5577Q;?aAA'(((((( 	q!]]]##A""4(((((
;3333444     ]]__FQ5577Q;?a 	q!\\\""A""$$$$$
;////000q!55566A""$$$$$
;////000 ##JAq!Qq!aAq\""A>>       rw   c                  
    t          ddgddgg             j                    du sJ d d<     j                    du sJ t          ddgddgg             j                     d d<   t          t           fd           d S )Nr   rj   Tr   Fc                  "      j                     S r   r  r  s   ru   r   z"test_issue_15887.<locals>.<lambda>N	  s     rw   )r   r  r  r_   rV   r  s   @ru   test_issue_15887r'  D	  s    QFQF+,,A1  D((((AdG1  E))))QFQF+,,AAMOOOAdG
;////00000rw   c                     t          ddg d          t          t          fd           t          ddg d          t          ddg d          }                                 \  }}| |k    sJ |                                 d         k    sJ t          ddg d          t          ddg d	          }                                 \  }}| |k    sJ t          ddg d
          t          ddg d          }                                 \  }}| |k    sJ t          ddg d          t          ddg d          }                                 \  }}| |k    sJ t          ddg d          t          ddg d          }                                 \  }}| |k    sJ t          ddg d          t          ddg d          }                                 \  }}| |k    sJ t          ddg d                                          rJ t          ddg d          }                                 \  }}| |k    sJ t          t          dd          t          dd          gt          dd          t          dd          gg                                          \  }}|                                D ]$}t          |t                    r|j	        dk    sJ %d S )Nri   rh   r  c                  ,                                      S r   )r  r   s   ru   r   z"test_jordan_form.<locals>.<lambda>T	  r  rw   )	r   r  rm   r   ir   r{  ir'  )	r   r   r   r   rj   r   r   r   rj   rj   	r   rj   r   r   rk   r   r   rj   rh   )	rh   rj   r   r   rh   r   r   r   rh   )	rh   rm   rj   rj   r   rj   rh   r  )	r   rj   r   r   r   r   r   r   r   )	rk   r   rh   rl   rq  ri   rm   rk   )	r   rj   r   r   r   r   r   r   rj   rk   )rm   rl   r   rr  rr  r   ri   ri   rh   rj   r   rr  r   rj   rl   rl   )rh   rj   r   r   r   rh   r   r   r   r   rh   rj   r   r   r   rh   )rm   rh   r  rr  rh   r   rm   rh   r   r-  r  r   r   ri   rk   )r   r   r   r   r   rh   rj   r   r   r   rh   r   r   r   r   rh   )rl   rk   rh   rj   r   rj   r   r   r   r   ri   r   rj   rj   r   rh   )rj   r   r   r   r   rh   r   r   r   r   rk   rj   r   r   r   rk   z1.0n   )	precisionz2.0z3.14159265358979323846264338327z4.0)
r   r_   rW   r  r  r  r   r/  r$  _prec)Jmustr  r  termr   s       @ru   test_jordan_formr3  Q	  sk   q!+++,,A
!8!8!8!8999 	q!:::;;A1a55566E==??DAqA::::AMMOOA&&&&& 	q!22233A 1a44455E==??DAqA:::: 	q!44455A 1a77788E==??DAqA:::: 	q!33344A1a44455E==??DAqA::::q!LLLMMA1a     E
 ==??DAqA::::q!LLLMMA 1a ' ' ' ( (E ==??DAqA::::q!JJJKKA""$$$$$1aIIIJJE==??DAqA:::: 	u,,,eES.I.I.IJ8CHHH%PUadJeJeJefh 	i 	iA==??DAq

 % %dE"" 	%:$$$$% %rw   c            	         t          g dg dg dg dg          } ddt          z  z
  }ddt          z  z   }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          ||z  |                                z            | k    sJ d S )	N)rh   rk   rj   r   )r   rh   r   rj   )r   r   rh   rk   )r   r   r   rh   rh   rk   rj   r   )r   r   r  r@   r  )r   pqJmust1Jmust2r  r  s          ru   #test_jordan_form_complex_issue_9274r9  	  s-               " 	# 	#A 	
AaCA	AaCAaAq\Aq\Aq\Aq\# $ $F aAq\Aq\Aq\Aq\# $ $F ==??DAq;;!v++++AaCK  A%%%%%%rw   c                      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  r   r  r  r  r  )r   r  r  s      ru   test_issue_10220r;  	  s     	 	A ==??DAq$$$& ' ' ' ' ' ' $$$$	& ' ' ' ' ' ' ' 'rw   c                  "   t          g dg dg dg dg          } |                                 \  }}|                                t          t           t           dz  t          t          dz  gdt          z   ddt          z
  dgdt	          d           dz  t          dz  z
  dt	          d           dz  t          dz  z   gg d	g          k    sJ |t          t           dddgdt           ddgddt          dgdddt          gg          k    sJ d S )
Nr  )r   r   r   r   )r   r   r   r   )r   r   rh   rj   rh   r   r   rj   r   )r   r  r-   r   r"   )r   r  r  s      ru   test_jordan_form_issue_15858r=  	  sB   	 	 	A
 ]]__FQ88::R1"Q$Q!A#6	aQQA6!A$$q1Q3Q1a!A#6666	!8 9 9 9 9 9 9
 
Q1	
QB1	
Aq!	
Aq!	        rw   c                     t          d          \  } }}t          | | z
  |dz  ||z   z  z   ||z  ||z   z  g||z  ||z   z  | |dz  ||z   z  z   gg          }|                    t                    }|t	          t          dz  || z  || z  z   d|z  |z  z   ||z   z  t          z  z   ||z  | z  ||z   z  z   t          d          k    sJ t          |          t          u sJ t          ddgddgg          }|                                |                    t                    cxk    r&t          t          dz  t          z
  dz
            k    sn J t          ddgt          dgg          }|                    t                    }|j        t          k    sJ |                                	                    |j        t                    t          dz  dt          z  z
  k    sJ d S )	Nz
UA K_i K_wrh   zZZ(K_i,K_w,UA)r  rj   ri   r   rm   )
rD   r   r  rP   r   r  r   genas_exprrx  )UAK_iK_wr   r  r5  s         ru   test_Matrix_berkowitz_charpolyrD  	  s   <((LBS#S!VS3Y//s3wc	7JKGS3Y/#Qc	8J1JKM 	N 	NA zz!}}HQTSVc"f_quSy039=a??C
C#I !*:	< 	< 	<< < < < >>X%%%%AA  A::<<1::a==BBBBHQTAX\,B,BBBBBBBAA  A	

1A5A::::99;;AE1%%A!333333rw   c            
         t          d          } t          j        d|           }|                                t          t	          |           gg          k    sJ t          j        d|           }|                                t          t	          |           t	          |           t	          |           dz  gdt	          |           t	          |           gddt	          |           gg          k    sJ d S )Nlamdarj   ri   rh   r   )r$   r   r  _eval_matrix_exp_jblockr,   r   r   s     ru   test_exp_jordan_blockrI  	  s    wAAq!!A$$&&&3q66(*<*<<<<<Aq!!A$$&&VVSVVSVVAX&AA3q66N 	 	     rw   c            	      h   t          ddgddgg          } t          t          d          dt          d          z  dz  dt          d          z  dz  z   gdt          d          gg          }|                                 |k    sJ t          |           |k    sJ t          ddgddgg          } |                                 t          t          dgdt          gg          k    sJ t          |           t          t          dgdt          gg          k    sJ t          ddgddgg          } |                                 t          t          t          d          z  t           t	          d          z  gt          t	          d          z  t          t          d          z  gg          k    sJ d S )	Nri   rk   r   r   r   rl   rj   r   )r   r,   r   r)   rA   )r   m_exps     ru   test_exprL  	  s~   AB !!ASVVRBZ\Ac!ffHQJ67!SWWFGGE5577eq66U????AA  A5577fq!fq!f-......q66VaVaV,------B!Q !!A5577fqQx!CFF3aAh#a&&5IJKKKKKKKKrw   c                  l   t          d          } t          j        d|                                           t          t	          |           gg          k    sJ t          j        d|                                           t          t	          |           d| z  dd| dz  z  z  dd| dz  z  z  gdt	          |           d| z  dd| dz  z  z  gddt	          |           d| z  gdddt	          |           gg          k    sJ t          g dg d	g d
g          t          t          fd           d S )NrF  rj   rk   r   rh   ri   r   r   r   r  c                  ,                                      S r   )r2   r   s   ru   r   ztest_log.<locals>.<lambda>
  s     rw   )r$   r   r  _eval_matrix_log_jblockr2   r_   rV   rH  s    @ru   test_logrP  
  sW   wAAq!!A$$&&&3q66(*<*<<<<<Aq!!A$$&&Q1b!AqD&k1a1f:6CFFAaCQq!tV-As1vvqs#Aq#a&&!		
 	

 
 
 
 				

		 	A
 ;(((((rw   c            	          t          d          } t          dd| t          |           dz  t          |           dz  z   t          j        g          }t          |          \  }}}}|t          j        k    sJ d S )NrP   ri   rj   rh   )r$   r   r)   rA   r"   r   rU   rP   columnpivot_offset	pivot_valpivot_assumed_nonzero
simplifieds         ru   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1rX  !
  st     	sAAq1c!ffai#a&&!)3QV<==F$V,, ?L)2Jrw   c            
      *   t          d          } t          dd| t          |           dz  t          |           dz  z   | dz  z   t          |           dz  t          |           dz  z   g          }t	          |t
                    \  }}}}|dk    sJ d S )NrP   ri   rj   rh   simpfunc)r$   r   r)   rA   rU   r[   rR  s         ru   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2r\  .
  s     	sAAqVVQYs1vvqy(A-VVQYs1vvqy(*+ +F
 	%Vi@@@ ?L)2J>>>>>>rw   c            
         t          d          } t          dd| t          |           dz  t          |           dz  z   | z   t          |           dz  t          |           dz  z   g          }t	          |t
                    \  }}}}t          |          dk    sJ |d         d         dk    sJ |d         d         d| z   k    sJ |d         d         dk    sJ |d         d         dk    sJ d S )NrP   ri   rj   rh   rZ  r   )r$   r   r)   rA   rU   r[   lenrR  s         ru   +test_find_reasonable_pivot_naive_simplifiesr_  >
  s    	sAAqVVQYs1vvqy(*VVQYs1vvqy(*+ +F
 	%Vi@@@ ?L)2J z??aa=q    a=qs""""a=q    a=q      rw   c                       t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t
          d            t          t          d	            t          t          d
            t          t          d            t          t          d            t          t
          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          t
          d            t          t          d            t          t          d            t          t
          d            t          t          d            t          t
          d            t          t          d            t          t
          d            t          t
          d            t          t
          d             t          t          d!            t          t          d"            t          t          d#            t          t          d$            t          t          d%            t          t          d&            t          t          d'            t          t          d(            t          d)           t          t           fd*           t          g d+g          t          g d,g d-g d.g           t          t           fd/           t          g d,g d-g d.g           t          t           fd0           d S )1Nc                  *    t          ddgdgg          S r  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>R
  s    v1vsm44 rw   c                  2    t          ddgg          d         S )Nrj   rh   )g333333?rl   r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>S
      v1vh//7 rw   c                  2    t          ddgg          d         S )Nrj   rh   )rj   g@r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>T
  rc  rw   c                  &    t          ddd          S )Nri   rk   T)rM   rD  )r8   r{   rw   ru   r   ztest_errors.<locals>.<lambda>U
  s    z!qDAAA rw   c                  L    t          ddg                              dd          S )Nrj   rh   rk   rm   )r   r2  r{   rw   ru   r   ztest_errors.<locals>.<lambda>V
  s     vq!f~~55a;; rw   c                  v    t          ddgddgg                              ddgt          ddg                    S ry   )r   copyin_matrixr{   rw   ru   r   ztest_errors.<locals>.<lambda>X
  s9    AA'((661vvq!f~~NN rw   c                  p    t          ddgddgg                              ddgt                                S ry   )r   copyin_listr.  r{   rw   ru   r   ztest_errors.<locals>.<lambda>Y
  s=    fq!fq!f%566BBADuu  rw   c                  P    t          g dg dg                                          S )Nrp   )rh   ri   r   r   r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>[
  s'    III0F)G)G)K)K)M)M rw   c                  t    t          ddddg                              t          ddgddgg                    S r  )r   r   r{   rw   ru   r   ztest_errors.<locals>.<lambda>]
  s9    q!aV$$--fq!fq!f5E.F.FGG rw   c                  p    t          ddg                              t          ddgddgg                    S r  )r   r   r{   rw   ru   r   ztest_errors.<locals>.<lambda>_
  s3    FAq6NN33FQFQF;K4L4LMM rw   c                  p    t          dg                              dt          ddgddgg                    S r  )r   r   r{   rw   ru   r   ztest_errors.<locals>.<lambda>`
  D    vqc{{55a!B1vA : :     rw   c                  p    t          dg                              dt          ddgddgg                    S r  )r   r   r{   rw   ru   r   ztest_errors.<locals>.<lambda>b
  rp  rw   c                  H    t          ddg                                          S r  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>d
  s    A)=)=)?)? rw   c                  H    t          dg                              d          S r  )r   r9  r{   rw   ru   r   ztest_errors.<locals>.<lambda>e
  s    faSkk33A66 rw   c                  T    t          ddgddgg                              dd          S Nrj   rh   ri   rk   rl   )r   minorr{   rw   ru   r   ztest_errors.<locals>.<lambda>f
  s+    v1v1v&677==aCC rw   c                  T    t          ddgddgg                              dd          S ru  )r   minor_submatrixr{   rw   ru   r   ztest_errors.<locals>.<lambda>g
  s+    v1v1v&677GG1MM rw   c                  J    t          g d                              d          S Nrp   rj   r   crossr{   rw   ru   r   ztest_errors.<locals>.<lambda>h
  s     fYYY//55a88 rw   c                  J    t          g d                              d          S rz  r   dotr{   rw   ru   r   ztest_errors.<locals>.<lambda>i
  s     fYYY//33A66 rw   c                  h    t          g d                              t          ddg                    S )Nrp   rj   rh   r~  r{   rw   ru   r   ztest_errors.<locals>.<lambda>j
  s*    viii0044VQF^^DD rw   c                  J    t          ddg                              g           S r  r~  r{   rw   ru   r   ztest_errors.<locals>.<lambda>k
  s    vq!f~~11"55 rw   c                  J    t          ddg                              d          S )Nrj   rh   rK   r~  r{   rw   ru   r   ztest_errors.<locals>.<lambda>l
  s    faVnn0055 rw   c                  N    t          ddg                              g d          S )Nrj   rh   rp   r~  r{   rw   ru   r   ztest_errors.<locals>.<lambda>m
  s"    vq!f~~11)))<< rw   c                  H    t          g d                                          S )Nrp   )r   r,   r{   rw   ru   r   ztest_errors.<locals>.<lambda>n
  s    			):):)>)>)@)@ rw   c                  P    t          ddgddgg                                          S r  )r   
normalizedr{   rw   ru   r   ztest_errors.<locals>.<lambda>o
  '    v1v1v&677BBDD rw   c                  L    t          ddg                              d          S )Nrj   rh   znot a methodrm  rl  r{   rw   ru   r   ztest_errors.<locals>.<lambda>p
  s!    vq!f~~111HH rw   c                  H    t          ddg                                          S r  r   
inverse_GEr{   rw   ru   r   ztest_errors.<locals>.<lambda>q
      A)B)B)D)D rw   c                  P    t          ddgddgg                                          S r  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>r
  r  rw   c                  H    t          ddg                                          S r  r   inverse_ADJr{   rw   ru   r   ztest_errors.<locals>.<lambda>s
  s    A)C)C)E)E rw   c                  P    t          ddgddgg                                          S r  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>t
  s'    v1v1v&677CCEE rw   c                  H    t          ddg                                          S r  )r   
inverse_LUr{   rw   ru   r   ztest_errors.<locals>.<lambda>u
  r  rw   c                  H    t          ddg                                          S r  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>v
  s    A)D)D)F)F rw   c                  H    t          ddg                                          S r  r   r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>w
  s    A););)=)= rw   c                  T    t          ddgddgg                              d          S )Nrj   rh   ri   rk   zNot a real methodrm  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>y
  s-    AA'((,,4G,HH rw   c                  `    t          g dg dg dg dg                              d          S )Nr  r  r  r-  zNot functionr  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>{
  sC    lll)))+ , ,,/C>C,J,J rw   c                  `    t          g dg dg dg dg                              d          S )Nr  r  r  r-  Fr  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>~
  sC    lll)))+ , ,,/C5C,A,A rw   c                  n    t          t          ddgddgg          t          ddgddgg                    S r  r0   r   r{   rw   ru   r   ztest_errors.<locals>.<lambda>
  s:    AA/00&1a&1a&9I2J2JKK rw   c                  H    t          t          ddgddgg          g           S r  r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>
  s%    wv1v1v.>'?'?DD rw   c                  B    t          t          d          dz  d          S )NrP   rh   rK   )r0   r$   r{   rw   ru   r   ztest_errors.<locals>.<lambda>
  s    wvc{{A~s;; rw   c                  ,    t          d          d         S )Nri   )rl   rh   r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>
      s1vvd| rw   c                  ,    t          d          d         S )Nri   )rh   rl   r  r{   rw   ru   r   ztest_errors.<locals>.<lambda>
  r  rw   r,  c                  .                          d          S )Nzmethod=LU_decomposition())r  r6  s   ru   r   ztest_errors.<locals>.<lambda>
  s    quu%@AA rw   )r   r   r   rp   rh   ri   rk   r   c                  0                          d          S )Ng@)r   r7  Vs   ru   r   ztest_errors.<locals>.<lambda>
  s    q||C33 rw   c                  0                          d          S )Ng)r   r  s   ru   r   ztest_errors.<locals>.<lambda>
  s    q||D!44 rw   )r_   r  r   rX   rk  rW   r   r  s   @@ru   test_errorsr  Q
  sU   
:44555
:77888
:77888
:AABBB
:;;<<<
:NNP P P
9     
!M!MNNN
:GGI I I
MMO O O
:     
:     
!?!?@@@
966777
:CCDDD
:MMNNN
988999
966777
:DDEEE
:55666
955666
:<<===
!@!@AAA
:DDEEE
:HHIII
!D!DEEE
:DDEEE
!E!EFFF
:EEFFF
!D!DEEE
!F!FGGG
!=!=>>>
:HHJ J J
:	K 	KL L L :	B 	BC C C :KKM M M
:DDEEE
:;;<<<
:++,,,
:++,,,NOOA
:AAAABBB~A			999iii011A
:33333444			999iii011A
:4444455555rw   c                  r   t          t                                dk    sJ t          t          ddgg                    t          t          dgdgg                    cxk    rdk    sn J t          t          ddd                     t          t          ddd                     cxk    rdk    sn J t          t          g dg dg                    dk    sJ t          dg          t          dgg          k    sJ t                      rJ t                      t          g           k    sJ d S )	Nr   rj   rh   c                     dS r8  r{   r   s     ru   r   ztest_len.<locals>.<lambda>
  s     rw   c                     dS r8  r{   r   s     ru   r   ztest_len.<locals>.<lambda>
  s    a rw   r   r   rm   )r^  r   r{   rw   ru   test_lenr  
  sY   vxx==Av1vh  CaSz(:(:$;$;@@@@q@@@@@@vaNN++,,F1a(())/ / / /-./ / / / / /vyyy))),--..!33331#;;&1#--''''xx88vbzz!!!!!!rw   c            
      Z   t          ddt          ft          ddfddt          dz  ff          } |                     t                    t          t          dt          z  t          dz  dz  ft          t          z  dt          z  dt          z  fdt          z  dt          z  t          dz  dz  ff          k    sJ |                     t                    t          t          dt          z  t          t          z  ft          dz  dz  dt          z  dt          z  fdt          z  dt          z  t          t          dz  z  ff          k    sJ t          ddt          t          g          }|                    t                    t          ddt          dz  dz  t          t          z  g          k    sJ d S )Nrj   rk   rh   r   rl   ri   )r   rP   rQ   r1   )r   r   s     ru   test_integrater  
  sd   Aq	Aq!9r1adm455A;;q>>AaCAa 1Q3!QqS/BqD!A#q!tAv3FGHHI I I I;;q>>AaC11Q!QqS1BqD!A#qAv3FGHHI I I Iq!aVA;;q>>VAq1a461Q3-88888888rw   c            	      T   t          ddt          ft          ddfddt          dz  dz   ff          } t          |                     t                    t          |                     sJ |                     t                    t          dddddt          z  ff          k    sJ |                     t                    t          d	          k    sJ t	          | t                    t          dddddt          z  ff          k    sJ t	          | t                    t          d	          k    sJ |                                 }t          |                    t                    t          |                    sJ |                    t                    t          dddddt          z  ff          k    sJ |                    t                    t          d	          k    sJ t	          |t                    t          dddddt          z  ff          k    sJ t	          |t                    t          d	          k    sJ |                     t          d
          t          | t          d
          k    sJ t	          | t          d
          t          | t          d
          k    sJ d S )Nrj   rk   rh   r   rl   r   r   r   )r   r   r   Fr:  )	r   rP   rQ   r$  r+   r  r  r   r]   )r   A_imms     ru   	test_diffr  
  sU   Q1I1ay2q!Q$(2CDEEAaffQiia)))))66!99*Iy1a1++NOOOOOO66!99*+LMMMMMM1::+Y	Aq!A#;,OPPPPPP1::+,MNNNNNNNNEejjmmT%[[11111::a==0)YAqQRs1TUUUUUU::a==01RSSSSSSq>>19i!QPQRSPS2UVVVVVVq>>12STTTTTT66!e6$$1u(M(M(MMMMM1u%%%A)N)N)NNNNNNNrw   c                  r   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    sJ t          | |           t          ddgddggddgddgggddgddggddgddgggg          k    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    sJ t          ||          t          ddgddggddgddgggddgddggddgddgggg          k    sJ |                     t                    t          ddgddgg          k    sJ t          t          t          g          }|                     |          t          j        dddd          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    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    sJ                     t          t          t          gdf          t                              t          d                              t          t                                        t          t                    g                    t          t                                        t          d                              t          t                    g                    t          t                                        t          t                                        t          d          gg          k    sJ t          t                    t          t                    z  }|                    t          t          gg          t          t!          t                    t          t                    z  t          t                    t          t                    z  g          k    sJ |                    t          t          t          ff          t          t!          t                    t          t                    z  t          t                    t          t                    z  g          k    sJ |                    t          t          t          ff          t          t          t                     t          t                    z  t!          t                    t          t                    z  g          k    sJ |                    t          t          fft          t          gg          t          t!          t                    t          t                    z  t          t                     t          t                    z  gt          t                    t          t                    z  t!          t                    t          t                    z  gg          k    sJ                     t                                        t                                        t                                        t          t          t          ffd          d         k    sJ                     t                                        t                                        t                                        t          t          t          ffd          d         k    sJ                     t          t          t          ggt          t          t          ff          t          fd	t          t          t          fD                       k    sJ t          j        t#          t          t          gg                    }t%          |t                    sJ |t#          ddgg          k    sJ t          dz                      t#          t          t          gg                    }t%          |t                    sJ |t#          dt          dz  z  dgg          k    sJ d S )
Nrj   r   rh   )rh   rh   rj   ri  ri   r   r  c                 T    g | ]#fd t           t          t          fD             $S )c                 `    g | ]*}                     |                                         +S r{   )r+   )r  r   fxyzr   s     ru   r  z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>
  s2    :c:c:cTU499Q<<;L;LQ;O;O:c:c:crw   )rP   rQ   rR   )r  r   r  s    @ru   r  z'test_diff_by_matrix.<locals>.<listcomp>
  s=    9w9w9whi:c:c:c:c:cZ[]^`aYb:c:c:c9w9w9wrw   )r   rP   rQ   rR   rO   r+   r   r  rK   r   rL   rI   r  r   rA   r,   r)   r   r$  )r   r  r   dBri  exprresr  s          @ru   test_diff_by_matrixr  
  s    	QFQF+,,A66!99!Q!Q 0Aq6Aq62BC1vPQSTvFVZ[]^Y_bcefagXhEijkkkkkk1::1a&1a&!1QFQF3C DAQRTUPVGW[\^_Z`cdfgbhYiFjkllllllNNE::e!Q!Q(8Aq6Aq6:J'KPQSTvXY[\W]N^bcefagjkmnio`pMq&r s sssssu1a&1a&)9QFQF;K(LQRTUPVYZ\]X^O_cdfgbhklnojpaqNr's!t!ttttt 66!99*QFQF+;<<<<<<aV$$A66!99Aq!Q//////66!99!Q!Q 0Aq6Aq62BC1vPQSTvFVZ[]^Y_bcefagXhEijkkkkkk 
!Q		B8y    !qc
aS1#J/000000A1Q1::D99q!Qi[!!UDIIaLL$))A,,		RS+U%V%VVVVV99q!Qi^$$	1a$))Aq//499Q??;	1a$))Aq//499Q??;	1a$))Aq//499Q??;/ ) )     q66#a&&=D99q!fX%QAAs1vv(F"G"GGGGG99Q!Q	""eSVVCFF]CFF3q66M,J&K&KKKKK99Q!Q	""ec!ffWSVV^SVVCFF],K&L&LLLLL99q!fY!Q))USVVCFF]SVVGCPQFFN4SVYZ[V\V\]`ab]c]cVcehijekeklopqlrlrerUs3t-u-uuuuu 99Q<<Q$$Q''499q!Qi\1+E+Eg+NNNNN99Q<<Q$$Q''499q!Qi\1+E+Eg+NNNNN99q!Qi[Aq!9,//59w9w9w9wnoqrtumv9w9w9w3x3xxxxx &!Q!!
"
"Cc/00000&1a&""""""a4++fq!fX&&
'
'Cc/00000&1QT61+''''''''rw   c            	          t          ddt          ft          ddfddt          dz  dz   ff           t          t           fd            t           d          t                    t          dd	d
d
dt          z  ff          k    sJ d S )Nrj   rk   rh   r   rl   c                       j         S r   )nonexistantattributer  s   ru   r   ztest_getattr.<locals>.<lambda>
  s
    1#9 rw   r+   r   r   r   )r   rP   rQ   r_   r  getattrr  s   @ru   test_getattrr  
  s    Aq	Aq!9r1adQh&7899A
>9999:::71fa  FIy1a1++N$O$OOOOOOOrw   c                      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        rJ t	          dd	          } | j        sJ d S )
Nr$  r%  r   rj   )r   r   Fr&  rl   rh   )r   r'  r3  r(  rI   r  s    ru   test_hessenbergr  
  s    			999iii011A    	A    AeH E))))			999iii011A$$$$aA      rw   c            	         t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          dt          z   dfdf                              d	
          t          t          dt          z             dgddgg          k    sJ t          d          } |                     d	
          }|t          ddgddt          d          z  t          z  gg          k    sJ ||j        z  | k    sJ t          d          } |                                 }||j        z  | k    sJ |j        sJ |t          g dg dg dg          k    sJ t          ddt          z  ddt          z  z   fdt          z  ddt          z   fddt          z  z
  dt          z
  dff          } |                                 	                                t          dt          ddfdt          z
  ddff          k    sJ t          t          d            t          t          d            t          t          d            t          t          d            t          t          d            t          dt          z   dfdf                              d	
          t          t          dt          z             dgddgg          k    sJ t          d          } |                     d	
          }|t          ddgddt          d          z  t          z  gg          k    sJ ||j        z  | k    sJ t          d          } |                                 }||j        z  | k    sJ |j        sJ |t          g dg dg dg          k    sJ t          ddt          z  ddt          z  z   fdt          z  ddt          z   fddt          z  z
  dt          z
  dff          } |                                 t          dt          ddfdt          z
  ddff          k    sJ d S )Nc                  D    t          d                                          S NrS  r   choleskyr{   rw   ru   r   ztest_cholesky.<locals>.<lambda>  s    )@)@)B)B rw   c                  D    t          d                                          S NrS  )ri   rk   r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>      v&677@@BB rw   c                  \    t          dt          z   dfdf                                          S Nrl   r   r   )r   r   r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>  s'    vAqz6&:;;DDFF rw   c                  D    t          d                                          S Nr  )rl   rj   r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>	  r  rw   c                  H    t          d                              d          S Nr  F	hermitianr  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>
  s     v&677@@5@QQ rw   rl   r   r   Fr  rj   r  rh   rm   ))r  r"  r   )r"  r`  r   )r   r   r   r  )ri   ri   r   )r   rj   ri   rk   r   r   r   r  ri   c                  D    t          d                                          S r  r#   r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>  s    f)=)=)F)F)H)H rw   c                  D    t          d                                          S r  r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>      |,<==FFHH rw   c                  \    t          dt          z   dfdf                                          S r  )r#   r   r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>  s'    |a!eQZ,@AAJJLL rw   c                  D    t          d                                          S r  r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>  r  rw   c                  H    t          d                              d          S r  r  r{   rw   ru   r   ztest_cholesky.<locals>.<lambda>  s!    |,<==FFQVFWW rw   )r_   rW   r  r   r   r  rB   r3  r  r-   r#   r  s     ru   test_choleskyr    sT   
!B!BCCC
:BBCCC
:FFGGG
:BBCCC
:QQRRRAE1:v&''0050AAV	a!ea1a&M" F# F# # # # #  A	

U
##AAAd1ggIaK 01222222QS5A::::788A	

Aqs7a<<<<:			999jjj9::::::BqD!ac'"QqS!R!V$4q1Q3wQ6KLMMA::<<  FI1ay1q5!Q-+P$Q$QQQQQ
!H!HIII
:HHIII
:LLMMM
:HHIII
:WWXXX!a%V,--666GG6	a!ea1a&S" L# L# # # # #%&&A	

U
##AAAd1ggIaK 01222222QS5A::::=>>A	

Aqs7a<<<<:			999jjj9::::::q"Q$AaC(1Q326*:Q1Wb1fb<QRSSA::<<69q!Qi!a%A"GHHHHHHHHrw   c            	      N   t          dd          } t          t          |           t          |           g          }t	          |                    d                    dk    sJ |                    d          t          t          |           dz  t          |           dz  z   t          dd                    k    sJ t          dt          dd          gg          }|                                t          d	t          d
d          z   t          j	                  k    sJ |                    t                    t          |          k    sJ |                    t                     t          |          k    sJ t          ddgddgg          }|                    d          dk    sJ |                    d          dk    sJ |                    d          dk    sJ t          d                              d          t          d                              d          cxk    rdk    sn J |                    t                    dk    sJ t          dt          t          g| t          j	        t           gg          }|                    d          t!          t          dd          dt#          t                    dz  z  z   t          dz  z   | dz  z             k    sJ t          g dddt          dd          gg          }|                    d          t!          t          dd          t!          d          dz  z             k    sJ |                    d          t          j        u sJ |                    d          t!          d          dz  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 ]}t)          d                              |          t          j        u sJ |D ]S}	|D ]N}
|	                    |          |
                    |          z   |	|
z                       |          z
  }|dk    sJ OT||||fD ]U}t+          ||z                      |          t#          |          |                    |          z  z
            }|dk    sJ Vt          dddt&          z  z
  dg          }t          t          j	        dt&          z  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t          j        t          j        t          fD ]&}|dk    r2t          g d                              |          t          j        u sJ |dk    ro|D ]l}	|D ]g}
|	                    |          |
                    |          z   |	|
z                       |          z
  }t+          |dk              t          j        u sJ hm|ddddt          j        t          j        fv rX|D ]U}	t+          ||	z                      |          t#          |          |	                    |          z  z
            }|dk    sJ V(t          ddg d          }|                    d          dk    sJ d S )NrP   Tr,  rh   rj   r   rl   ri   r  r   rk   r   r   	frobeniusfro%   )rj   rh   rr  r'  i  r   iI3 r   alpha)r  rh   r   rr  )r   r   r   g      Y@r   )	rj   ri   r   r   r   r   ri   r   rm   )r$   r   r)   rA   rG   normr   r    r"   r   r6   rl  rI  r.   rQ   r7   rB   rP  r   r   rI   r@   r   InfinityNegativeInfinitytrue)rP   r	  r   r   r   r   r  r  orderr  r  difr7  rK   rL   rM   rN   r   s                     ru   test_matrix_normr  -  s    	sAAA  AAFF1II!####66"::SVVRZ#a&&"*4hq"ooFFFFFF 	HQNN#$%%A6688s2A.77777766"::Q662#;;#a&&     	AA  A66!99>>>>66"::????66+!####r77<<??c"ggll2..3333!33333366"::???? 	Aq	Aqvs+,--AFF5MM8B??Qs1vvqy[02q581a4?@@A A A A 	


Q8B??3455A66!99Xc1--UA=>>>>>>66"::66+$s))A+----
 	AA  AAQ !!AQB!Q !!AAB !!A	
Aq!A7&&&E  Qxx}}U##qv---- 	" 	"A " "vve}}qvve}}4ULL''(q"
 Q1 	 	AE!G>>%00JJ./ 0 0C!88888	 	1qs7B  A!Q  A|||A1ayAhq#..233A	
Aq!QA7&&&EQB
A,>C    199)))$$))%00AF::::A:: 8 8 8 8A66%==166%==8QU++,C#C1H--777778
 Q2r1:q/ABBB    a~~e44ZZ!&&--/ 1 2 2axxxxx 	q!22233A66!99??????rw   c                  ^   t          dd          t          d          } d| d<   t          dd          | d<   |                                 d	k    sJ | d
<   |                                 t	          dt                              t          t          dd          t                              z  k    sJ t          t                    t                    gt                     t                    gg          }|                                t          fdt          dd          t          j        t          dd          t          dz  t          t          t          dd          z  fD                       sJ t          g                                           dk    sJ d S )NrP   Tr,  ri   r   r~   rj   rh   rh   rj  rn   c              3      K   | ]L}t          d                                                   |                                                    V  MdS )rc  N)r   
epsilon_eqrx  rA  )r  valMcrP   s     ru   rC  z(test_condition_number.<locals>.<genexpr>  sg       Q QuRyy##BGGAsOO$9$9$;$;<< Q Q Q Q Q Qrw   rl   rh   r   rk   r   )r$   r.   r    condition_numberr   r   r   r   r)   rA   rI  r"   r   r7   )r   r7  r  rP   s     @@ru   test_condition_numberr    s   sAAAAdGq"ooAdG3&&&&AdG3r3q66??S!R#a&&5Q5Q#QQQQQQQ CFF7CFF"3455A	
				B Q Q Q Q Q	!Q!R"Q$Bx1~~<MOQ Q Q Q Q Q Q Q "::&&((A------rw   c                  .   t          d          } t          d          }| | d d d d f         k    sJ | | d d d d f         k    rJ | |k    rJ | |k    sJ | dk    sJ | dk    rJ t          d          }t          d          }||k    sJ ||k    rJ d S )N)rp   ro   r   ))r   r   r   )rm   rl   rk   )ri   rh   rj   r   )r   r   r   )r   r#   )r   r   r   r   s       ru   test_equalityr    s    011A011A!!!QQQ$<<<<AaaadG||||Avvvv66667777Bwwww 	677A011A6666Avvvvvvrw   c                     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          } |                     d           t          g d          k    sJ d S )Nri   rk   rl   r   )r   r   g0.++c                 0     | j         dd          j        S )Nr   T)rH  chop)rA  is_zerort   s    ru   r   z!test_normalized.<locals>.<lambda>  s    2D1119 rw   r  )r   r  r    r   s    ru   test_normalizedr    s    1a&>>$$&&AA/001 1 1 1 )))''))VIII->->>>>> 	}}}A<<99   						     rw   c                  ^    t          d           dk    sJ t          d           dk    sJ d S )Nc                  D    t          d                                          S r   r.   print_nonzeror{   rw   ru   r   z$test_print_nonzero.<locals>.<lambda>  s    3q66//11 rw   z[X  ]
[ X ]
[  X]
c                  F    t          d                              d          S )Nri   rf  r  r{   rw   ru   r   z$test_print_nonzero.<locals>.<lambda>  s    3q66//44 rw   z[.  ]
[ . ]
[  .]
)rd   r{   rw   ru   test_print_nonzeror    sX    1122       4455           rw   c                     t          j        d          t          d          k    sJ t          j        d          t          d          k    sJ t          dd          t          dddgdz            k    sJ t          ddgddgg          } t          ddgddgg          }t          D ]}|                    d          }| |k    sJ | t          d|          k    sJ t          |          |k    sJ |                    d          }||k    sJ |t          d|          k    sJ t          |          |k    sJ d S )Nri   rk   rj   r{  r   rh   rM  )r   r.   rI   r5   rA  r  )r   rR   rN  r   s       ru   test_zeros_eyer    sQ   :a==CFF""""<??eAhh&&&&1::1qc"f------AA  AAA  A  GGAJJAvvvvCsOOO####Aww#~~~~IIaLLAvvvvE!%%%%%%%Aww#~~~~~ rw   c                     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    sJ t          t          dgddgg          j        d k    sJ t          t          dgddgg          j        d k    sJ t          t          dgddgg          j        d k    sJ t          t          dgddgg          j        dk    sJ t          dd          } t          | dgddgg          j        dk    sJ d S )	Nr   ri   rk   rj   FrK   T)nonzero)	r   is_zero_matrixrI   r.   rP   r#   r   r   r$   r  s    ru   test_is_zeror    ss   88""""Aq6Aq6"##2222A;;%%%%1vv$$$$Aq6Aq6"##2d::::!Q!Q())8D@@@@QFQF+,,;tCCCC 1a&1a&!122ATIIIIAq6Aq6"##2e;;;;sD!!!AAq6Aq6"##2e;;;;;;rw   c                     t           dz  } t          |           }t          |            }t          |           }t          |            }t          |           }t          |            }||z  t	          d          z  t	          d          k    sJ ||z  t	          d          z  t	          d          k    sJ ||z  t	          d          z  t	          d          k    sJ |                                ddt          |           z  z   k    sJ |                                ddt          |           z  z   k    sJ |                                ddt          |           z  z   k    sJ t          d          t	          d          k    sJ t          d          t	          d          k    sJ t          d          t	          d          k    sJ t          j        g dt           dz            }t          j        g dt           dz            }t          j        g dt           dz            }	t          t            dz            |	                                k    sJ t          t            dz            |	                                k    sJ t          t            dz            |		                                k    sJ t          t           
 dz            |	                                k    sJ t          t           
 dz            |	                                k    sJ t          t           
 dz            |		                                k    sJ d S )Nri   rj   rh   r   r   r   r   )r7   r;   r:   r9   r.   r  r)   r   from_axis_angleto_rotation_matrixr<   r=   r>   )
thetar3_plusr3_minusr2_plusr2_minusr1_plusr1_minusq1q2q3s
             ru   test_rotation_matricesr    s   qDEG%  HG%  HG%  HGCFF"c!ff,,,,GCFF"c!ff,,,,GCFF"c!ff,,,, ==??a!CJJ,.....==??a!CJJ,.....==??a!CJJ,..... Q<<3q66!!!!Q<<3q66!!!!Q<<3q66!!!! 
	#IIIrAv	6	6B		#IIIrAv	6	6B		#IIIrAv	6	6BrTAX""7"7"9"99999rTAX""7"7"9"99999rTAX""7"7"9"999992""b&;&;&=&=====2""b&;&;&=&=====2""b&;&;&=&=======rw   c                  h   t          t          d          d                   dk    sJ t          t          d                    t          d          k    sJ t          t          d            t          t          d                    dk    sJ t          t          d                    dk    sJ d S )Nvectorrk   z	vector[4]rN   c                  ,    t          d          d         S )NrN   r   )r   r{   rw   ru   r   z%test_DeferredVector.<locals>.<lambda>  s    ~c2226 rw   testzDeferredVector('test'))strr   rE   r_   r   reprr{   rw   ru   test_DeferredVectorr    s    ~h''*++{::::>#&&''>#+>+>>>>>
:66777~c""##s****v&&''+CCCCCCCrw   c                  B    t          t          d                    rJ d S )Nr  )re   r   r{   rw   ru    test_DeferredVector_not_iterabler    s$    s++,,,,,,,rw   c                  2    t          t          d            d S )Nc                  :    t          t          d                    S )Nr  )r   r   r{   rw   ru   r   z,test_DeferredVector_Matrix.<locals>.<lambda>  s    f^C%8%899 rw   r_   rk  r{   rw   ru   test_DeferredVector_Matrixr    s    
999:::::rw   c            
      ~   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z   | d          dz  g          gk    sJ t          |j        |j        g          t          ddddg          t          dd | d          dz   | d          dz  g          gk    sJ t          t          ddg          t          ddg          gd          t          dt	          d          z  dz  t	          d          dz  g          t          t	          d           dz  dt	          d          z  dz  g          gk    sJ t          t          dg                    }t          |          t          dgg          gk    sJ d S )Nrj   rh   ri   rl   r   Tr   )r    r   r   r3  rB   r
   )r  r   r   r  s       ru   test_GramSchmidtr    s   A	1q!f		B	1q!f		BBx  	1q!f		vaQQqTT!VQQrUU1W,=>>?@ @ @ @bd|$$	1q!f		vaQQqTT!VQQrUU1W,=>>?@ @ @ @ 1v1v7>>$r((
2tBxx{+,,b	"aRjm,--C/ / / / / 	&!++Aq>>fqcUmm_,,,,,,rw   c                  j    t          g dd          dk    sJ t          g ddd          dk    sJ d S )Nr  rj   r   F)zero)r(   r{   rw   ru   test_casoratianr!  )  sK    lllA&&!++++lllAE222a777777rw   c                  *   t                      t          dd          z  j        dk    sJ t          dd          t          dd          z  t          dd          k    sJ t          dd          t          dd          z  t                      k    sJ d S )Nr   ri   )r   ri   )r   rI   r  r{   rw   ru   test_zero_dimension_multiplyr#  .  s    HHU1a[[ '61111A;;uQ{{"eAqkk1111A;;uQ{{"fhh......rw   c                      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    sJ t          t           fd           t          t           fd           d S )Nrh   rk   rj   ri   r   c                       dd d f         S r  r{   r   s   ru   r   z'test_slice_issue_2884.<locals>.<lambda>:  s    qAAAw rw   c                       d         S )Nr  r{   r   s   ru   r   z'test_slice_issue_2884.<locals>.<lambda>;  s    qw rw   )r   r   r3  r_   r   r   s   @ru   test_slice_issue_2884r'  4  s    q!U1XXAQT7fq!fX&&&&&&RU8v1vh''''''QQQT7fq!fX&&(((((QQQU8v1vh'')))))
:'''
:'''''rw   c                      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   ri   r   r   rj   )rI   r  r   r{   rw   ru   test_slice_issue_3401r)  >  sc    A;;qqq"u#v----A;;q!!!tq!R 0 0000000rw   c                  `   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    sJ | ddd f         t          ddgg          k    sJ t          dd	gg          | ddd f<   | dd d f         t          g d
g          k    sJ ddgg| ddd f<   | dd d f         t          g dg          k    sJ d| d<   | d d d df         t          g d          k    sJ g d| d<   | d d df         t          g d          k    sJ t          g d          | d<   | d d df         t          g d          k    sJ t          g d          | d<   | d d df         t          g d          k    sJ d S )Nri   rj   r   r   rk   r  rn   rl   rm   )rj   rl   rm   +   )rj   r  r+     r~   )r,  rj   r   r  )rI   r   r#   )r  s    ru   test_copyinr-  C  s(   aAAaDQQQT7fYYY''''''Q419999QT7qc>>>>AdGT7b====QU8vAwi((((((1vhAaeHQT7fiii[))))))RzAaeHQT7fkkk]++++++AdGQQQU8vjjj))))))iiAdGQQQT7fYYY''''''YYYAdGQQQT7fYYY''''''999%%AdGQQQT7fYYY''''''''rw   c                      t          ddgddgg                                          t          ddgddgg          dfk    sJ t          t          d            t          g dt          ddgdt          dgg           t                                           d                    j        k    sJ                                  d         t          d          k    sJ                      t          	          d         t          d          k    sJ t          t           fd
           t          t           fd           t          t           fd           d S )Nrj   rh   r   )r   c                  P    t          ddgddgg                                          S r  rl  r{   rw   ru   r   z'test_invertible_check.<locals>.<lambda>^  s'    v1v1v&677;;== rw   )r   r   r   r   ri   r  c                  0                          d          S )Nr  rm  r  r   s   ru   r   z'test_invertible_check.<locals>.<lambda>i  s    quuEu22 rw   c                  0                          d          S )Nr  rm  r1  r   s   ru   r   z'test_invertible_check.<locals>.<lambda>j      quuDu11 rw   c                  0                          d          S )Nr  rm  r1  r   s   ru   r   z'test_invertible_check.<locals>.<lambda>k  r3  rw   )	r   r  r_   r  rP   r^  rq   r.   r?   r   s   @ru   test_invertible_checkr5  Z  s^    Aq6Aq6"##((**v1v1v6F/G/G.NNNNN
:==>>>
a!
a 	 	A
 qvvxx{qv%%%% 6688A;#a&&    6686$$Q'3q661111
:2222333
:1111222
:111122222rw   c                      t          d          \  } }| |z  }|                    | t          g d                    t          g d          |z  k    sJ d S )Nzx, y)ri   rl   ri   )rD   rx  r   )rP   rQ   r   s      ru   test_issue_3959r7  n  s\    6??DAq	!A66!VIII&&''6)))+<+<Q+>>>>>>>rw   c                  V    t          t          ddgddgg                    dk    sJ d S )Nrj   rh   ri   rk   zMatrix([[1, 2], [3, 4]]))r  r   r{   rw   ru   test_issue_5964r9  t  s7    v1v1v&''((,FFFFFFFrw   c                      t          d          \  } }t          t          | d|z  g|dz  | dz   gg                    dk    sJ d S )Nr  rh   ri   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))rD   rC   r   r  s     ru   test_issue_7604r;  x  s^    5>>DAqAaC1a4Q-0112234 4 4 4 4 4rw   c            
          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        sJ t          ddt          d                    j        rJ t          ddddd          j        rJ t          dddddddd          j        rJ d S )	Nri   r   rj   )r~   rn   r  rh   rm   )r~   rn   )r~   rn   r  r   r  )r.   is_Identityr  rI   r5   r   r#   r   r{   rw   ru   test_is_Identityr>  ~  s   q66q66  ,,,,Qxx####Aww""""yyyk""....!AQa8899EEEEAaq**6666Aa!3!344@@@@Aa!1A!N!NOO[[[[[[rw   c                     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          z  g                              t          t          ddt          z  g                    dt          z   k    sJ t          dddt          z  g                              t          t          ddt          z  g          d	          dt          z   k    sJ t          dddt          z  g                              t          t          ddt          z  g          d
	          dt          z   k    sJ t          dddt          z  g                              t          t          ddt          z  g          d
d          dt          z
  k    sJ t          dddt          z  g                              t          ddt          z  dg          d
d          ddt          z  z   k    sJ t          dddt          z  g                              t          ddt          z  dg          d
d          ddt          z  z
  k    sJ t          t          dt          z  g                              t          t          dt          z  g          dd          dk    sJ t          t          dt          z  g                              t          t          dt          z  g          d          dk    sJ t	          t
          d            d S )Nrj   ri   r  rp   r(  rh   r   Fr  Tr'  physicsr  conjugate_conventionrk   rl   rm   rightr   left)rB  c                  n    t          ddg                              t          ddg          dd          S )Nrj   rh   ri   rk   Tr  rA  r~  r{   rw   ru   r   ztest_dot.<locals>.<lambda>  s0    vq!f~~11&!Q..Dgm1nn rw   )r5   r  r   r   r_   r  r{   rw   ru   test_dotrF    s   1::>>$q!**%%****1::>>)))$$)))))))  			!2!233r99991a1+""61a1+#6#67726AAAA1a1+""61a1+#6#6%"HHBQRFRRRR1a1+""61a1+#6#6$"GG2PQ6QQQQ1a1+""61a1+#6#6$]f"ggkmpqkqqqqq1a1+""61ac1+#6#6$]d"eeijmnopmpippppp1a1+""61ac1+#6#6$]c"ddhilmnolohooooo1ac(1Q3x 0 0EX^__ceeeee1ac(1Q3x 0 0vNNRSSSSS
:nnooooorw   c            	      *   t          dd          \  } }}}}}t          d|||f| d|| f| | d| f| ||  dff          }t          d|  | | f| d|| f|| d|f||| dff          }|                                                    |          sJ t	          d                                                              t          d                    sJ |                                                                                    |           sJ d S )NzB_x B_y B_z E_x E_y E_zTr,  r   ri   )rD   r   dualequalsr.   rI   )B_xB_yB_zE_xE_yE_zrU  Fds           ru   	test_dualrQ    sL   #*!$. $. $. Cc3ScC 
!cC4 
tC 
cTa 	 	 	A 
sdSD3$	S3$	sdq3	sSDQ	 
 
B 6688??2q66;;==a)))))6688==??!!1"%%%%%%%rw   c                     t          ddg                                          du sJ t          dddt          dz  dt          z  z   dz   t          t          dz   dz   dt          t          z  t           t           t          z  dg	          } |                                 du sJ |                     d          J |                     d           J | d	          | d	<   |                                 J | d	          | d	<   |                                 } |                     d          du sJ d| d
<   |                                 du sJ d S )Nrj   rh   Fri   r   Tr  c                     | S r   r{   rt   s    ru   r   z%test_anti_symmetric.<locals>.<lambda>  r  rw   ro  r~   )r   r  rP   rQ   r-   r   s    ru   test_anti_symmetricrT    s_   1a&>>++--6666q!aA!aa!eaZKAaC!aRT1MNNA  D((((..66644<<< whAdG  (((whAdG	

A..$6666AdG  E))))))rw   c                     t          d          } |                     d          \  }}||j        z  |j        |z  cxk    rt          |j                  k    sn J |                     dd          \  }}||j        z  |j        |z  cxk    rt          |j                  k    sn J ||z  |                                z  | k    sJ d S )N)rS  ro  Tr  )r  sort)r   r  r3  r.   rr   r  )r   r  r   s      ru   #test_normalize_sort_diogonalizationrW    s      A==4=((DAqQS5ACE((((S[[((((((==4d=33DAqQS5ACE((((S[[((((((Q3quuww;!rw   c                  2    t          t          d            d S )Nc                  F    t          g dt          ddg           g          S )Nrp   r   rj   r  r{   rw   ru   r   z!test_issue_5321.<locals>.<lambda>  s#    vyyy&Ar2B2B&CDD rw   )r_   r  r{   rw   ru   test_issue_5321rZ    s    
:DDEEEEErw   c            	         t          j        t          d          dt          d          z            t          g dg dg          k    sJ t          j        t          d          dt          d          z            t          ddgddgddgddgg          k    sJ t          } |                      | t          d                     | dt          d          z                      t          g dg dg          k    sJ d S )Nrh   )rj   r   rh   r   )r   rj   r   rh   rj   r   )r   r   r.   r   r#   rM  s    ru   test_issue_5320r\    s+   =Q3q66**f6 / /     =Q3q66**f	
A	
A	
A	
A	6 / /     C::cc#a&&kk33qQx==11V= 6 6      rw   c                      t          dgg          } t          |           }t          j        ||           t          ddgg          k    sJ t          j        ||           t          dgdgg          k    sJ d S r  )r   rE   r   r   )r   AIms     ru   test_issue_11944r_    sz    uA
!**C=a  FQF8$4$44444=a  FQC!:$6$6666666rw   c                     g d} g d}t          g d          }|j        }fd}t          D ] |           } |          } ||                    |          |            ||                    |j                  |            ||j                            |j                  |            ||j                            |          |           t	          t
          d            d S )Nrp   r   )r   rk   r   c                 B    || k    sJ t          |           k    sJ d S r   )r  )r7  r}  rN  s     ru   r  ztest_cross.<locals>.test  s'    axxxxAww#~~~~~~rw   c                  p    t          ddddg                              t          ddddg                    S r  r{  r{   rw   ru   r   ztest_cross.<locals>.<lambda>  s8    q!aV""6!QA#7#788 rw   )r   r3  rA  r|  r_   rX   )rK   rL   r   r   r  r   r   rN  s          @ru   
test_crossrc    s   		A		A


C
%C         CFFCFFQWWQZZQWWQS\\3QSYYqs^^S!!!QSYYq\\3
: 9 9 : : : : :rw   c                     t          t          t          t          g          } t          t          t
          t          g          }|                                 |z  |                     |          k    sJ |                                 	                                sJ |                                 
                                | k    sJ d S r   )r   rP   rQ   rR   rK   rL   rM   hatr|  r  vee)v1v2s     ru   test_hat_veeri    s    	Aq			B	Aq			B6688b=BHHRLL((((6688%%'''''6688<<>>Rrw   c                  V   t           D ]l} |                     d          |                     d          h}t          |          dk    r+|                                |                     d          k    sJ mt          D ],} t          |                     d          t                    rJ -d S r  )immutable_classesr.   r^  popr  r$  r   )rN  r  s     ru   	test_hashrm    s      5 5WWQZZ$1vv{{quuww#''!**44444 4 4cggajj(3333334 4rw   c                      dt           gddgg} t          ddgt            dgg          }t          D ]%}| ||                                           k    sJ &d S Nr   rj   )r   r   rA  adjoint)r  r}  rN  s      ru   test_adjointrq    sq    q6Aq6
C
1a&A2q'"
#
#C ) )cc#hh&&((((((() )rw   c                  $   t          ddgt          ddt          z  z
  gg          } |                                 t          j        t          d          t          j        t          hk    sJ |                     t                    t          hk    sJ d S r  )r   rP   rm  r"   r   NegativeOner$   r   s    ru   
test_atomsrt    ss    AA!G%&&A7799qttAM155555776??qc!!!!!!rw   c            	        	 t          t          t          gt          t          gg          } t          |                     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 ]l}|                    d          }||z  }||z  }t          ||z            |k    sJ t          ||z            |k    sJ |j        |k    sJ |j        |k    sJ m|D ]y}t          |                    d                    }||z  }||z  }t          ||z            |k    sJ t          ||z            |k    sJ |j        |k    sJ |j        |k    sJ zddl	m
	 |                     d          }|                                 }t          dt          dt          dt          di}t          	fdt          |                    |          |                    |                    D                       sJ d S )NRDrm  r'  h   i  ri   rr  rl   )rj   r   r   )r   r,     EDr   )compi_ib,  i  ij  c              3   ~   K   | ]7\  }} |                                 |                                           V  8d S r   rG  )r  r   r   rz  s      ru   rC  ztest_pinv.<locals>.<genexpr>A  sW       
 
Aq 	QSSUUACCEE
 
 
 
 
 
rw   )r   rK   rL   rM   rN   r@   pinvr  r5  sympy.core.numbersrz  rI  r  rx  )
A1Asr   A_pinvAApApAr6  wrepsrz  s
            @ru   	test_pinvr    s|   	!Q!Q 	!	!BBGG4G(())Xbffhh-?-????? 2s)dAYQ0
1
1
)))\\\*
+
+
!Q..
B   t$$&jqja  A%%%%f%%////u||||u|||||   !&&&--..&jqja  A%%%%f%%////u||||u||||| ('''''
tA
Avq%E1e4D 
 
 
 
taffTll33
 
 
 
 
 
 
 
 
 
rw   c            	          t          g dg dg dg dg dg dg          g} | D ]E}|                    d          }||z  }||z  }|j        |k    sJ d	 } ||j        |          sJ Fd S )
N)=   r  7   rk  rT  r   )>   `   U   r  r.  r   )E   8   r,  rk   6   r   )r   r  [   )   rT  r   )r   rG  r   rr  Z   r   )r   r   r   r   r   r   ry  rm  c                     |                      t                    }d |D             }| |z
                      |                                          }t	          d |D                       S )Nc                 8    i | ]}||                                 S r{   r@  )r  r  s     ru   r  zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>f  s"    <<<qa<<<rw   c              3   <   K   | ]}t          |          d k     V  dS )g|=Nrg  )r  r   s     ru   rC  zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>h  s,      ;;!s1vv~;;;;;;rw   )rm  r!   r  rA  rI  )r   r   rootofsrootofs_approxdiff_approxs        ru   allclosezEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclosed  sf    hhv&&G<<G<<<N7,,^<<BBDDK;;{;;;;;;rw   )r   r|  r5  )r  r   r  r  r  r  s         ru   3test_pinv_rank_deficient_when_diagonalization_failsr  G  s    
 	###############  	! 	!
B  $ $t$$&jqju||||	< 	< 	< xs######-$ $rw   c                      t          dd          t          dd          z   t          ddg           k    sJ t          dd          t          dd          z   t          ddg           k    sJ d S ro  )r5   r   r{   rw   ru   test_issue_7201r  m  sl    1::Q

"fQ2&6&666661::Q

"fQ2&6&6666666rw   c                      t           t          t          t          fD ]'}  | t          gdgg          j        t          hk    sJ (d S r8  )r   r   r   r#   rP   free_symbolsr6  s    ru   test_free_symbolsr  r  sN    3V\I 1 1q1#s}})aS000001 1rw   c                      	 ddl m  n# t          $ r t          d           Y nw xY wt	            g d                    t	          g d          k    sJ t	            g dg                    t	          g dg          k    sJ t	            g dg dg                    t	          g dg dg          k    sJ t	            t
          t          t          g                    t	          t
          t          t          g          k    sJ t          t           fd           t	            ddg            d	d
g          g          t	          ddgd	d
gg          k    sJ t	            ddg          d	d
gg          t	          ddgd	d
gg          k    sJ t	            g             g           g          t	          ddg           cxk    rt	          g           k    sn J dS )zSee issue 7465.r   r`  rb  rp   ro   c                  P    t            ddgddggddgddggg                    S )	Nrj   rh   ri   rk   rl   rm   r   r   r  r  s   ru   r   z#test_from_ndarray.<locals>.<lambda>  s8    uu1v1v.!Q!Q0@ABBCC rw   rj   rh   ri   rk   N)
re  r`  rh  r`   r   rP   rQ   rR   r_   NotImplementedErrorr  s   @ru   test_from_ndarrayr  w  sO   P P P PNOOOOOP %%			""##viii'8'88888%%$$%%)<)<<<<<%%III.//00			999%&&' ' ' '%%Aq	""##vq!Qi'8'88888
CCCCE E E55!Q==%%A--011VaVaV<L5M5MMMMM55!Q==1a&)**fq!fq!f5E.F.FFFFF5599eeBii())VAq"-=-=KKKKKKKKKKKKs   
 &&c                     ddl m}  	 ddlm}m} n# t
          $ r t          d           Y nw xY w |  |ddgddgg                    }|d         dk    sJ t          |          g d	k    sJ t          t                    5   |  |ddgddgg                    }d d d            n# 1 swxY w Y   |d         dk    sJ t          |          g d	k    sJ d S )
Nr   
_matrixify)r`  matrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesrj   rh   ri   rk   r  )
sympy.matrices.commonr  re  r`  r  rh  r`   rs   r^   PendingDeprecationWarning)r  r`  r  r   s       ru   test_17522_numpyr    sy   000000a''''''''' a a a_`````a 	
551a&1a&)**++AQ41999977lll""""	2	3	3 1 1Jvv1v1v.//001 1 1 1 1 1 1 1 1 1 1 1 1 1 1Q41999977lll""""""s    --B**B.1B.c                      ddl m}  	 ddlm} n# t          $ r t          d           Y nw xY w |  |ddgddgg                    }|d         d	k    sJ t          |          g d
k    sJ d S )Nr   r  )r  zEmpmath must be available to test indexing matrixified mpmath matricesrj   rh   ri   rk         @)rc  rd  r  r  )r  r  mpmathr  rh  r`   rs   )r  r  r   s      ru   test_17522_mpmathr    s    000000V!!!!!!! V V VTUUUUUV 	
66Aq6Aq6*++,,AQ43;;;;77*********    ++c                      ddl m}  	 ddlm} n# t          $ r t          d           Y nw xY w |  |ddgddgg                    }|d         dk    sJ t          |          g d	k    sJ d S )
Nr   r  )
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesrj   rh   ri   rk   r  )r  r  scipy.sparser  rh  r`   rs   )r  r  r   s      ru   test_17522_scipyr    s    000000[+++++++ [ [ [YZZZZZ[ 	
::1v1v.//00AQ41999977lll""""""r  c                      t          dt          gt           dgg          } | j        sJ dt          z  | d<   | j        du sJ t          | d<   | j        J | d         t          z  | d<   | j        du sJ d S )Nrj   rh   r~   Fr   r   r  r  s    ru   test_hermitianr    s    A!Q !!A>cAdG>U""""AdG>!!!gaiAdG>U""""""rw   c                  f   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	           t          g dg dg dg          t          t          fd
           t          g dg dg dg          } |                     d           | t          ddgddgddgg          k    sJ t          g dg dg dg          }|                    d           |t          ddgddgddgg          k    sJ t          g dg dg dg          t          t          fd           t          g dg dg dg          t          t          fd           d S )Nrp   r  r   rj   r   )rl   rm   r   r   r   c                  .                          d          S ru  r   r  s   ru   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r   rw   c                  $      j         d          S Nrx  r   r   s   ru   r   z+test_issue_9457_9467_9876.<locals>.<lambda>      yqy~~ rw   ri   rh   rk   rl   c                  .                          d          S ru  r   r  s   ru   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r   rw   c                  $      j         d          S r  r   r  s   ru   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r  rw   )r   r   r_   r   r   )r7  rY  Or  r   s      @@ru   test_issue_9457_9467_9876r    s   			999iii011AIIaLLL			999-......			999iii011AIIbMMM			999-......			999kkk233AIIbMMM			999-......			999iii011A
:,,,,---			999iii011A
:----... 				999iii011AIIaLLLAAA/000000			999iii011AIIbMMMAAA/000000			999iii011A
:,,,,---			999iii011A
:----.....rw   c                  z   t          dd          \  } }t          d          \  }}t          d          }t          dd| ||t          g          }|| z  |z  | |z  |z  k    sJ ||z  |z  ||z  |z  k    sJ | |z  || z  k    sJ ||z  ||z  k    sJ || z  |z  t          || z  dgd|| z  gg          k    sJ d S )Nr  F)commutativeza brh   r   )rD   r.   r   rR   )rP   rQ   rK   rL   r7  r   s         ru   test_issue_9422r    s    5e,,,DAq5>>DAqAA	1q!Ql	#	#BQ3q5AaCE>>>>Q3q5AaCE>>>>R42a4<<<<R42a4<<<<Q3q5FQqS!Hq!A#h/00000000rw   c                  h   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 ]U}t          | |          }d
|v r ||          n |d|          }||k    r t          |          t          |          k    sJ V^d S )Nr   r   )r   rm   ri   r   r   rj   rh   ri   rk   joinr  )r   r3  r  id)	r7  rK   rL   rM   opsr   opri  news	            ru   test_issue_10770r    s    r

A	z"F999$5$55A	z"AaDF*A	|$fq!fq!f-=&>&>>Aa) 1 1Q 	1 	1B2A B,,!!A$$$AAb!HHC!8832a55 0 0 0 0 0	11 1rw   c                     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    sJ |                     g dg d          t          g dg dg          k    sJ |                     g dg d          t          ddg           k    sJ |                     g dg d          t          ddg           k    sJ |                     g dg d          t          dgdgg          k    sJ d S )Nrp   ro   r   r   )TTFrj   rh   rk   rl   r   r   )TFF)TFT)FFFri   r   )FTF)r   r   r  s    ru   test_issue_10658r    s   			999iii011A99YYY 3 3 344AAA'(() ) ) )99YYY 4 4 455!qcA39P9PPPPP99)))999559L9LLLLL99((()))44			999%&&' ' ' '99YYY 5 5 566&Ar:J:JJJJJ99***III66&Ar:J:JJJJJ99(((*>*>*>??aSz     rw   c                  v   t          ddt          d          z  z   dgdt          d          z  dz  dz   dt          d          z  dz  gg          } |                                 dk    sJ t          ddt          d          z  t          z  z   dgdddt          d          z  t          z  z   gg          } t	          |                                 d	         t          ddddt          d          z  t          z  z   z  gd	d	gg          z
            t          dd          k    sJ t          d
          \  }}}}}}}}}	}
}}t          ||||z  ||z  d	g||||z  ||z  d	g||||z  ||z  dg||||z  ||z  dg|	|
d|	z  |z  |	|z  z
  d|
z  |z  |
|z  z
  d	gg          } |                                 dk    sJ d S )Nr   rl   rh   rj   ri   r,  rk   rr  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   rB   r  r   r@   r  rI   rD   )r   axaybxbycxcydxdyexeyt0t1s                ru   !test_opportunistic_simplificationr    s*    	aQi$r$q''z!|a'7DGGA&FGHHA6688q==== 	1T!WW9Q;#Qr!DGG)A+~$6788AAFFHHQK&1b!aQik/.B*CaV)L"M"MMNNRWXY[\R]R]]]]] +22c*d*d'Br"R2bBr"RBr"uRU1%r"RU2b5&;R2b5Bq<QSUVXY[\^Y^_abd_defRgiklnopqsostvovwyz|w|o|}~  @B  ~B  CE  ~E  FH  IK  FK  ~K  LM  iN  O  	P  	PA6688q======rw   c                     t          g dg dg          } |                                 d         t          g dg dg          z
                                  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          }|                                |z
                                  dk     sJ |                                |z
                                  dk     sJ d S )N)g~jth?gRM@g(\M@)gDl)@gQgp=
cG@r   )rc  r   ry  )r   rc  rc  V瞯<)q7K<rc  rk   )re  r   r   r   )r  rc  r  )re                 @)r  r  rc  )r   re  r  )rc  r  g      )r   r  r  r  )mmm_mixedm_floatm_invs       ru   test_partial_pivotingr    sf   
 $$$&;&;&;<==BGGIIaL6#3#3#3#3#3#3#5 6 6 67;tvvF F F F ooo%oo%oo' ( (G ''''''''') * *G (((((((((* + +E
 KKMME!''))E1111KKMME!''))E111111rw   c                      t          g dg dg dg          } |                     d           d         }t          g dg dg d	g          }||z
  }|                                d
k     sJ |d         dk    sJ 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                 (    t          |           dk     S )Ng [n<rg  rt   s    ru   r   z*test_iszero_substitution.<locals>.<lambda>2  s    Q rw   r  r   )rc  r   g4iҤIӿr   )r   rc  glٲer   r  r  r  N)r   r  r  )r   m_rref	m_correctm_diffs       ru   test_iszero_substitutionr  +  s     	$$$%9%9%9:N:N:NOPPAVV55V66q9F999:[:[:[\}\}\}~IiF;;==5    #;!rw   c            	         ddl m}  dt          t          t	          dd          z            z  t          t          t	          dd          z            t          d          z   z  }dt          d          z  t          t          t	          dd          z            dz  z  d	t          t          t	          dd          z            z  z   d
t          t          t	          dd          z            dz  z   z  } | dd          } | dt          d                     } | ||          }t          |t          |          z
  |t          |          z
  g          }t          ||z
  ||z
  g          }t          t          ||z
            t          ||z
            g          }d }	|                    d|	          dk    sJ |                    d|	          dk    sJ |                    d|	          dk    sJ d S )Nr   )Pointr   r'  -   ri   r-  rh   rp  rr  rj   c                 B    t           | j                              dk     S )Ng#B;)rP  rH  rt   s    ru   r   z"test_issue_11238.<locals>.<lambda>H  s    #cacee**u$ rw   T)r@   r  )	sympy.geometry.pointr  rF   r7   r    rB   r   r@   r  )
r  xxyyp1p2p0r   r   r   Zs
             ru   test_issue_11238r  :  s   ******	
3r(2r"""##	#SHR,<,<)<%=%=Q%G	HB
T!WW*SHR,,,--q0
02c"Xb"=M=M:M6N6N3N
NQSVYZ\]efhjl]m]mZmVnVnpqVqQq	rB	q!B	q477(		B	r"B	hrll"B"$56	7	7B	b"r'"	#	#B	"r'""HR"W$5$56	7	7B
 	%$A77DQ7//1444477DQ7//1444477DQ7//1444444rw   c                  0   t          ddg d          } | t          j        z  }| |z   }t          D ]f} ||                                          \  }}t          |          t          |           k    sJ t          |          t          |           k    sJ gd S )Nrh   r  )r   r"   ImaginaryUnitrA  as_real_imagrs   )r   r   r   klsrK   rL   s         ru   test_as_real_imagr  N  s    	!III		B	AO	B	bB # #c"gg""$$!Aww$r((""""Aww$r(("""""# #rw   c                      t          ddg d          } |                                 \  }}|d         t          dddg          k    sJ |d         t          ddg d          k    sJ d S )Nri   r*  rj   rh   r   )rh   rj   r   rh   )r   jordan_cells)r   r  Jcellss      ru   test_deprecatedr  Y  s}    
 	q!22233A  IAv!9q!aS))))))!9q!\\\22222222rw   c                      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   rj   rh   )r   rk  r+  ri   )rh   rj   rh   rk   )rh   r   rj   )sympy.core.modr  r   )r  r   r   s      ru   test_issue_14489r  d  s    """"""zzzA}}}A3q!99yyy))))))3q!99yyy))))))))rw   c                      	 ddl m}  n# t          $ r t          d           Y nw xY wt	          ddgddgg          } | |t
                    j        j        d	k    sJ d S )
Nr   r  rb  rj   rh   ri   rk   )dtypefloat64)re  r`  rh  r`   r   floatr  name)r`  r7  s     ru   test_issue_14943r  m  s    P P P PNOOOOOP 	1!u~A5%   &+y888888s   	 %%c                      t          ddd          } t          d          }| d         dk    }t          |          dk    sJ d S )Nr   rj   rK   r~   r   zm[0, 0] > 0)r   r$   r  )r   rK   s     ru   test_case_6913r  x  sH    S!QAsA	$	Aq66]""""""rw   c                      t          ddd          } t          d          }|                     |          || ik    sJ d S )Nr   ri   rK   )r   r&   match)r   rK   s     ru   test_issue_11948r    sC    S!QAS		A771::!Qrw   c                     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z  gt          d          dz  gt           gg          gk    sJ t          dt          gdt           gg          }|                                \  }}||j        z  t          j        d          k    sJ d S )Nrj   r   rh   )r   r   r  r"   QRdecompositionr5  r.   )r  rG  r   r  s       ru   test_gramschmidt_conjugate_dotr    sQ   Aq6NNFAr7OO,D&	!qc
		VaSA2$K0012 2 2 2 Aq!9vq!aRj112D&	!qcA3	 	 &1Q3%!A$$q&QB4)@"A"ABC C C C 1a&1qb'"
#
#C  DAqqs7fjmm######rw   c                  "   t          t          ddd                    } t          t          ddd                    } | j        |          }t          || d                   }t          || d                   }||d         k    sJ |dk    sJ d S )NrK   ri   rj   rL   r~   r   )r   r   r  r+   )rK   rL   rM   rN   r   s        ru   test_issue_8207r    s    |CA&&''A|CA&&''AaAQ$AQ$A$<<<<666666rw   c            	      L   ddl m}  t          ddgddgg                              t	          t
          t          z            t
                    t          t	          t                    t	          dt          z            t	          t                    z
  gdt	          dt          z            gg          k    sJ t          ddgddgg          t          z  dz                      t          t
                    t
                    t          t          d          dz  t          d           dz  gt          d           dz  t          d          dz  gg          k    sJ t          t          d            t          t          fd	           t          g d
g d
g dg dg                              t          t
                    t
                                                    k    sJ t          t          fd           t          ddgddgg          t                              t          t
                    t
                    dz            k    sJ t          g dg dg dg          t                               | t
          d          t
                    dz            k    sJ t          g dg dg dg dg                              t          t
                    t
                                                    k    sJ t          g dg dg dg dg                              t          t
          t          z            t
                    t          t          t          z                                                      k    sJ d S )Nr   )nthrootrj   rh   ri   rm   rk   c                  v    t          d                              t          t                    t                    S r   )rI   analytic_funcr2   rP   r{   rw   ru   r   ztest_func.<locals>.<lambda>  s"    a 6 6s1vvq A A rw   c                  n     t           z                      t          t                     t                     S r   )rP   r  r2   r  s   ru   r   ztest_func.<locals>.<lambda>  s!    1 3 3CFFA > > rw   )r   r   r   ri   )r   rj   r   r   )r   r   r   rj   c                  ^                          t          t                    t                    S r   )r  rB   rP   r  s   ru   r   ztest_func.<locals>.<lambda>  s    Q ; ; rw   r  r{  r  )ri   r  rk   )r   r   r   )r   rl   r   rZ  )rj   rh   r   r   )r   rj   ri   r   )r   r   rj   ri   )r   rh   rj   rm   )r   r   rj   rh   )r   r   r   ri   r  )sympy.simplify.simplifyr  r   r  rA   rP   rO   r7   r)   rB   r_   r  r,   r@   r-   )r  r   s    @ru   	test_funcr    s6   //////A1vA??3qs88Q''6CFFC!HHs1vv<M3NQRTWXYZ[X[T\T\P]2^+_+_____A1vAFQJ%%c!ffa00FT!WWQYaQR
<SW[\]W^W^V^_`V`bfghbibijkbkUl;m4n4nnnnn :AABBB
:>>>>???}}}MNNA??3q661%%0000
:;;;;<<<R"b"##AAOODGGQ//233q8888[[[+++677AAOOGGAqMM155q899Q>>>>lllLLL,,,GHHA??3q661%%0000lllLLL,,,GHHA??3qs88Q''6(AaC99;;2G2G+H+HHHHHHHrw   z$Cannot create threads under pyodide.c                      d } t          d          5  t          j                                        5 }|                    |           }|                                sJ 	 d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )Nc                  V    t           j        d k    sJ t          dgg          } | | z  } dS r  )rZ   stater   r   s    ru   ri  ztest_issue_19809.<locals>.f  s3    !'4////QC5MMEtrw   T)r\   
concurrentfuturesThreadPoolExecutorsubmitresult)ri  executorfutures      ru   test_issue_19809r)    s      
T		 # #2244 	#__Q''F==??""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	## # # # # # # # # # # # # # # # # #s4   B,A+B+A/	/B2A/	3BB
Bc                      t          t          t          g          } t          | t          ddft          ddf          t          t          j        gt          j        gg          k    sJ d S ro  )r   rP   rQ   r1   r"   r   r6  s    ru   test_issue_23276r+    si    1vAQAq	Aq!9--	
	
9 2 2      rw   c                  2    t          t          d            d S )Nc                  >    t          t          g d                    S )Nr  )r/   r   r{   rw   ru   r   z"test_issue_27225.<locals>.<lambda>  s    uVIII%6%677 rw   r  r{   rw   ru   test_issue_27225r.    s    
97788888rw   (T  concurrent.futuresr"  rJ  collections.abcr   sympyr   r   r   r   r   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r"   r#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   r  rK   rL   rM   rN   rO   rP   rQ   rR   sympy.core.kindrS   rT   sympy.matrices.determinantrU   sympy.matrices.exceptionsrV   rW   rX   sympy.matrices.kindrY   sympy.matrices.utilitiesrZ   r[   r\   $sympy.tensor.array.array_derivativesr]   sympy.testing.pytestr^   r_   r`   ra   rb   rc   sympy.utilities.iterablesrd   re   importlib.metadatarf   rA  r  rk  rv   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r"  r)  r0  r8  r=  rJ  rZ  r^  rm  ru  ry  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r%  r+  r<  rB  rI  rK  rN  rQ  rW  r[  re  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r   r#  r*  r/  r4  r:  r=  r@  rN  r`  rt  rx  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r$  r'  r3  r9  r;  r=  rD  rI  rL  rP  rX  r\  r_  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r!  r#  r'  r)  r-  r5  r7  r9  r;  r>  rF  rQ  rT  rW  rZ  r\  r_  rc  ri  rm  rq  rt  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r)  r+  r.  r{   rw   ru   <module>r;     sQ        $ $ $ $ $ $
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( - , , , , , , , , , , , , , , , , , , , 5 5 5 5 5 5 5 5 C C C C C C3 3 3 3 3 3 3 3 3 3 * * * * * * O O O O O O O O O O @ @ @ @ @ @                8 7 7 7 7 7 7 7 & & & & & &|_6KL<($&;< 7 7 7&P P P5 5 5    M M M& & &, , , / / /" " "  ; ; ;. . . 4 4 4' ' '*' ' '*  * * *# # #$ $ $"       
% 
% 
%  $ $ $$' ' '9 9 9  5 5 5
8 
8 
8O O O	' 	' 	'"> "> ">H  D  @& & &  21 1 1 ( ( (
) ) )
1 1 1
5 5 56 6 67 7 7L L L^0 0 0(0 0 0>L L L,4 4 4BG G G# # #8 8 8 M M M, , ,% % %   
+ 
+ 
+
! 
! 
!+ + +
& & &  9 9 9) ) )XG G GT_J _J _JD? ? ?  _ _ _*J *J *JZ_ _ _% % %' ' '     6 6 6% % %; ; ;5 5 5  8G G GP P Py y y	8 	8 	8$ $ $) ) )& & &&< < << < << < << < << < <  K K K(d d d  &K K K0O2 O2 O2d  D D D+ + +8P P P1 1 1  &
: 
: 
:  >7M 7M 7Mt6 6 6. 6 6 6*     8! ! !"G G G&9 &9 &9P     "- - -      :    & & &     >        *  ) ) )      
. 
. 
.	 	 	* * *F F F! ! !@ @ @.6 6 6G G G$1 1 1&3 3 3@E! E! E!P
1 
1 
1H% H% H%V& & &(' ' '$  &4 4 4.  L L L) ) )2
 
 
   ! ! !&;6 ;6 ;6|" " "9 9 9O O O*4( 4( 4(nP P P! ! !%I %I %IPZ Z Zz. . .&  "         $< < <"> "> ">JD D D- - -; ; ;- - -"8 8 8
/ / /( ( (1 1 1
( ( (.3 3 3(? ? ?G G G4 4 4\ \ \p p p& & &(* * *&  F F F  $7 7 7: : :(     4 4 4) ) )" " "*
 *
 *
Z "$ "$ "$J7 7 7
1 1 1
L L L&# # #"	+ 	+ 	+	# 	# 	## # #/ / /:	1 	1 	1	1 	1 	1    "2 2 22  5 5 5(# # #3 3 3* * *9 9 9# # #     $ $ $  I I I< :;;# # <;#  9 9 9 9 9rw   