
    g                    2   d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZVmWZW d dlXmYZY d dlZm[Z[m\Z\m]Z] d dl^m_Z_ d d	l`maZambZbmcZc d d
ldmeZe d dlfmgZgmhZhmiZimjZjmkZkmlZl d dlmmnZnmoZo d dlpmqZq ee%eefZree%fZseefZtd 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/ 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 Zekdx             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 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τ Z6ekdЄ             Z7dф 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 ZO ejd          d             ZPd ZQdS )    N)Hashable)FAbsAddArrayDeferredVectorEExpr	FiniteSetFloatFunctionGramSchmidtIImmutableDenseMatrixImmutableMatrixImmutableSparseMatrixIntegerKroneckerDeltaMatPowMatrixMatrixSymbolMaxMinMutableDenseMatrixMutableSparseMatrixPolyPowPurePolyQ
QuaternionRationalRootOfSSparseMatrixSymbolTupleWildbanded
casoratiancosdiagdiffexpexpandeyehessian	integratelogmatrix_multiply_elementwisenanonesoopi
randMatrix	rot_axis1	rot_axis2	rot_axis3rot_ccw_axis1rot_ccw_axis2rot_ccw_axis3signsimpsimplifysinsqrtsstrsymbolssympifytantrigsimp	wronskianzeroscancel)abcdtxyz)
NumberKindUndefinedKind)_find_reasonable_pivot_naive)MatrixErrorNonSquareMatrixError
ShapeError)
MatrixKind)_dotprodsimp_state	_simplifydotprodsimp)ArrayDerivative)ignore_warningsraisesskipskip_under_pyodideslowwarns_deprecated_sympy)captureiterable)versionc                     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      )   rg   rh            ri   ri   rk   ri   rj   rk   rl   ri   rg   rh   )ro   rn   rj   rl   )r   rowscolslistrO   s    `/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/tests/test_matrixbase.pytest__MinimalMatrixru   #   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 Nri   rg   rh   rj   r   )r   kindrX   rR   rO   rS   r#    rv   rt   	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Orv   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   ri   ri   r   rm   )rC   r   r   r   r   todok)rJ   rK   rL   rM   m1m2m3m4s           rt   
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 5rv   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 )Nrg   rh   rj   )	r"   OneHalfrO   rP   ZerorQ   r   tolist)lstflat_lstms      rt   test_tolistr   J   s    E161Q3'!Q1a41qufac1:M
NCqvqsAFAq!QT1qufac1MHq!XA88::rv   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   ri   r   ri   rg   )r   r"   r   r   rO   todod)r   dicts     rt   
test_tododr   Q   sd    
QK!Q011A15zq!&kq!f55D7799rv   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 )Nrh   	ri   rg   rh   rj   rk   rl         	   c                  .                          d          S Nrk   row_deles   rt   <lambda>z"test_row_col_del.<locals>.<lambda>Y       qyy|| rv   c                  .                          d          S Nr   r   s   rt   r   z"test_row_col_del.<locals>.<lambda>Z       qyy}} rv   c                  .                          d          S r   col_delr   s   rt   r   z"test_row_col_del.<locals>.<lambda>[   r   rv   c                  .                          d          S r   r   r   s   rt   r   z"test_row_col_del.<locals>.<lambda>\   r   rv   rg   ro   rn   ri   rj   rk   r   r   r   r   r   rl   r   )r   r^   
IndexErrorr   r   r   r   s   @rt   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Lrv   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 Nri   rg   rh   )r   rO   rP   rQ   get_diag_blocks)rJ   rK   rL   s      rt   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#%%%%%%rv   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   rO   rP   rQ   r*   rp   rq   r   )rJ   rK   rL   ABCDs          rt   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)++++++rv   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 )Nrh   r   r   ri   ro   ri   rj   r   )r   rowcolr   s    rt   test_row_colr   ~   sv    q!00011A5588vaIII......5588vaIII........rv   c                      t          d                              t          g d                    t          g dg dg dg          k    sJ d S )Nrh   r   r   r   )ri   r   r   r   )r   ri   r   r   )r   r   ri   r   )r.   row_joinr   rz   rv   rt   test_row_joinr      sg    q66??6))),,--<<<<<<<! " "" " " " " "rv   c                      t          d                              t          g dg                    t          g dg dg dg dg          k    sJ d S )Nrh   r   ri   r   r   r   ri   r   r   r   ri   )r.   col_joinr   rz   rv   rt   test_col_joinr      sp    q66??6999+..//999999999       rv   c                      t          g dg          } t          dd          D ]j}g d}|                    |d           t          d                              ||                               d                                          |k    sJ kd S )Nrj   rj   rj   rk   r   rj   rh   r   )r   rangeinsertr.   
row_insertr   flat)r4ils      rt   test_row_insertr      s    			B2q\\ ; ;II	A1vv  B''++A..3355:::::; ;rv   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   rk   r   r   r   rj   rh   r   rl   rg   )ri   r   r   rg   rg   r   r   r   )r   ri   r   rg   rg   r   r   r   )r   r   ri   rg   rg   r   r   r   )r   r   r   rg   rg   ri   r   r   )r   r   r   rg   rg   r   ri   r   )r   r   r   rg   rg   r   r   ri   )r   r   r   rH   
col_insertr   r   r.   )c4r   r   s      rt   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++++++++++++++++++- . .. . . . . .rv   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 )Nrj   rh   c                     | dz  |z   S Nrh   rz   r   js     rt   r   ztest_extract.<locals>.<lambda>       !A#' rv   )r   ri   rh   r   ri   rg   )r   ri   rh   rj   r   
   r   r   rg   )r   r   rg   r   r      c                  4                          dgdg          S )Nrj   r   extractr   s   rt   r   ztest_extract.<locals>.<lambda>       qyy!qc22 rv   c                  4                          dgdg          S )Nr   rh   r   r   s   rt   r   ztest_extract.<locals>.<lambda>   r   rv   )r   r   r   r^   r   r   s   @rt   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3rv   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 )Nrj   rh   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_hstack.<locals>.<lambda>   r   rv   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_hstack.<locals>.<lambda>       1Q37 rv   )	r   ri   rg   r   ri   rg   r   ri   rg   )	rh   rj   rk   rh   rj   rk   rh   rj   rk   )	rl   r   r   rl   r   r   rl   r   r   )	r   r   r   r   r   r   r   r   r   c                  0                                     S N)hstackr   r   s   rt   r   ztest_hstack.<locals>.<lambda>       qxx2 rv   r   ri   rg   rl   )r   r   r^   rW   rH   rp   rq   )M1M2M3M4r   r   s       @@rt   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;;;;;;rv   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 )
Nrj   rh   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_vstack.<locals>.<lambda>   r   rv   c                     | dz  |z   S r   rz   r   s     rt   r   ztest_vstack.<locals>.<lambda>   r   rv   r   rh   rj   rk   rl   r   r   r   r   r   c                  0                                     S r   )vstackr   s   rt   r   ztest_vstack.<locals>.<lambda>   r   rv   )r   r   r^   rW   r   s   @@rt   test_vstackr      sD   q!))**A	1**	+	+B88Aq!aA 6 6 . . . .& + + + + + + + + + + + +B- ;. ;. . . . . . . :.....///=??fhh&&&&&&rv   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rg   rh   rg   )r   rO   rP   hasrQ   r$   r   s    rt   test_hasr     s    A  A5588OOOuuQxx55==A  AuuQxxrv   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 )NrO   rg   ri   Frh   r   Tr?   c                     | S r   rz   rs   s    rt   r   z(test_is_anti_symmetric.<locals>.<lambda>       ! rv   c                 ,    g | ]} |j                     S rz   r-   .0rO   s     rt   
<listcomp>z*test_is_anti_symmetric.<locals>.<listcomp>   s     ,,,Qhahjj,,,rv   c                 ,    g | ]} |j                     S rz   r  r	  s     rt   r  z*test_is_anti_symmetric.<locals>.<listcomp>   s     @@@Qhahjj@@@rv   )rC   r   is_anti_symmetricrP   r"   r   rr   )rO   r   s     rt   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))))))rv   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 )Nri   rg   Fr   r   is_hermitianrO   rJ   s    rt   test_is_hermitianr     s    A!Q !!A>1aA2q'"##A>U""""A!Q !!A>!!!A!Q !!A>U""""""rv   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ri   rg   rh   rj   rk   rl   r   r   Frk   rl   r   ri   rh   ro   rg   )r   rO   is_symbolicr  s    rt   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######rv   c                  z    t          dgdgg          } t          ddgddgg          }| j        rJ |j        sJ d S Nri   rg   )r   	is_squarer   s     rt   test_is_squarer    sS    aSzA	!Q!Q 	!	!B{<rv   c                      t          ddg d          } |                                 sJ t          ddg d          } |                                 rJ d S )Nrg   r   ri   ri   r   r   ri   r   ri   )r   is_symmetricr   s    rt   test_is_symmetricr!    s^    q!\\\""A>>q!\\\""A~~rv   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rh   rj   ri   rg   rj   rk   r   rh   )	rh   rg   r   rj   rj   ri   ri   rk   rg   )	rh   rg   r   rj   rj   ri   ri   rk   rg   Frh   ri   rg   )r   is_upper_hessenbergis_lower_hessenbergr  s    rt   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$$$$$$rv   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 )	Nrg   r   ri   rg   rh   >   ri   rg   rh   rO   Trealr   ri   )setr   valuesr$   rs   s    rt   test_valuesr/  -  s    vaLLL 
 

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

&(( 1v     rv   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   rk   ri   rg   r   ri   rg   )r   r   Tr   	conjugateHMs    rt   test_conjugater7  5  s   Aq			 	 	A 3&1a&a&a&" # # # # # # 3&1qb!*$**& ' ' ' ' ' '3!++--3!#%<<<<3&Aq'2q'q'# $ $ $ $ $ $ $ $rv   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   rg   )r   r   rO   doitr  s    rt   	test_doitr<  G  sf    QE***+,--AQ41Q3;;;;1688v!ug&&&&&&rv   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 )Nrg   ri   rk   rl   c              3   z   K   | ]5} j                     |         |                                          k    V  6d S r   evalfr
  r   rJ   s     rt   	<genexpr>ztest_evalf.<locals>.<genexpr>O  s@      >>wqwyy|qtzz||+>>>>>>rv   c              3   ~   K   | ]7} j         d           |         |                              d           k    V  8dS rg   Nr?  rA  s     rt   rB  ztest_evalf.<locals>.<genexpr>P  sD      @@!wqwqzz!}!

1-@@@@@@rv   c              3   ~   K   | ]7} j         d           |         |                              d           k    V  8dS rD  nrA  s     rt   rB  ztest_evalf.<locals>.<genexpr>Q  sD      88!sqs1vvayAaDFF1II%888888rv   )r   rA   allr   r  s   @rt   
test_evalfrI  M  s    q!d1ggq\""A>>>>U1XX>>>>>>>>@@@@uQxx@@@@@@@@8888uQxx8888888888rv   c                      t          dt                    \  t          ddfd          } t          ddfd          }|                              }|| k    sJ d S )NF, Gclsrg   c                       | |z             S r   rz   r   r   Gs     rt   r   ztest_replace.<locals>.<lambda>V      !!AaC&& rv   c                       | |z             S r   rz   r   r   Fs     rt   r   ztest_replace.<locals>.<lambda>W  rQ  rv   rC   r   r   replace)Kr6  NrT  rP  s      @@rt   test_replacerY  T  sr    6x(((DAqq!(((())Aq!(((())A			!QA666666rv   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 )	NrK  rL  rg   c                       | |z             S r   rz   rS  s     rt   r   z"test_replace_map.<locals>.<lambda>^  rQ  rv   Tc                       | |z             S r   rz   rO  s     rt   r   z"test_replace_map.<locals>.<lambda>`  s    !!AaC&& rv   r   ri   rU  )r6  rX  rM   rT  rP  s      @@rt   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4rv   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 ndarraysri   rg   rh   rj   Tcopynumpy.c                        d          S )NFrb  rz   )r   r_  s   rt   r   z'test_numpy_conversion.<locals>.<lambda>m  s    %%"6"6"6 rv   )rd  r_  r`  ImportErrorr_   r   intre   splitr^   	TypeError)r`  np_arrayr   r_  s     @@rt   test_numpy_conversionrl  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 )Nri   rg   rh   rj   r   r   rl   ))rj   rh   rg   ri   r   r   ))rg   rj   ri   rh   )rh   ri   )rj   rg   )r   rot90r  s    rt   
test_rot90rt  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Nrv   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 )
Nri   rj   rk   rg   r   r   rq  T)simultaneous)r   rO   subsrP   rz   rv   rt   	test_subsrx  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$%&&' ' ' ' ' 'rv   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 )Nrh   rj   )ri   rg   rh   rj   rk   rl   r   r   r   r   r      c                  *      j         ddgg          S )Nr   rk   )permuter  s   rt   r   ztest_permute.<locals>.<lambda>  s    yqy1a&22 rv   c                  >      j         t          d                    S )NrO   )r|  r$   r  s   rt   r   ztest_permute.<locals>.<lambda>  s    yqy55 rv   r   rg   ri   r  r   r   r   rz  r  rq   )orientation)rg   rh   ri   rj   )rl   r   rk   r   )r   r   r   rz  backward)	direction)r  r  )rh   ri   rg   rj   )r   rk   rl   r   )r   r   r   rz  )ri   rg   r   rh   )Permutation)	r   r^   r   
ValueErrorpermute_rowsr|  permute_colssympy.combinatoricsr  )rK   r  rJ   s     @rt   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> > > > > > >rv   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ri   ri   ri   ri   rg   r   r   ri   ri   r   r   r   ri   r   r   r   r   r   )r   ri   ri   ri   )r   upper_triangular)r   Rs     rt   test_upper_triangularr    sE   	 	 	A 	
1A$$$$	       	
2A$$$$	       	
A$$$$	        rv   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  ri   r   r   r   ri   ri   r   r   ri   ri   ri   r   rg   r   r  )r   lower_triangularr   Ls     rt   test_lower_triangularr    sE   $$$$	 	 	A 	
A$$$$	& ' ' ' ' ' ' 	
1A$$$$	       	
2A$$$$	        rv   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 )	Nro   rg   rg   rj   rl   rj   ri   c                       z   S r   rz   r   rG  s   rt   r   ztest_add.<locals>.<lambda>      q1u rv   r   rO   rP   rQ   r^   rW   r  s   @@rt   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
:}}}}}%%%%%rv   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)Nri   rg   rh   rj   z2 @ aza @ 2)r   
__matmul__NotImplemented__rmatmul__evalSyntaxErrorrj  r  s    rt   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>.fooFrm   N)__name__
__module____qualname__	is_Matrixis_MatrixLikeshaperz   rv   rt   foor    s        	rv   r  ri   rg   rh   rj   N)r	   r   )r  r   rK   s      rt   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0rv   c                  `    t          ddddg          } |  t          ddddg          k    sJ d S )Nri   rg   r   r   r   rF  s    rt   test_negr    s@    q!aVA21r2h''''''''rv   c                  d    t          ddddg          } | | z
  t          ddddg          k    sJ d S )Nri   rg   r   r  rF  s    rt   test_subr    sB    q!aVAq5F1a!Q((((((((rv   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   rF  s    rt   test_divr  #  sO    q!aVAQ3&A!Q/00000000rv   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 )Nrg   ri   r   r   ri   rL  )rr   r   r.   typerz   rv   rt   test_eyer  (  s    
1a  !!\\\1111
1,,,....
1&((((
1&)))**f444444rv   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 )Nrg   r  rh   ri   ri   ri   rL  )rr   r   r4   r  rz   rv   rt   	test_onesr  /  s    Aq!!""lll2222A<<<////;q!			999'= > >>>>>A6))))A6***++v555555rv   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 )Nrg   r  rh   r   rL  )rr   r   rH   r  rz   rv   rt   
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6rv   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 )Nri   rg   rh   )ri   rg   r   r   r   r   )rg   rh   r   r   r   r   r   )ri   rg   r   r   r   r   r   )rg   rh   r   r   r   r   r   rj   rk   rl   r   )r   r   r   r   r   r   )r   r   ri   rg   r   r   )r   r   rh   rj   r   r   )r   r   r   r   rk   rl   c                  $      dd          S )Nr   rk   rp   rz   rJ   rK   rL   r*   s   rt   r   z test_diag_make.<locals>.<lambda>l  s    ttAq!QQ777 rv   r  )rq   )rp   rq   F)unpackrL  ro   rr  ro  r   r   ri   r   )r   r   r   rg   )
r   r*   rO   rP   rQ   r^   r  r  r  r4   r  s   @@@@rt   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 - -      rv   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 )Nrh   r   r   )r   rj   r   ri   ri   rk   r   )rh   r   rg   rg   rm   c                  .                          d          S r   diagonalr   s   rt   r   ztest_diagonal.<locals>.<lambda>  s    qzz!}} rv   c                  .                          d          S )Nrq  r  r   s   rt   r   ztest_diagonal.<locals>.<lambda>  s    qzz"~~ rv   c                  8                          t                    S r   )r  r6   r   s   rt   r   ztest_diagonal.<locals>.<lambda>  s    qzz"~~ rv   c                 V    i | ]%}|t                              |                    &S rz   )rr   r  )r
  r   r6  s     rt   
<dictcomp>z!test_diagonal.<locals>.<dictcomp>  s=     * * * d1::a==)) * * *rv   )r   r   r  tupler  r#   r^   r  r4   r'   rp   rq   )rM   sr6  r   s     @@rt   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 0rv   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 )Nrh   rg   
eigenvalue)sizer  upper)band)r  eigenvalr  rg   ri   r   )r   rg   ri   r   lowerrg   r   r   r1  r   c                  *    t          j        d          S Nrg   r   jordan_blockrz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    v2155 rv   c                  ,    t          j        dd          S )Ng      @rg   r  rz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    v23:: rv   c                  ,    t          j        d          S )Nrg   r  r  rz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    v2a@@@ rv   c                  .    t          j        dd          S )Nrg   rj   )r  r  r  rz   rv   rt   r   z#test_jordan_block.<locals>.<lambda>  s    Fq" " " rv   )r  r  )r   r  r^   r  rz   rv   rt   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 0rv   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 )Nri   rg   rh   rj   T	normalizerk   r   rl   r   )r   ri   r   )rh   rl   r   )r   rk   rg   r   r         r   ro   )ri   rj   rk   c                  &    t          j         ddiS N	rankcheckTr   orthogonalizevecss   rt   r   z$test_orthogonalize.<locals>.<lambda>      v3TJTJJ rv   rn   r   c                  &    t          j         ddiS r  r  r  s   rt   r   z$test_orthogonalize.<locals>.<lambda>  r  rv   )r   r  rA   r    r^   r  )r   rG  r  s     @rt   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Krv   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 )Nri   )r   ri   r   ri   r   ri   )r   ri   ri   )ri   ri   r   rh   )rq  ri   r   r   r   r   r   )ri   r   ri   r   r   r   r   )r   ri   r   ri   r   r   r   )r   r   ri   r   ri   r   r   )r   r   r   ri   ri   ri   r   )r   r   r   r   ri   rg   ri   )r   r   r   r   r   ri   rh   )rh   ri   r   r   r   r   r   )ri   rg   ri   r   r   r   r   )r   ri   ri   ri   r   r   r   )r   	wilkinson)wminuswpluss     rt   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 4rv   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 yrg   ri   rk   rj   r   r   )ri   rj   ri   )r   rk   ri   )rC   r   limitr    r@   )rO   rP   r   r   s       rt   
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Frv   c                       t          g dg dg dg           g dt          t           fd           t          t           fd           d S )Nro   rn   r   r  c                       z  S r   rz   r6  vs   rt   r   z"test_issue_13774.<locals>.<lambda>      ac rv   c                       z  S r   rz   r  s   rt   r   z"test_issue_13774.<locals>.<lambda>  r  rv   )r   r^   rj  r  s   @@rt   test_issue_13774r
     sc    			999iii011A		A
9kkkkk"""
9kkkkk"""""rv   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 )
NrO   rP   c                  *    t          j        d          S Nri   )r   	companionrz   rv   rt   r   z test_companion.<locals>.<lambda>
  s    v/22 rv   c                  J    t          j        t          dg                     S r  r   r  r   rs   s   rt   r   z test_companion.<locals>.<lambda>  s    v/aS!== rv   c                  L    t          j        t          ddg                     S )Nrg   ri   r  rs   s   rt   r   z test_companion.<locals>.<lambda>  s    v/aVQ@@ rv   c                  R    t          j        t           z   g                    S r   r  rO   rP   s   rt   r   z test_companion.<locals>.<lambda>  s$    v/QqS1a&0A0ABB rv   zc0:3ri   r   )r$   r^   r  rC   r   r  r   )c0c1c2rO   rP   s      @@rt   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 8rv   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 zro   ri   rg   rh   )ri   ri   ri   ri   ri   )rC   r   rw  zip)rO   rP   rQ   r   r   s        rt   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Lrv   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_priorityrz   rv   rt   Foor  #  s        )6=rv   r  rg   r  r   r         )r   r   
isinstance)r  rJ   rK   rL   s       rt   test_rmul_pr19860r#  "  s    > > > > >" > > > 	q!\\\""AAq,,,A 	
!AaB"b*++++++++rv   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 )Nri   rg   rh   rj   c                       z   S r   rz   r   r   s   rt   r   z"test_issue_18956.<locals>.<lambda>4      a!e rv   c                       z   S r   rz   r&  s   rt   r   z"test_issue_18956.<locals>.<lambda>5  r'  rv   )r   r   r^   rj  r&  s   @@rt   test_issue_18956r)  1  sm    1v1vA1qe}A
9mmmmm$$$
9mmmmm$$$$$rv   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  rz   selfs    rt   __iter__ztest__eq__.<locals>.My.__iter__:  s      GGGGGGFrv   c                 ,    t          |           |         S r   )rr   )r/  r   s     rt   __getitem__z"test__eq__.<locals>.My.__getitem__>  s    ::a= rv   N)r  r  r  r0  r2  rz   rv   rt   Myr,  9  s2        	 	 		! 	! 	! 	! 	!rv   r3  rg   ri   c                       e Zd Zd ZdS )test__eq__.<locals>.My_sympyc                      t          |           S r   r  r.  s    rt   _sympy_z$test__eq__.<locals>.My_sympy._sympy_C  s    $<<rv   N)r  r  r  r7  rz   rv   rt   My_sympyr5  B  s#        	  	  	  	  	 rv   r8  )objectr   )r3  rJ   r8  s      rt   
test__eq__r:  8  s    ! ! ! ! !V ! ! ! 	q!aVA9999         2       

??????rv   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 )Nrh   rg   )rh   rg   c              3   B   K   | ]}t          |          t          u V  d S r   )r  rh  r
  r   s     rt   rB  ztest_args.<locals>.<genexpr>L  s,      (I(IAaC(I(I(I(I(I(Irv   )	enumerateall_classesrH   r  rH  rp   r  rh  rq   r   rr   r  r%   r   r   )rG  rM  r   s      rt   	test_argsr@  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*****	+ 	+rv   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 Nrh   rg   )
r   r   rH   rb   _matr   r#   r   _smatr   )rM  r   matsmats       rt   test_deprecated_mat_smatrG  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   rO   rP   rQ   )r  s    rt   test_divisionrI  b  sJ    q!aVAQ3&A!QqSz********rv   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 )	Nro   rg   r  r  rj   r  ri   c                       z   S r   rz   r  s   rt   r   ztest_sum.<locals>.<lambda>k  r  rv   r  r  s   @@rt   test_sumrL  g  r  rv   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 )Nri   r   rg   rq  rh   )r   rO   rP   absr   r  s     rt   test_absrO  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;;;;;;rv   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)ri   rg   rr  rQ  )rh   r   rg   rj   rl   ri   )r   addrJ   rK   s     rt   test_additionrU  v  s|      	 	A
 	  	 	A
 q5EAE!HH8888AA'7 8 888888888rv   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 )Nrh   r   ri   r   r   r   r   rg   rj   rl   r   r}   )r   rg   ri   rg   ri   r   )rh   rk   rj   rk   rj   )rl   r   r   r   r   rQ  r~   rg   r   )rg   rg   rg   r   )ri   r   ri   rg   )rg   r   ri   r   rg   r   r   r   )r   r   rh   r   )r   rj   r   rj   )r   r#   r   rH   r   )r6  rJ   s     rt   test_fancy_index_matrixrY    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      rv   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)rQ  rr  r   rl   rR  c                       z  S r   rz   rT  s   rt   r   z%test_multiplication.<locals>.<lambda>  s    qs rv   c                       i z  S r   rz   r  s   rt   r   z%test_multiplication.<locals>.<lambda>  s    ad rv   r}   r   r~   rg   r   rl   rm   rW     rn  r   rj   c                  $    t                     S r   )r2   rT  s   rt   r   z%test_multiplication.<locals>.<lambda>  s    :1a@@ rv   rO   rh   rk   r   r   ri   )r   r^   rW   rj  r2   multiply_elementwiser$   r"  rO   r5   r3   r4   r    )	rL   hr  r6  r   _hr   rJ   rK   s	          @@rt   test_multiplicationrc    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 ) )      rv   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 NrQ  rg   r  rz   rv   rt   r   ztest_power.<locals>.<lambda>  s    ): rv   rg   rh   rj   rk   i  i  i,*  i7  )rg   ri   rh   )rj   rg   rj   )rl   rz  ri   )i"  i     )i  i  ip  )i  i  i  r   ri   d   r}   r   r   r   r!     cayleymethodmultiplyr   rz     !   i 0   9   )rk   rg   rj   r   r   g      ?rF  i   )rh   r   r   r   rq  )r   rq  rq  r   rh   )r   rh   r   rh   r   )r   r   rh   r   rh   )rh   r   r   rh   r   c                  H                          t          d                    S Nr   )_matrix_pow_by_jordan_blocksr"   r   s   rt   r   ztest_power.<locals>.<lambda>%  s     > >quu E E rv   c                  l    t          ddgddgg                              t          d                    S )Nri   rh   )r   rt  r"   rz   rv   rt   r   ztest_power.<locals>.<lambda>(  s3    AA'7 8 8 U UVWX[V\V\ ] ] rv   r   r   r         $@c                       dz  S N @rz   r  s   rt   r   ztest_power.<locals>.<lambda>+      q#v rv   c                  *     t          dd          z  S rB  r    r  s   rt   r   ztest_power.<locals>.<lambda>,      q(1a..0 rv   r   ihiO<iv0irG  T)integer)r  negativec                       z  S r   rz   )r   rG  s   rt   r   ztest_power.<locals>.<lambda>6  s    q!t rv   )r  nonnegativec                  *     t          dd          z  S rB  r}  r  s   rt   r   ztest_power.<locals>.<lambda>=  r~  rv   )rh   r   ri   )rj   rh   ri   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                  T                          d                                          S )Nr   )rw  r;  )AnrG  s   rt   r   ztest_power.<locals>.<lambda>E  s    rwwq"~~2244 rv   )r  positiver  )r   rg   r   r   rz  gd%%@c                       dz  S ry  rz   r  s   rt   r   ztest_power.<locals>.<lambda>T  r{  rv   c                       t           z  S r   r   r  s   rt   r   ztest_power.<locals>.<lambda>U  s    q!t rv   )r^   rV   r   r.   r   powr"   r   	sympy.abcrG  rJ   rK   rt  _eval_pow_by_recursionrU   r  r$   r"  r   r   rw  r;  r*   rH   r   )r   r  r   rG  s   @@@@rt   
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Irv   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 )Nri   Trg   )r   rO   r[   r,   r-   r5  s    rt   $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 Nri   T)r   rO   r[   jordan_forminvr6  PJs      rt   $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 )Nri   Trh  l                )r   rO   r[   r5  s    rt   $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[   r5  s    rt   $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 )Nrl   c                 (    dd| |z   z  t           z  z   S Nri   r   r  r   s     rt   r   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>      !rQqSk!m"3 rv   TrO   rk   $   rj   EXdomain)r   r[   charpolyr   rO   r   r5  s    rt   $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 rz   rs   r=  s     rt   r  z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>      ...aac...rv   @   Tbareissr   r   r   r[   detr5  s    rt   $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 )Nrl   c                 (    dd| |z   z  t           z  z   S r  r  r   s     rt   r   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>  r  rv   T	berkowitzr   )r   r[   r  r5  s    rt   $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 rz   rs   r=  s     rt   r  z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>  r  rv   r  Tlur   r  r5  s    rt   $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 rz   rs   r=  s     rt   r  z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>  r  rv   r  T)ri   r   r   r   rq  r   r   r  r   ri   rg   rh   rj   rk   rl   r   r   r   r   r   r   r   r   r   r~   )r   r   r[   rrefr5  s    rt   $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 )Nrl   c                 (    dd| |z   z  t           z  z   S r  r  r   s     rt   r   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>  r  rv   Tr   )r   r[   cofactorr5  s    rt   %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 )Nrl   c                 (    dd| |z   z  t           z  z   S r  r  r   s     rt   r   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>  r  rv   Tr   r  )r   r[   cofactor_matrixr5  s    rt   %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 )Nrl   c                 (    dd| |z   z  t           z  z   S r  r  r   s     rt   r   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>  r  rv   Tri   r   rj   )r   r[   	eigenvalsr   r5  s    rt   %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   ri   rg   )r   r   r   ri   FT)deepnumerr   )r   rO   
eigenvectsrA   r-   )r6  evs     rt   %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 : :      rv   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   ri   rj   Tr   r  )r   rO   r[   echelon_formr5  s    rt   %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   ri   rj   Tr   )r   rO   r[   rowspacer5  s    rt   %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   ri   rj   T)r   rO   r[   columnspacer5  s    rt   %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 rz   rs   r=  s     rt   r  z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>  r  rv   r  Tri   r   r   rg   rq  rh   r   rj   r   rk   r  rl   rp  )r   r   r[   	nullspacer5  s    rt   %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 )Nrl   ri   rh   T)r   rO   r[   is_nilpotentr5  s    rt   %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_diagonalizabler5  s    rt   %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 )	Nri   r   T)ri   r   r   r   r  r  rX  rg   )r   rO   r[   diagonalizer5  s    rt   %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GErk  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  r5  s    rt   %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LUrk  r  r  r5  s    rt   %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ADJrk  r  )r   r"   r[   r  r-   r5  s    rt   %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CHrk  r  r#   r"   r[   r  r   r5  s    rt   %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LDLrk  r  r  r5  s    rt   %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]]Trj   r   r"   r[   rankr5  s    rt   %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   ri   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   rO   r[   r  r-   r"   r  s      rt   %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_valuesr5  s    rt   %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  r5  s    rt   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)	ri   ri   ri   ri   ri   r   ri   r   r   ri   rg   r   r   rp  r   r   rq  rh   r   rj   r  rz  T)	r   r   r   r   ri   r   r   r   r   )	r   r   r   r   r   r   ri   r   r   r  )r   rA   r[   r  r"   r5  s    rt   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            	      h   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          g g          cxk    rt          ddg           k    sn 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 )Nrk   ri  )r   r   rz   rv   rt   r   ztest_creation.<locals>.<lambda>  s    vaE"II66 rv   c                  $    t          ddg           S )Nrk   r   r  rz   rv   rt   r   ztest_creation.<locals>.<lambda>  s    vaR00 rv   c                  ,    t          d          d         S rf  r  rz   rv   rt   r   ztest_creation.<locals>.<lambda>  s    vf~~a0 rv   rk   rQ  rh   r   ri   r  r}   rg   r   r   r   rj   )ri   ri   rg   rg   rg   )rh   rh   rh   rj   rj   Fr9  r   r~   r   rm   c                     g | ]}|gS rz   rz   r=  s     rt   r  z!test_creation.<locals>.<listcomp>   s    7I7I7I7I7I7Irv   c                  Z    t          t          d          t          dd          g          S )Nrg   r   rh   r   r4   rz   rv   rt   r   ztest_creation.<locals>.<lambda>$  !    vtAwwQ

&;<< rv   c                  Z    t          t          d          t          dd          g          S )Nrg   rh   r   r  rz   rv   rt   r   ztest_creation.<locals>.<lambda>%  r  rv   )rk   rl   rl   )r^   r  r   r   rb   r   r2  r"   EmptySetrO   rq   rp   r   r.   r   as_immutable
as_mutabler4   r   )
r6  rJ   r   rK   c23c13rL   datr   r   s
             rt   test_creationr    s   
:66777
:00111
:00111	
		  vq               88vbzzEEEEVRD\\EEEEVAq"5E5EEEEEEE		!	! ? ?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:0DD!D36E66E:=E: F<<G G *4U++U/2U/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 )Nrh   rg   ri   rj   rk   rl   r   )ri   rg   rg   rg   rh   rh   )rj   rg   rg   rg   rk   rk   )rl   rl   r   r   rk   rk   )r   	irregularr4   rz   rv   rt   test_irregular_blockr!  -  s    AtAayy$q))A+tAayy{Qq		!T!AYYq[$q))A+tAayy{< <?E	G @ @     rv   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 )Nrj   rh   rg   r   c                     | |z   S r   rz   r   s     rt   r   ztest_slicing.<locals>.<lambda>;  
    1q5 rv   ri   r   r   r*  )rj   rk   rl   r   )r   r   r   r   )rz        r   r   )rh   r   r   r   r   )r.   rH   r   )m0r   r   s      rt   test_slicingr(  6  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Crv   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 )
Nrj   rg   )r  r  r  r  ri   r  r   )r  )rg   ri   r   r   )rh   r   ri   r   )rj   r   r   ri   r  r  r~  r%  r&  r      ))r   rg   rh   rj   )r   rl   r   r   r~  r+  )rH   r.   r   r   s    rt   test_submatrix_assignmentr-  D  s   aAa&&Aac1Q3hK & ' ' ' ' ' ' AAbqb"1"fIA;;;;Q<((AaaadG & ' ' ' ' ' ' AhhAaaadGa====MMMAaaadG * + + + + + + 1vAbqb!eH * + + + + + + + +rv   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 )Nrh   ri   r   )	ri   r   r   r   ri   r   r   r   ri   rj   c                     | |z   S r   rz   r   s     rt   r   ztest_reshape.<locals>.<lambda>c  r$  rv   )r   r%  )rh   rj   rg   r   rg   rl   ))r   ri   rg   rh   ri   rg   )rh   rj   rg   rh   rj   rk   )r.   reshaper   r'  r   s     rt   test_reshaper2  `  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Orv   c                      t          d          } |                     d           t          d          dz  k    sJ |                     d           t          d          k    sJ d S )Nrh   c                     d| z  S r  rz   rs   s    rt   r   z test_applyfunc.<locals>.<lambda>k  s
    !A# rv   rg   c                     dS Nr   rz   rs   s    rt   r   z test_applyfunc.<locals>.<lambda>l  s    ! rv   )r.   	applyfuncrH   )r'  s    rt   test_applyfuncr8  i  sa    	QB<<&&#a&&(2222<<$$a000000rv   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 )Nrg   rh   rJ   Tr+  )complexr   )r   r   r   r   ri   )r   ri   r   r   )
r   rO   rP   r-   r$   r,   r   r)   r@   r    )r'  r   rJ   s      rt   test_expandr;  o  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 @ @      rv   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   rO   rA   rP   refiner   r,  r  r  r1  s     rt   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9rv   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 )Nrh   )seedrj   r      T)r@  	symmetric)rB  prng)r   r   )rh  F      )rB  percentrC  r   ri   rD  )minrF  rE  )r7   rc  r?   randomRandomr2  r   r  )r6  r"   rngr  rF  
zero_countr   r   s           rt   test_randomrL    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
	  rv   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 )-Nrj   r  rk  r  r  r  QR)rg   rh   rk   )rh   rl   rg   )r   rh   rl   rh   )r   r   r   r   ri   r   r   ri   r   ri   ri   ri   r   r   r   ri   ri   r   r   r   r   ri   ri   r   r   )ri   r   ri   r   r   ri   r   r   ri   r   ri   r   ri   ri   ri   r   ri   ri   r   r   r   r   r   ri   r   )ri   ri   ri   ri   r   ri   r   r   ri   ri   r   r   r   ri   ri   ri   ri   r   r   ri   ri   r   r   ri   ri   )ri   r   r   r   r   r   ri   ri   r   r   ri   ri   ri   r   r   r   r   r   r   ri   r   r   ri   r   r   )ri   r   r   ri   ri   ri   r   ri   r   r   ri   r   r   ri   ri   ri   r   ri   r   r   r   ri   r   r   r   )ri   r   r   r   r   r   r   r   ri   ri   ri   r   ri   r   ri   ri   ri   ri   r   r   r   ri   ri   r   ri   )r   ri   ri   ri   r   r   r   r   ri   ri   ri   r   ri   r   ri   r   ri   r   ri   r   ri   r   r   ri   r   )ri   ri   r   r   r   ri   ri   r   r   ri   ri   r   ri   ri   r   ri   ri   r   ri   r   ri   ri   r   ri   ri   )r   r   ri   ri   ri   r   r   ri   ri   r   ri   ri   r   ri   r   r   r   r   r   r   ri   r   ri   r   ri   )ri   r   ri   ri   ri   r   ri   r   r   ri   ri   r   ri   ri   r   ri   ri   ri   ri   r   ri   ri   ri   r   r   )r   ri   ri   r   r   r   r   ri   ri   r   ri   r   ri   r   ri   ri   r   r   ri   r   r   r   ri   ri   r   )ri   r   r   ri   r   ri   r   ri   ri   r   r   ri   r   ri   r   ri   r   ri   r   ri   r   ri   ri   r   r   )r   ri   ri   r   r   ri   ri   r   r   ri   ri   r   ri   r   r   r   ri   r   r   ri   r   ri   ri   r   ri   )ri   ri   ri   r   ri   r   r   ri   r   r   ri   r   ri   ri   r   r   ri   ri   ri   r   ri   r   ri   ri   r   )r   ri   r   r   r   r   ri   ri   r   ri   ri   r   r   r   r   ri   r   ri   ri   ri   r   r   ri   r   r   )ri   ri   ri   ri   r   ri   ri   ri   ri   ri   ri   r   r   r   ri   r   ri   r   ri   r   r   ri   r   r   r   )r   r   r   ri   r   ri   ri   r   ri   r   r   r   r   r   ri   r   ri   ri   r   ri   r   ri   ri   r   ri   )r   ri   r   ri   r   r   r   r   ri   ri   ri   r   r   ri   ri   ri   r   r   ri   r   ri   ri   r   ri   ri   )ri   r   ri   ri   r   ri   r   ri   ri   r   ri   ri   ri   r   ri   r   r   r   r   ri   r   r   ri   r   ri   )r   r   r   ri   r   r   ri   ri   r   ri   ri   r   ri   r   ri   ri   r   r   r   r   r   r   r   r   r   )ri   r   r   r   r   ri   r   ri   r   r   ri   ri   r   ri   r   ri   ri   ri   ri   r   ri   ri   ri   ri   ri   )r   r   ri   ri   r   ri   r   r   r   ri   r   r   ri   r   r   ri   r   r   r   ri   r   ri   r   ri   ri   )r   r   r   r   r   ri   ri   ri   r   ri   ri   ri   r   r   r   ri   r   ri   ri   r   ri   ri   r   r   r   )r   r   ri   r   ri   ri   r   ri   ri   ri   r   r   ri   r   ri   r   r   ri   r   ri   r   r   r   r   r   )r   r   r   ri   ri   r   ri   ri   ri   r   r   ri   r   ri   r   ri   ri   r   ri   ri   ri   r   r   ri   r   BLOCKr   )rp  1      )r   G   ^   );      A   c              3   `   K   | ](}t                              |                    u V  )d S r   r  r  r
  r  rM  r   s     rt   rB  ztest_inverse.<locals>.<genexpr>  8      LLtAEE!HH~~$LLLLLLrv   zGE ADJ LU CH LDL QRc              3   `   K   | ](}t                              |                    u V  )d S r   rX  rY  s     rt   rB  ztest_inverse.<locals>.<genexpr>  rZ  rv   )r.   r  r   r  r   rH  ri  r   )r   AinvAArM  r   s      @@rt   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Lrv   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         ?       @      rg   r   c              3   4   K   | ]}t          |          V  d S r   rN  r
  fs     rt   rB  z:test_inverse_symbolic_float_issue_26821.<locals>.<genexpr>  (      //!s1vv//////rv        @@)
rC   r   r  r.   r7  rI   rH   maxatomsr   )Tau
Tau_syn_in
Tau_syn_exC_mTau_syn_gapr`  r6  Mis           rt   'test_inverse_symbolic_float_issue_26821rr    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5rv   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_gapr`  )r   ra  r   r   r   r   r   r   rg   r   r   )r   r   r   ra  r   r   r   )r   r   r   r   r   ri   r   ri   r   c              3   4   K   | ]}t          |          V  d S r   re  rf  s     rt   rB  z6test_matrix_exponential_issue_26821.<locals>.<genexpr>  rh  rv   ri  )
rC   r   r,   r+   r7  rI   rH   rj  rk  r   )rJ   rK   rL   rM   r   rN   r6  Mes           rt   #test_matrix_exponential_issue_26821rv    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5rv   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 )Nri   rg   rj   rh   r   rl   )r   rO   rP   jacobianr/   rQ   r2  )r  symsrg  ganss        rt   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. '  '             rv   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 )Nrg   rh   ri   r  rl   r  rk  )rG   r)   rO   r@   r,   r-   )w1w2s     rt   test_wronskianr  1  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      rv   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 )	Nri   rj   rk   rg   r   r   rq  r   )r   rO   xreplacerP   r?  r.   rL  s    rt   test_xreplacer  B  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rv   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 )
NrG  rg  ri   rg   )ratiorE  rh   rj   "   )r$   r   r   rO   rP   r)   r6   r?   r5   r   r@   tracer    )rG  rg  r6  eqr   s        rt   test_simplifyr  K  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8rv   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)
ri   rg   rh   rj   rk   rl   r   r   r   r   ri   rg   rh   rj   rk   rl   r   r   r   r   )r   r2  	transposer5  s    rt   test_transposer  s  s    ......0 	1 	1A3&QFFFFFFFFFF	% 	& 	& 	& 	& 	& 	& 35A::::3!++--rv   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   rz   rv   rt   r   z!test_conj_dirac.<locals>.<lambda>  s    3q668 rv   ri   r   r  r  r   )r^   AttributeErrorr   r   r   r5  s    rt   test_conj_diracr    s    
>++,,,Aq!Aq!Aq! 	 	A
 3&***2A*2r2*2rAr*, - - - - - - - -rv   c                  j    t          g dg dg dg          } |                                 dk    sJ d S )Nr   )r   rk   r   )r   r   r   r&  r   r  r5  s    rt   
test_tracer    sE    							 	 	A 7799??????rv   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 )Nri   rg   r   rQ  r   )r   r  rO   rP   )r   r6  s     rt   
test_shaper    sh    q!aVA7fAq	Aq	 	 	A7frv   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   ri   c                     | |z   dz   S r  rz   )rr   s     rt   r   z!test_col_row_op.<locals>.<lambda>  s    QUQY rv   rg   rh   c                     | t           |z  z   S r   )rP   )rL   r   s     rt   r   z!test_col_row_op.<locals>.<lambda>  s    QAX rv   *   r}   r   )r   rO   rP   row_opcol_opr   r   )r6  r1r  s      rt   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rv   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 )
Nro   rn   ri   rh   r   rz  r}   rQ  r^  )r   row_multr5  s    rt   test_row_multr    sk    ww 	 	AJJqOOOS6R<<<<S6Q;;;;S6R<<<<<<rv   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 )Nro   rn   r  rg   r   rk   r}   rl   r   rj   r   rg   r   )r   row_addr5  s    rt   test_row_addr    sy    wwww 	 	A IIa!S6Q;;;;S6Q;;;;S6Q;;;;;;rv   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 )Nrh   ri   r   c                     | d|z  z   S r  rz   r  us     rt   r   z!test_zip_row_op.<locals>.<lambda>      AaC rv   r   r  r   rg   r   r~   c                     | d|z  z   S r  rz   r  s     rt   r   z!test_zip_row_op.<locals>.<lambda>  r  rv   )rg   r   r   )rj   r   r   r   )mutable_classesr.   
zip_row_op)rM  r6  s     rt   test_zip_row_opr    s    & &GGAJJ	Q//000CC""$ % % % % % % GGAJJqL$	Q//000!!CC##% & & & & & & && &rv   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 )Nro   )rg   rg   rh   rz   )ri   ri   r  )r   rJ   rK   s      rt   test_issue_3950r    sz    yyyAyyyAyyyARS66666666666666rv   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  rz   r.  s    rt   	__index__z)test_issue_3981.<locals>.Index1.__index__      1rv   Nr  r  r  r  rz   rv   rt   Index1r    #        	 	 	 	 	rv   r  c                       e Zd Zd ZdS )test_issue_3981.<locals>.Index2c                     dS r  rz   r.  s    rt   r  z)test_issue_3981.<locals>.Index2.__index__  r  rv   Nr  rz   rv   rt   Index2r    r  rv   r  ro   rh   rk   rg   rn   rl   ri   rj   rQ  r   r  )r  r  index1index2r   s        rt   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<<<<<<rv   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 )Nro   Tri   rg   rh   Frj   )r   is_upperrH   r  s    rt   test_is_upperr    sz    			{A:aS1#A:aA:rv   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 )Nro   Fri   rg   rh   T)r   is_lowerr  s    rt   test_is_lowerr    sZ    			{A:aS1#A:rv   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 )Nrj   )r   rg   ri   rl   r   r   ri   rg   r   r   r   rh   r   r   r   r   ri   r   r   r  r  s    rt   test_is_nilpotentr    s    q!EEEFFA1>AA  Aq~r

A1>rv   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)rh   rk   rk   rh   rg   r   rl   ri   )rH   fillr4   rp   rq   r  r   )rG  r   rJ   rK   s       rt   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rv   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   rg   )rH   r   rp   rq   r  s    rt   test_empty_zerosr  9  sx    aA====aA6Q;;;;6Q;;;;aA6Q;;;;6Q;;;;;;rv   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 )Nrg   ri   r   r  rh   )r   rO   rP   r@   r)   r+   r,   r  r5   rN  r0   r    r  s    rt   test_issue_3749r  D  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&%( ) ) ) ) ) ) ) )rv   c                      t          d          } |                     dd           dD ]4}|                     |d           |                     d          k    sJ 5d S )	Nrj   r   ri   )r  r  c                     | dk    S r6  rz   rs   s    rt   r   z%test_inv_iszerofunc.<locals>.<lambda>X  s
    a rv   )rl  
iszerofuncr  rk  )r.   col_swapr  )r   rl  s     rt   test_inv_iszerofuncr  T  s{    AAJJq!    uuF/?/?u@@EEE            rv   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   ri   rg   )
rC   r   r)   r@   rx  r2  r.   r  r7  rF   )rhophiXYr  rz  s         rt   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,--------rv   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  rg   r   )rC   r   r)   r@   rx  )r  r  r  r  r  s        rt   test_jacobian2r  i  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rv   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 Nri   rh   )	r   r,   rO   rP   rQ   r   rx  rp   rq   )r  r  r   r   X_sliceY_slicer  ks           rt   test_issue_4564r  u  s%   AEAIAEAIAEAI?@@A1ayA1a[[ * *q! 	* 	*AAAAhGAAAhG  ))A6Q;;;;6Q;;;;1XX * *Aw')))))*	** *rv   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   rx  r   rO   rP   rQ   r  s   rt   r   z(test_nonvectorJacobian.<locals>.<lambda>  s!    ajjAq	):):;; rv   r   c                  .                                    S r   )rx  r  r  s   rt   r   z(test_nonvectorJacobian.<locals>.<lambda>  s    ajjmm rv   c                  |                          t          t          t          gt          t          gg                    S r   r  r  s   rt   r   z(test_nonvectorJacobian.<locals>.<lambda>  s(    ajj1a&1a&0B)C)CDD rv   )r   r,   rO   rP   rQ   r^   rj  r  s   @@rt   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Erv   c                      t          ddgddgg          } |                                 }|j        dk    sJ t          d          D ]}||         |dz   k    sJ d S Nri   rh   rg   rj   )r   vecrq   r   )r   m_vecr   s      rt   test_vecr    ss    AA  AEEGGE:????1XX ! !Qx1q5     ! !rv   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 )Nri   rg   rh   Fr  r   )r  check_symmetryc                  J    t          ddgg                                          S r  r   vechrz   rv   rt   r   ztest_vech.<locals>.<lambda>       v1vh//4466 rv   c                  P    t          ddgddgg                                          S r  r  rz   rv   rt   r   ztest_vech.<locals>.<lambda>  '    v1v1v&677<<>> rv   c                  J    t          ddgg                                          S r  r  rz   rv   rt   r   ztest_vech.<locals>.<lambda>  r  rv   c                  P    t          ddgddgg                                          S r  r  rz   rv   rt   r   ztest_vech.<locals>.<lambda>  r  rv   )	r   r  rq   r   rO   rP   r^   rW   r  )r   m_vechr   s      rt   	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
:>>?????rv   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 )Nro   ri   rg   rh   c                  "    t                     S r   )r*   r   s   rt   r   ztest_diag.<locals>.<lambda>  s    tAww rv   F)strict)r*   r   r^   r  r   s   @rt   	test_diagr    s}    			??fYYY//////	
AsA
:'''%   F999$5$5555555rv   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 )	Nri   rg   rh   T)try_block_diagr  )r  rl  rk  )r   rO   rP   rQ   r*   r  )rJ   rK   rL   r   s       rt   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rv   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 )Nrh   r   rH   rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    uQ|| rv   c                  &    t          dddd          S Nri   rg   rh   rj   r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    eAq!Q// rv   rh   c                       t          d          S N      @r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    uRyy rv   c                       t          d          S r  r.   rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    s2ww rv   rj   c                       t          d          S r   r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    fQii rv   c                  "    t          dd          S r  r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    fQll rv   c                  &    t          ddgg          S r  r  rz   rv   rt   r   z$test_creation_args.<locals>.<lambda>  s    vq1#h// rv   N)r^   r  rj  rH   rh  r   r.   r4   rz   rv   rt   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0rv   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 )Nrg   r  Fr  r  ri   rh   )	ri   r   r   r   rg   r   r   r   rh   ))rk   r   r[  r}   )rk   r   r   )r   rl   r   r   )r   is_diagonalr   r*   rH   rO   rP   r-   r   s    rt   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2rv   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 )Nri   rg   rh   rq  ri   rq  ri  rh   r   c                  ,                                      S r   r  r   s   rt   r   z&test_diagonalization.<locals>.<lambda> 	       rv   r  )ri   r   r   rh   r  )	ri   rg   r   r   rh   r   rg   r   rg   r  r   )r   ri   r   r   Tc                  .                          d          S )NTr  r   s   rt   r   z&test_diagonalization.<locals>.<lambda>,	  s    d 3 3 rv   r   ri   r   r   c                  ,                                      S r   r  r   s   rt   r   z&test_diagonalization.<locals>.<lambda>4	       rv   )	rq  ri   rq  ri  rh   r   rg   r   rj   c                  ,                                      S r   r  r   s   rt   r   z&test_diagonalization.<locals>.<lambda>8	  r  rv   za b c d)r   r   r  r   r^   rV   r*   r  r.   r  as_numer_denomr  rU   rC   )r  r   r   rJ   rK   rL   rM   r   s          @rt   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>>       rv   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   ri   Tr   Fc                  "      j                     S r   r  r  s   rt   r   z"test_issue_15887.<locals>.<lambda>K	  s     rv   )r   r  r  r^   rU   r  s   @rt   test_issue_15887r%  A	  s    QFQF+,,A1  D((((AdG1  E))))QFQF+,,AAMOOOAdG
;////00000rv   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 )Nrh   rg   r  c                  ,                                      S r   )r  r   s   rt   r   z"test_jordan_form.<locals>.<lambda>Q	  r  rv   )	r   r  rl   r   ir   rz  ir%  )	r   r   r   r   ri   r   r   r   ri   ri   	r   ri   r   r   rj   r   r   ri   rg   )	rg   ri   r   r   rg   r   r   r   rg   )	rg   rl   ri   ri   r   ri   rg   r  )	r   ri   r   r   r   r   r   r   r   )	rj   r   rg   rk   rp  rh   rl   rj   )	r   ri   r   r   r   r   r   r   ri   rj   )rl   rk   r   rq  rq  r   rh   rh   rg   ri   r   rq  r   ri   rk   rk   )rg   ri   r   r   r   rg   r   r   r   r   rg   ri   r   r   r   rg   )rl   rg   r  rq  rg   r   rl   rg   r   r+  r  r   r   rh   rj   )r   r   r   r   r   rg   ri   r   r   r   rg   r   r   r   r   rg   )rk   rj   rg   ri   r   ri   r   r   r   r   rh   r   ri   ri   r   rg   )ri   r   r   r   r   rg   r   r   r   r   rj   ri   r   r   r   rj   z1.0n   )	precisionz2.0z3.14159265358979323846264338327z4.0)
r   r^   rV   r  r  r  r   r.  r"  _prec)Jmustr  r  termr   s       @rt   test_jordan_formr1  N	  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"" 	%:$$$$% %rv   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)rg   rj   ri   r   )r   rg   r   ri   )r   r   rg   rj   )r   r   r   rg   rg   rj   ri   r   )r   r   r  r?   r  )r   pqJmust1Jmust2r  r  s          rt   #test_jordan_form_complex_issue_9274r7  	  s-               " 	# 	#A 	
AaCA	AaCAaAq\Aq\Aq\Aq\# $ $F aAq\Aq\Aq\Aq\# $ $F ==??DAq;;!v++++AaCK  A%%%%%%rv   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      rt   test_issue_10220r9  	  s     	 	A ==??DAq$$$& ' ' ' ' ' ' $$$$	& ' ' ' ' ' ' ' 'rv   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   rg   ri   rg   r   r   ri   r  )r   r  r-   r   r"   )r   r  r  s      rt   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!	        rv   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_wrg   zZZ(K_i,K_w,UA)r  ri   rh   r   rl   )
rC   r   r  rO   r   r  r   genas_exprrw  )UAK_iK_wr   r  r3  s         rt   test_Matrix_berkowitz_charpolyrB  	  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3rv   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lamdari   rh   rg   r   )r$   r   r  _eval_matrix_exp_jblockr,   r   r   s     rt   test_exp_jordan_blockrG  	  s    wAAq!!A$$&&&3q66(*<*<<<<<Aq!!A$$&&VVSVVSVVAX&AA3q66N 	 	     rv   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 )	Nrh   rj   r   r   r   rk   ri   r   )r   r,   r   r)   r@   )r   m_exps     rt   test_exprJ  	  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Krv   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 )NrD  ri   rj   r   rg   rh   r   r   r   r  c                  ,                                      S r   )r1   r   s   rt   r   ztest_log.<locals>.<lambda>
  s     rv   )r$   r   r  _eval_matrix_log_jblockr1   r^   rU   rF  s    @rt   test_logrN  
  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
 ;(((((rv   c            	          t          d          } t          dd| t          |           dz  t          |           dz  z   t          j        g          }t          |          \  }}}}|t          j        k    sJ d S )NrO   rh   ri   rg   )r$   r   r)   r@   r"   r   rT   rO   columnpivot_offset	pivot_valpivot_assumed_nonzero
simplifieds         rt   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1rV  
  st     	sAAq1c!ffai#a&&!)3QV<==F$V,, ?L)2Jrv   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 )NrO   rh   ri   rg   simpfunc)r$   r   r)   r@   rT   rZ   rP  s         rt   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2rZ  +
  s     	sAAqVVQYs1vvqy(A-VVQYs1vvqy(*+ +F
 	%Vi@@@ ?L)2J>>>>>>rv   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 )NrO   rh   ri   rg   rX  r   )r$   r   r)   r@   rT   rZ   lenrP  s         rt   +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      rv   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  rz   rv   rt   r   ztest_errors.<locals>.<lambda>O
  s    v1vsm44 rv   c                  2    t          ddgg          d         S )Nri   rg   )g333333?rk   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>P
      v1vh//7 rv   c                  2    t          ddgg          d         S )Nri   rg   )ri   g@r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>Q
  ra  rv   c                  &    t          ddd          S )Nrh   rj   T)rL   rB  )r7   rz   rv   rt   r   ztest_errors.<locals>.<lambda>R
  s    z!qDAAA rv   c                  L    t          ddg                              dd          S )Nri   rg   rj   rl   )r   r0  rz   rv   rt   r   ztest_errors.<locals>.<lambda>S
  s     vq!f~~55a;; rv   c                  v    t          ddgddgg                              ddgt          ddg                    S rx   )r   copyin_matrixrz   rv   rt   r   ztest_errors.<locals>.<lambda>U
  s9    AA'((661vvq!f~~NN rv   c                  p    t          ddgddgg                              ddgt                                S rx   )r   copyin_listr-  rz   rv   rt   r   ztest_errors.<locals>.<lambda>V
  s=    fq!fq!f%566BBADuu  rv   c                  P    t          g dg dg                                          S )Nro   )rg   rh   r   r   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>X
  s'    III0F)G)G)K)K)M)M rv   c                  t    t          ddddg                              t          ddgddgg                    S r	  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>Z
  s9    q!aV$$--fq!fq!f5E.F.FGG rv   c                  p    t          ddg                              t          ddgddgg                    S r	  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>\
  s3    FAq6NN33FQFQF;K4L4LMM rv   c                  p    t          dg                              dt          ddgddgg                    S r	  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>]
  D    vqc{{55a!B1vA : :     rv   c                  p    t          dg                              dt          ddgddgg                    S r	  )r   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>_
  rn  rv   c                  H    t          ddg                                          S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>a
  s    A)=)=)?)? rv   c                  H    t          dg                              d          S r  )r   r7  rz   rv   rt   r   ztest_errors.<locals>.<lambda>b
  s    faSkk33A66 rv   c                  T    t          ddgddgg                              dd          S Nri   rg   rh   rj   rk   )r   minorrz   rv   rt   r   ztest_errors.<locals>.<lambda>c
  s+    v1v1v&677==aCC rv   c                  T    t          ddgddgg                              dd          S rs  )r   minor_submatrixrz   rv   rt   r   ztest_errors.<locals>.<lambda>d
  s+    v1v1v&677GG1MM rv   c                  J    t          g d                              d          S Nro   ri   r   crossrz   rv   rt   r   ztest_errors.<locals>.<lambda>e
  s     fYYY//55a88 rv   c                  J    t          g d                              d          S rx  r   dotrz   rv   rt   r   ztest_errors.<locals>.<lambda>f
  s     fYYY//33A66 rv   c                  h    t          g d                              t          ddg                    S )Nro   ri   rg   r|  rz   rv   rt   r   ztest_errors.<locals>.<lambda>g
  s*    viii0044VQF^^DD rv   c                  J    t          ddg                              g           S r  r|  rz   rv   rt   r   ztest_errors.<locals>.<lambda>h
  s    vq!f~~11"55 rv   c                  J    t          ddg                              d          S )Nri   rg   rJ   r|  rz   rv   rt   r   ztest_errors.<locals>.<lambda>i
  s    faVnn0055 rv   c                  N    t          ddg                              g d          S )Nri   rg   ro   r|  rz   rv   rt   r   ztest_errors.<locals>.<lambda>j
  s"    vq!f~~11)))<< rv   c                  H    t          g d                                          S )Nro   )r   r,   rz   rv   rt   r   ztest_errors.<locals>.<lambda>k
  s    			):):)>)>)@)@ rv   c                  P    t          ddgddgg                                          S r	  )r   
normalizedrz   rv   rt   r   ztest_errors.<locals>.<lambda>l
  '    v1v1v&677BBDD rv   c                  L    t          ddg                              d          S )Nri   rg   znot a methodrk  rj  rz   rv   rt   r   ztest_errors.<locals>.<lambda>m
  s!    vq!f~~111HH rv   c                  H    t          ddg                                          S r  r   
inverse_GErz   rv   rt   r   ztest_errors.<locals>.<lambda>n
      A)B)B)D)D rv   c                  P    t          ddgddgg                                          S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>o
  r  rv   c                  H    t          ddg                                          S r  r   inverse_ADJrz   rv   rt   r   ztest_errors.<locals>.<lambda>p
  s    A)C)C)E)E rv   c                  P    t          ddgddgg                                          S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>q
  s'    v1v1v&677CCEE rv   c                  H    t          ddg                                          S r  )r   
inverse_LUrz   rv   rt   r   ztest_errors.<locals>.<lambda>r
  r  rv   c                  H    t          ddg                                          S r  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>s
  s    A)D)D)F)F rv   c                  H    t          ddg                                          S r  r   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>t
  s    A););)=)= rv   c                  T    t          ddgddgg                              d          S )Nri   rg   rh   rj   zNot a real methodrk  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>v
  s-    AA'((,,4G,HH rv   c                  `    t          g dg dg dg dg                              d          S )Nr  r  r~  r+  zNot functionr  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>x
  sC    lll)))+ , ,,/C>C,J,J rv   c                  `    t          g dg dg dg dg                              d          S )Nr  r  r~  r+  Fr  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>{
  sC    lll)))+ , ,,/C5C,A,A rv   c                  n    t          t          ddgddgg          t          ddgddgg                    S r	  r/   r   rz   rv   rt   r   ztest_errors.<locals>.<lambda>~
  s:    AA/00&1a&1a&9I2J2JKK rv   c                  H    t          t          ddgddgg          g           S r	  r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>
  s%    wv1v1v.>'?'?DD rv   c                  B    t          t          d          dz  d          S )NrO   rg   rJ   )r/   r$   rz   rv   rt   r   ztest_errors.<locals>.<lambda>
  s    wvc{{A~s;; rv   c                  ,    t          d          d         S )Nrh   )rk   rg   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>
      s1vvd| rv   c                  ,    t          d          d         S )Nrh   )rg   rk   r  rz   rv   rt   r   ztest_errors.<locals>.<lambda>
  r  rv   r*  c                  .                          d          S )Nzmethod=LU_decomposition())r  r5  s   rt   r   ztest_errors.<locals>.<lambda>
  s    quu%@AA rv   )r   r   r   ro   rg   rh   rj   r   c                  0                          d          S )Ng@)r   r6  Vs   rt   r   ztest_errors.<locals>.<lambda>
  s    q||C33 rv   c                  0                          d          S )Ng)r   r  s   rt   r   ztest_errors.<locals>.<lambda>
  s    q||D!44 rv   )r^   r  r   rW   rj  rV   r   r  s   @@rt   test_errorsr  N
  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5rv   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   ri   rg   c                     dS r6  rz   r   s     rt   r   ztest_len.<locals>.<lambda>
  s     rv   c                     dS r6  rz   r   s     rt   r   ztest_len.<locals>.<lambda>
  s    a rv   r   r   rl   )r\  r   rz   rv   rt   test_lenr  
  sY   vxx==Av1vh  CaSz(:(:$;$;@@@@q@@@@@@vaNN++,,F1a(())/ / / /-./ / / / / /vyyy))),--..!33331#;;&1#--''''xx88vbzz!!!!!!rv   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 )Nri   rj   rg   r   rk   rh   )r   rO   rP   r0   )r   r   s     rt   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8rv   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 )Nri   rj   rg   r   rk   r   r   r   )r   r   r   Fr9  )	r   rO   rP   r"  r+   r  r  r   r\   )r   A_imms     rt   	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Nrv   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 )
Nri   r   rg   )rg   rg   ri   rg  rh   r   r  c                 T    g | ]#fd t           t          t          fD             $S )c                 `    g | ]*}                     |                                         +S rz   )r+   )r
  r   fxyzr   s     rt   r  z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>
  s2    :c:c:cTU499Q<<;L;LQ;O;O:c:c:crv   )rO   rP   rQ   )r
  r   r  s    @rt   r  z'test_diff_by_matrix.<locals>.<listcomp>
  s=    9w9w9whi:c:c:c:c:cZ[]^`aYb:c:c:c9w9w9wrv   )r   rO   rP   rQ   rN   r+   r   r  rJ   r   rK   rH   r  r   r@   r,   r)   r   r"  )r   r  r   dBrg  exprresr  s          @rt   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+''''''''rv   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 )Nri   rj   rg   r   rk   c                       j         S r   )nonexistantattributer  s   rt   r   ztest_getattr.<locals>.<lambda>
  s
    1#9 rv   r+   r   r   r   )r   rO   rP   r^   r  getattrr  s   @rt   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Orv   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   ri   )r   r   Fr%  rk   rg   )r   r&  r2  r'  rH   r  s    rt   test_hessenbergr  
  s    			999iii011A    	A    AeH E))))			999iii011A$$$$aA      rv   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 NrQ  r   choleskyrz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s    )@)@)B)B rv   c                  D    t          d                                          S NrQ  )rh   rj   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>      v&677@@BB rv   c                  \    t          dt          z   dfdf                                          S Nrk   r   r~   )r   r   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s'    vAqz6&:;;DDFF rv   c                  D    t          d                                          S Nr  )rk   ri   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  r  rv   c                  H    t          d                              d          S Nr  F	hermitianr  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s     v&677@@5@QQ rv   rk   r   r~   Fr  ri   r  rg   rl   ))r  r   r   )r   r^  r   )r   r   r   r  )rh   rh   r   )r   ri   rh   rj   r   r   r   r  rh   c                  D    t          d                                          S r  r#   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s    f)=)=)F)F)H)H rv   c                  D    t          d                                          S r  r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>      |,<==FFHH rv   c                  \    t          dt          z   dfdf                                          S r  )r#   r   r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s'    |a!eQZ,@AAJJLL rv   c                  D    t          d                                          S r  r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  r  rv   c                  H    t          d                              d          S r  r  rz   rv   rt   r   ztest_cholesky.<locals>.<lambda>  s!    |,<==FFQVFWW rv   )r^   rV   r  r   r   r  rA   r2  r  r-   r#   r  s     rt   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Hrv   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 )NrO   Tr+  rg   ri   r   rk   rh   r  r   rj   r   r   	frobeniusfro%   )ri   rg   rq  r%  i  r   iI3 r   alpha)r  rg   r   rq  )r   r   r   g      Y@r   )	ri   rh   r   r   r   r   rh   r   rl   )r$   r   r)   r@   rF   normr   r    r"   r   r5   rj  rG  r.   rP   r6   rA   rN  r   r   rH   r?   r   InfinityNegativeInfinitytrue)rO   r  r   r   r   r   r  r  orderr  r  difr6  rJ   rK   rL   rM   r   s                     rt   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??????rv   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 )NrO   Tr+  rh   r   r}   ri   rg   rg   rh  rm   c              3      K   | ]L}t          d                                                   |                                                    V  MdS )ra  N)r   
epsilon_eqrw  r@  )r
  valMcrO   s     rt   rB  z(test_condition_number.<locals>.<genexpr>  sg       Q QuRyy##BGGAsOO$9$9$;$;<< Q Q Q Q Q Qrv   rk   rg   r   rj   r   )r$   r.   r    condition_numberr   r   r   r   r)   r@   rH  r"   r   r6   )r   r6  r  rO   s     @@rt   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------rv   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)ro   rn   r   ))r   r   r   )rl   rk   rj   )rh   rg   ri   r   )r   r   r   )r   r#   )r   r   r   r   s       rt   test_equalityr    s    011A011A!!!QQQ$<<<<AaaadG||||Avvvv66667777Bwwww 	677A011A6666Avvvvvvrv   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 )Nrh   rj   rk   r   )r   r   g0.++c                 0     | j         dd          j        S )Nr   T)rG  chop)r@  is_zerors   s    rt   r   z!test_normalized.<locals>.<lambda>  s    2D1119 rv   r  )r   r  r    r   s    rt   test_normalizedr    s    1a&>>$$&&AA/001 1 1 1 )))''))VIII->->>>>> 	}}}A<<99   						     rv   c                  ^    t          d           dk    sJ t          d           dk    sJ d S )Nc                  D    t          d                                          S r   r.   print_nonzerorz   rv   rt   r   z$test_print_nonzero.<locals>.<lambda>  s    3q66//11 rv   z[X  ]
[ X ]
[  X]
c                  F    t          d                              d          S )Nrh   re  r  rz   rv   rt   r   z$test_print_nonzero.<locals>.<lambda>  s    3q66//44 rv   z[.  ]
[ . ]
[  .]
)rc   rz   rv   rt   test_print_nonzeror    sX    1122       4455           rv   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 )Nrh   rj   ri   rz  r   rg   rL  )r   r.   rH   r4   r?  r  )r   rQ   rM  r   s       rt   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#~~~~~ rv   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   rh   rj   ri   FrJ   T)nonzero)	r   is_zero_matrixrH   r.   rO   r#   r   r   r$   r  s    rt   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;;;;;;rv   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 )Nrh   ri   rg   r   r   r   r   )r6   r:   r9   r8   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
             rt   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&;&;&=&=======rv   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vectorrj   z	vector[4]rM   c                  ,    t          d          d         S )NrM   r   )r   rz   rv   rt   r   z%test_DeferredVector.<locals>.<lambda>  s    ~c2226 rv   testzDeferredVector('test'))strr   rD   r^   r   reprrz   rv   rt   test_DeferredVectorr    s    ~h''*++{::::>#&&''>#+>+>>>>>
:66777~c""##s****v&&''+CCCCCCCrv   c                  B    t          t          d                    rJ d S )Nr  )rd   r   rz   rv   rt    test_DeferredVector_not_iterabler    s$    s++,,,,,,,rv   c                  2    t          t          d            d S )Nc                  :    t          t          d                    S )Nr  )r   r   rz   rv   rt   r   z,test_DeferredVector_Matrix.<locals>.<lambda>  s    f^C%8%899 rv   )r^   rj  rz   rv   rt   test_DeferredVector_Matrixr    s    
999:::::rv   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 )Nri   rg   rh   rk   r   Tr   )r    r   r   r2  rA   r
   )r  r   r   r  s       rt   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_,,,,,,rv   c                  j    t          g dd          dk    sJ t          g ddd          dk    sJ d S )Nr  ri   r   F)zero)r(   rz   rv   rt   test_casoratianr  &  sK    lllA&&!++++lllAE222a777777rv   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   rh   )r   rh   )r   rH   r  rz   rv   rt   test_zero_dimension_multiplyr   +  s    HHU1a[[ '61111A;;uQ{{"eAqkk1111A;;uQ{{"fhh......rv   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 )Nrg   rj   ri   rh   r   c                       dd d f         S r  rz   r   s   rt   r   z'test_slice_issue_2884.<locals>.<lambda>7  s    qAAAw rv   c                       d         S )Nr  rz   r   s   rt   r   z'test_slice_issue_2884.<locals>.<lambda>8  s    qw rv   )r   r   r2  r^   r   r   s   @rt   test_slice_issue_2884r$  1  s    q!U1XXAQT7fq!fX&&&&&&RU8v1vh''''''QQQT7fq!fX&&(((((QQQU8v1vh'')))))
:'''
:'''''rv   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   rh   r   r~   ri   )rH   r  r   rz   rv   rt   test_slice_issue_3401r&  ;  sc    A;;qqq"u#v----A;;q!!!tq!R 0 0000000rv   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 )Nrh   ri   r   r   rj   r  rm   rk   rl   )ri   rk   rl   +   )ri   r  r(     r}   )r)  ri   r   r  )rH   r   r#   )r  s    rt   test_copyinr*  @  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''''''''rv   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 )Nri   rg   r   )r   c                  P    t          ddgddgg                                          S r  rj  rz   rv   rt   r   z'test_invertible_check.<locals>.<lambda>[  s'    v1v1v&677;;== rv   )r   r   r   r   rh   r  c                  0                          d          S )Nr  rk  r  r   s   rt   r   z'test_invertible_check.<locals>.<lambda>f  s    quuEu22 rv   c                  0                          d          S )Nr  rk  r.  r   s   rt   r   z'test_invertible_check.<locals>.<lambda>g      quuDu11 rv   c                  0                          d          S )Nr  rk  r.  r   s   rt   r   z'test_invertible_check.<locals>.<lambda>h  r0  rv   )	r   r  r^   r  rO   r\  rp   r.   r>   r   s   @rt   test_invertible_checkr2  W  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2rv   c                      t          d          \  } }| |z  }|                    | t          g d                    t          g d          |z  k    sJ d S )Nzx, y)rh   rk   rh   )rC   rw  r   )rO   rP   r   s      rt   test_issue_3959r4  k  s\    6??DAq	!A66!VIII&&''6)))+<+<Q+>>>>>>>rv   c                  V    t          t          ddgddgg                    dk    sJ d S )Nri   rg   rh   rj   zMatrix([[1, 2], [3, 4]]))r  r   rz   rv   rt   test_issue_5964r6  q  s7    v1v1v&''((,FFFFFFFrv   c                      t          d          \  } }t          t          | d|z  g|dz  | dz   gg                    dk    sJ d S )Nr  rg   rh   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))rC   rB   r   r  s     rt   test_issue_7604r8  u  s^    5>>DAqAaC1a4Q-0112234 4 4 4 4 4rv   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 )	Nrh   r   ri   )r}   rm   r  rg   rl   )r}   rm   )r}   rm   r  r~   r  )r.   is_Identityr  rH   r4   r   r#   r   rz   rv   rt   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[[[[[[rv   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 )Nri   rh   r  ro   r&  rg   r   Fr  Tr%  physicsr  conjugate_conventionrj   rk   rl   rightr   left)r?  c                  n    t          ddg                              t          ddg          dd          S )Nri   rg   rh   rj   Tr  r>  r|  rz   rv   rt   r   ztest_dot.<locals>.<lambda>  s0    vq!f~~11&!Q..Dgm1nn rv   )r4   r}  r   r   r^   r  rz   rv   rt   test_dotrC    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orv   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   rh   )rC   r   dualequalsr.   rH   )B_xB_yB_zE_xE_yE_zrT  Fds           rt   	test_dualrN    sL   #*!$. $. $. Cc3ScC 
!cC4 
tC 
cTa 	 	 	A 
sdSD3$	S3$	sdq3	sSDQ	 
 
B 6688??2q66;;==a)))))6688==??!!1"%%%%%%%rv   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 )Nri   rg   Frh   r   Tr  c                     | S r   rz   rs   s    rt   r   z%test_anti_symmetric.<locals>.<lambda>  r  rv   rn  r}   )r   r  rO   rP   r-   r   s    rt   test_anti_symmetricrQ    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))))))rv   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)rQ  rn  Tr  )r  sort)r   r  r2  r.   rq   r  )r   r  r   s      rt   #test_normalize_sort_diogonalizationrT    s      A==4=((DAqQS5ACE((((S[[((((((==4d=33DAqQS5ACE((((S[[((((((Q3quuww;!rv   c                  2    t          t          d            d S )Nc                  F    t          g dt          ddg           g          S )Nro   r   ri   r  rz   rv   rt   r   z!test_issue_5321.<locals>.<lambda>  s#    vyyy&Ar2B2B&CDD rv   )r^   r  rz   rv   rt   test_issue_5321rW    s    
:DDEEEEErv   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 )Nrg   )ri   r   rg   r   )r   ri   r   rg   ri   r   )r   r   r.   r   r#   rL  s    rt   test_issue_5320rY    s+   =Q3q66**f6 / /     =Q3q66**f	
A	
A	
A	
A	6 / /     C::cc#a&&kk33qQx==11V= 6 6      rv   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   rD   r   r   )r   AIms     rt   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6rv   c                     g d} g d}t          g d          }|j        }fd}t          D ] |           } |          } ||                    |          |            ||                    |j                  |            ||j                            |j                  |            ||j                            |          |           t	          t
          d            d S )Nro   r   )r   rj   r   c                 B    || k    sJ t          |           k    sJ d S r   )r  )r6  r{  rM  s     rt   r  ztest_cross.<locals>.test  s'    axxxxAww#~~~~~~rv   c                  p    t          ddddg                              t          ddddg                    S r  ry  rz   rv   rt   r   ztest_cross.<locals>.<lambda>  s8    q!aV""6!QA#7#788 rv   )r   r2  r?  rz  r^   rW   )rJ   rK   r   r   r  r   r   rM  s          @rt   
test_crossr`    s   		A		A


C
%C         CFFCFFQWWQZZQWWQS\\3QSYYqs^^S!!!QSYYq\\3
: 9 9 : : : : :rv   c                     t          t          t          t          g          } t          t          t
          t          g          }|                                 |z  |                     |          k    sJ |                                 	                                sJ |                                 
                                | k    sJ d S r   )r   rO   rP   rQ   rJ   rK   rL   hatrz  r  vee)v1v2s     rt   test_hat_veerf    s    	Aq			B	Aq			B6688b=BHHRLL((((6688%%'''''6688<<>>Rrv   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   )rM  r  s     rt   	test_hashrj    s      5 5WWQZZ$1vv{{quuww#''!**44444 4 4cggajj(3333334 4rv   c                      dt           gddgg} t          ddgt            dgg          }t          D ]%}| ||                                           k    sJ &d S Nr   ri   )r   r   r?  adjoint)r  r{  rM  s      rt   test_adjointrn  
  sq    q6Aq6
C
1a&A2q'"
#
#C ) )cc#hh&&((((((() )rv   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   rO   rk  r"   r   NegativeOner$   r   s    rt   
test_atomsrq    ss    AA!G%&&A7799qttAM155555776??qc!!!!!!rv   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RDrk  r%  h   i  rh   rq  rk   )ri   r   r   )r   r)     EDr   )compi_ib,  i  ij  c              3   ~   K   | ]7\  }} |                                 |                                           V  8d S r   rF  )r
  r   r   rw  s      rt   rB  ztest_pinv.<locals>.<genexpr>>  sW       
 
Aq 	QSSUUACCEE
 
 
 
 
 
rv   )r   rJ   rK   rL   rM   r?   pinvr  r4  sympy.core.numbersrw  rH  r  rw  )
A1Asr   A_pinvAApApAr4  wrepsrw  s
            @rt   	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
 
 
 
 
 
 
 
 
 
rv   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   ri  rR  r   )>   `   U   r  r,  r   )E   8   r)  rj   6   r   )r   r  [   )   rR  r   )r   rE  r   rp  Z   r   )r   r   r   r   r   r   rv  rk  c                     |                      t                    }d |D             }| |z
                      |                                          }t	          d |D                       S )Nc                 8    i | ]}||                                 S rz   r?  )r
  r  s     rt   r  zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>c  s"    <<<qa<<<rv   c              3   <   K   | ]}t          |          d k     V  dS )g|=Nre  )r
  r   s     rt   rB  zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>e  s,      ;;!s1vv~;;;;;;rv   )rk  r!   r  r@  rH  )r   r   rootofsrootofs_approxdiff_approxs        rt   allclosezEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclosea  sf    hhv&&G<<G<<<N7,,^<<BBDDK;;{;;;;;;rv   )r   ry  r4  )r|  r   r}  r~  r  r  s         rt   3test_pinv_rank_deficient_when_diagonalization_failsr  D  s    
 	###############  	! 	!
B  $ $t$$&jqju||||	< 	< 	< xs######-$ $rv   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 rl  )r4   r   rz   rv   rt   test_issue_7201r  j  sl    1::Q

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

"fQ2&6&6666666rv   c                      t           t          t          t          fD ]'}  | t          gdgg          j        t          hk    sJ (d S r6  )r   r   r   r#   rO   free_symbolsr5  s    rt   test_free_symbolsr  o  sN    3V\I 1 1q1#s}})aS000001 1rv   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	          g           k    sJ dS )zSee issue 7465.r   r_  ra  ro   rn   c                  P    t            ddgddggddgddggg                    S )	Nri   rg   rh   rj   rk   rl   r   r   r  r  s   rt   r   z#test_from_ndarray.<locals>.<lambda>  s8    uu1v1v.!Q!Q0@ABBCC rv   ri   rg   rh   rj   N)
rd  r_  rg  r_   r   rO   rP   rQ   r^   NotImplementedErrorr  s   @rt   test_from_ndarrayr  t  s/   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())VBZZ777777s   
 &&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 matricesri   rg   rh   rj   r  )
sympy.matrices.commonr  rd  r_  r  rg  r_   rr   r]   PendingDeprecationWarning)r  r_  r  r   s       rt   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 matricesri   rg   rh   rj         @)ra  rb  r  r  )r  r  mpmathr  rg  r_   rr   )r  r  r   s      rt   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 matricesri   rg   rh   rj   r  )r  r  scipy.sparser  rg  r_   rr   )r  r  r   s      rt   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 )Nri   rg   r}   Fr   r~   r  r  s    rt   test_hermitianr    s    A!Q !!A>cAdG>U""""AdG>!!!gaiAdG>U""""""rv   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 )Nro   r  r   ri   r   )rk   rl   r   r   r   c                  .                          d          S rs  r   r  s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r   rv   c                  $      j         d          S Nrv  r   r   s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>      yqy~~ rv   rh   rg   rj   rk   c                  .                          d          S rs  r   r  s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r   rv   c                  $      j         d          S r  r   r  s   rt   r   z+test_issue_9457_9467_9876.<locals>.<lambda>  r  rv   )r   r   r^   r   r   )r6  rX  Or  r   s      @@rt   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
:----.....rv   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 brg   r   )rC   r.   r   rQ   )rO   rP   rJ   rK   r6  r   s         rt   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0rv   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   rl   rh   r   r   ri   rg   rh   rj   joinr  )r   r2  r  id)	r6  rJ   rK   rL   opsr   oprg  news	            rt   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 1rv   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 )Nro   rn   r   r   )TTFri   rg   rj   rk   r   r   )TFF)TFT)FFFrh   r   )FTF)r   r   r  s    rt   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     rv   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   rk   rg   ri   rh   r*  rj   rq  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   rA   r  r   r?   r  rH   rC   )r   axaybxbycxcydxdyexeyt0t1s                rt   !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======rv   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   )ra  r   rw  )r   ra  ra  V瞯<)q7K<ra  rj   )rc  r   r   r   )r  ra  r  )rc                 @)r  r  ra  )r   rc  r  )ra  r  g      )r   r  r  r  )mmm_mixedm_floatm_invs       rt   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1rv   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<re  rs   s    rt   r   z*test_iszero_substitution.<locals>.<lambda>/  s    Q rv   r  r   )ra  r   g4iҤIӿr   )r   ra  glٲer   r  r  r  N)r   r  r  )r   m_rref	m_correctm_diffs       rt   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    #;!rv   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%  -   rh   r+  rg   rn  rq  ri   c                 B    t           | j                              dk     S )Ng#B;)rN  rG  rs   s    rt   r   z"test_issue_11238.<locals>.<lambda>E  s    #cacee**u$ rv   T)r?   r  )	sympy.geometry.pointr  rE   r6   r    rA   r   r?   r  )
r  xxyyp1p2p0r   r   r   Zs
             rt   test_issue_11238r  7  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4rv   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 )Nrg   r  )r   r"   ImaginaryUnitr?  as_real_imagrr   )r   r   r   klsrJ   rK   s         rt   test_as_real_imagr  K  s    	!III		B	AO	B	bB # #c"gg""$$!Aww$r((""""Aww$r(("""""# #rv   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 )Nrh   r(  ri   rg   r   )rg   ri   r   rg   )r   jordan_cells)r   r  Jcellss      rt   test_deprecatedr  V  s}    
 	q!22233A  IAv!9q!aS))))))!9q!\\\22222222rv   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   ri   rg   )r   ri  r)  rh   )rg   ri   rg   rj   )rg   r   ri   )sympy.core.modr  r   )r  r   r   s      rt   test_issue_14489r  a  s    """"""zzzA}}}A3q!99yyy))))))3q!99yyy))))))))rv   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  ra  ri   rg   rh   rj   )dtypefloat64)rd  r_  rg  r_   r   floatr  name)r_  r6  s     rt   test_issue_14943r	  j  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   ri   rJ   r}   r   zm[0, 0] > 0)r   r$   r  )r   rJ   s     rt   test_case_6913r  u  sH    S!QAsA	$	Aq66]""""""rv   c                      t          ddd          } t          d          }|                     |          || ik    sJ d S )Nr   rh   rJ   )r   r&   match)r   rJ   s     rt   test_issue_11948r  |  sC    S!QAS		A771::!Qrv   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 )Nri   r   rg   )r   r   r  r"   QRdecompositionr4  r.   )r  rE  r   r  s       rt   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######rv   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 )NrJ   rh   ri   rK   r}   r   )r   r   r}  r+   )rJ   rK   rL   rM   r   s        rt   test_issue_8207r    s    |CA&&''A|CA&&''AaAQ$AQ$A$<<<<666666rv   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   )nthrootri   rg   rh   rl   rj   c                  v    t          d                              t          t                    t                    S r   )rH   analytic_funcr1   rO   rz   rv   rt   r   ztest_func.<locals>.<lambda>  s"    a 6 6s1vvq A A rv   c                  n     t           z                      t          t                     t                     S r   )rO   r  r1   r  s   rt   r   ztest_func.<locals>.<lambda>  s!    1 3 3CFFA > > rv   )r   r   r   rh   )r   ri   r   r   )r   r   r   ri   c                  ^                          t          t                    t                    S r   )r  rA   rO   r  s   rt   r   ztest_func.<locals>.<lambda>  s    Q ; ; rv   r  rz  r  )rh   r  rj   )r   r   r   )r   rk   r   rX  )ri   rg   r   r   )r   ri   rh   r   )r   r   ri   rh   )r   rg   ri   rl   )r   r   ri   rg   )r   r   r   rh   r  )sympy.simplify.simplifyr  r   r  r@   rO   rN   r6   r)   rA   r^   r  r,   r?   r-   )r  r   s    @rt   	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Hrv   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  )rY   stater   r   s    rt   rg  ztest_issue_19809.<locals>.f  s3    !'4////QC5MMEtrv   T)r[   
concurrentfuturesThreadPoolExecutorsubmitresult)rg  executorfutures      rt   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 rl  )r   rO   rP   r0   r"   r   r5  s    rt   test_issue_23276r(    si    1vAQAq	Aq!9--	
	
9 2 2      rv   (R  concurrent.futuresr  rH  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   r  rJ   rK   rL   rM   rN   rO   rP   rQ   sympy.core.kindrR   rS   sympy.matrices.determinantrT   sympy.matrices.exceptionsrU   rV   rW   sympy.matrices.kindrX   sympy.matrices.utilitiesrY   rZ   r[   $sympy.tensor.array.array_derivativesr\   sympy.testing.pytestr]   r^   r_   r`   ra   rb   sympy.utilities.iterablesrc   rd   importlib.metadatare   r?  r  rh  ru   r{   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r  r  r!  r(  r/  r7  r<  rI  rY  r]  rl  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@  rG  rI  rL  rO  rU  rY  rc  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r
  r  r  r  r!  r(  r-  r2  r8  r;  r>  rL  r^  rr  rv  r|  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r"  r%  r1  r7  r9  r;  rB  rG  rJ  rN  rV  rZ  r]  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r$  r&  r*  r2  r4  r6  r8  r;  rC  rN  rQ  rT  rW  rY  r\  r`  rf  rj  rn  rq  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r	  r  r  r  r  r  r&  r(  rz   rv   rt   <module>r5     s5        $ $ $ $ $ $
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( 
( - , , , , , , , , , , , , , , , , , , , 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0L2 L2 L2^  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
8 8 8&# # #"	+ 	+ 	+	# 	# 	## # #/ / /:	1 	1 	1	1 	1 	1    "2 2 22  5 5 5(# # #3 3 3* * *9 9 9# # #     $ $ $  I I I< :;;# # <;#    rv   