
    gr                     	   d dl Z d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ d dlBm]Z] d dl^m_Z_m`Z` d dlambZb d dlcmdZdmeZemfZf d dlgmhZh d dlimjZjmkZkmlZlmmZmmnZnmoZo d d lpmqZq d d!lrmsZs d d"ltmuZu d d#lvmwZw d d$lxmyZy d d%lzm{Z{m|Z|m}Z}m~Z~mZmZmZmZ eHeIeFeGfZd d&lmZmZ d d'lmZmZ  eo            5   G d( d)eee          Zddd           n# 1 swxY w Y    eo            5   G d* d+eee          Zddd           n# 1 swxY w Y   d, 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 Zdx 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 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 ekd             Z!d Z"dÄ Z#dĄ Z$dń Z%dƄ Z&eldǄ             Z'dȄ Z(dɄ Z)dʄ Z*d˄ Z+d̄ Z,d̈́ Z-d΄ Z.dτ Z/dЄ Z0dф Z1d҄ Z2dӄ Z3dԄ Z4dՄ Z5dք Z6dׄ Z7d؄ Z8dل Z9dڄ Z:dۄ Z;d܄ Z<d݄ Z=dބ Z>d߄ Z?d Z@ end          d             ZAd ZBd ZCd ZDd ZEd ZFd ZGd ZHd ZId ZJd ZKd ZLd ZMd ZNd ZOd ZPdS )    N)Hashable)Add)Functiondiffexpand)EFloatIIntegerRationalnanoopi)Pow)S)Symbolsymbols)sympify)Abs)explog)MaxMinsqrt)cossintan)	integrate)PolyPurePoly)RootOf)sstr)	FiniteSet)signsimpsimplify)trigsimp)
ShapeErrorMatrixErrorNonSquareMatrixErrorDeferredVector)_find_reasonable_pivot_naive)	_simplify)GramSchmidtImmutableMatrixImmutableSparseMatrixMatrixSparseMatrix
casoratiandiageyehessianmatrix_multiply_elementwiseones
randMatrix	rot_axis1	rot_axis2	rot_axis3	wronskianzerosMutableDenseMatrixImmutableDenseMatrixMatrixSymboldotprodsimprot_ccw_axis1rot_ccw_axis2rot_ccw_axis3)_dotprodsimp_state)TupleWild)KroneckerDelta)flattencaptureiterable)ignore_warnings)raisesXFAILslowskipskip_under_pyodidewarns_deprecated_sympyQ)Array)ArrayDerivative)MatPow)
Quaternion)abcdxyzt)_MinimalMatrix_CastableMatrix)MatrixSubspacesMatrixReductionsc                       e Zd ZdS )SubspaceOnlyMatrixN__name__
__module____qualname__     ^/var/www/html/ai-engine/env/lib/python3.11/site-packages/sympy/matrices/tests/test_matrices.pyrg   rg   C           rm   rg   c                       e Zd ZdS )ReductionsOnlyMatrixNrh   rl   rm   rn   rq   rq   H   ro   rm   rq   c                 &    t          | | d           S )Nc                 (    t          | |k              S N)intijs     rn   <lambda>z eye_Reductions.<locals>.<lambda>M   s    3qAv;; rm   rq   ns    rn   eye_Reductionsr}   L   s    1&>&>???rm   c                 &    t          | | d           S )Nc                     dS Nr   rl   rv   s     rn   ry   z"zeros_Reductions.<locals>.<lambda>Q   s    1 rm   rz   r{   s    rn   zeros_Reductionsr   P   s    1nn555rm   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 )N      )r   r   c              3   B   K   | ]}t          |          t          u V  d S rt   )typeru   .0rw   s     rn   	<genexpr>ztest_args.<locals>.<genexpr>X   s,      (I(IAaC(I(I(I(I(I(Irm   )	enumerateclassesr>   shapeallrowsr   ru   colsflatlisttuplerG   todokdict)r|   clsms      rn   	test_argsr   T   s   G$$ 	+ 	+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*****	+ 	+rm   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 Nr   r   )
r1   r/   r>   rS   _matr   r2   r0   _smatr   )r   r   matsmats       rn   test_deprecated_mat_smatr   a   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 N   r   )r1   r^   r_   r`   )vs    rn   test_divisionr   n   sJ    q!aVAQ3&A!QqSz********rm   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 )	Nr   r   r   r   i)r         r   ir   c                       z   S rt   rl   r   r|   s   rn   ry   ztest_sum.<locals>.<lambda>w   s    q1u rm   )r1   r^   r_   r`   rN   r'   r   s   @@rn   test_sumr   s   s    			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
:}}}}}%%%%%rm   c                      t          dddt          g          } t          dddt          t                    g          }t          |           |k    sJ d S )Nr   r   r   )r1   r^   r   absr   s     rn   test_absr   y   sI    q!b!WAq!aQ[!!Aq66Q;;;;;;rm   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)r   r   r   r   r   )r   r   r   r   r   r   )r1   addrZ   r[   s     rn   test_additionr   ~   s|      	 	A
 	  	 	A
 q5EAE!HH8888AA'7 8 888888888rm   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 )Nr   	   r   r   r      )r   r      r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r      )r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r1   r2   ranger>   extract)MrZ   s     rn   test_fancy_index_matrixr      s5   l#  AaE!HHAaaadG||||AAAw&Ayyy111111Aw&++++++!Q|vyyy)))&<======!Q|q!Q!~----QF|q!q!f~----QF|v1v1v1v&>??????w!||||1aaayFIIIyyy#9::::::AaCyFQFQFQF#;<<<<<<1ayAq!faiL((((CCaCyAa!QiL((((AaE!HH!!!#$IIIIIIIIII0 ) )     KKK FOOOOOO, % %     
 	1AAdGAdGAdG19aVaS!!VCC-	 &
 &
 
 
 
 
 19aVYYY''6IIII3 , ,     19\\\<<<00F	< 5 5      rm   c                     t          d          t          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 	 t          d           | d         dk    sJ | d         dk    sJ | d         dk    sJ | d	         dk    sJ | d
         dk    sJ | d         dk    sJ n# t          $ r Y nw xY w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          d           t          | t                     sJ | d         dk    sJ | d         dk    sJ | d         dk    sJ | d	         dk    sJ n# t          $ r Y nw xY w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 d S )N)r   r   r   r   r   r   r   r   r   r   r   r   r   r   r      r   r   r   z	c = a @ br   c                  $    t                     S rt   )r7   r   s   rn   ry   z%test_multiplication.<locals>.<lambda>   s    :1a@@ rm   r^   r   r   
      z	c = 5 @ b)r1   evalSyntaxErrorr7   multiply_elementwiserN   r'   r   
isinstancer^   r   r   )r\   hc2r   rZ   r[   s       @@rn   test_multiplicationr      s     	 	A 	  	 	A
 	
!AT7a<<<<T7a<<<<T7a<<<<T7a<<<<T7b====T7a<<<<
[ w!||||w!||||w!||||w!||||w"}}}}w!|||||     	$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<<<<	[ !V$$$$$w!||||w#~~~~w#~~~~w!|||||     	Q!R!""A6Q;;;;R1a&!""A6Vc3Z#s455555555s$   ;C 
C,+C,J> >
K
Kc                  (   t          t          d            t          } t          ddgddgg          dz  d d           | d          dz   | d	          dz   | d
          dz   | d          dz  gk    sJ dz  d d          g dk    sJ t          g dg dg dg          dz  d d          g d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z  t	          d          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          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 d+g d,g          d-z  t          g d,g d,g d,g          k    sJ t          t          fd.           t          t          fd/           t          ddgddgg          d-z  t          d0d1gd2d3g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 t          g d*g d+g d+g          d-z  t          g d+g d+g d+g          k    sJ t!          d4d56          t#          z  t$                    sJ t!          d4d5d57          t          t          fd8           t!          d4d5d59          z  t          t'          d          t'          d          t'          d           t'          d          z
  dz   gdt'          d          dt'          d          z
  gg d+g          k    sJ dz   z  t          g d+g d+g d+g          k    sJ t          t          fd:           t          g d+g d;g d<g          d=z  t          g d>g d?g d@g          k    sJ d=z  dz  k    sJ t          g d*g dAg d,g          t!          d4          z                      d                                          dz  k    sJ t          t          fdB           z  dz  z  k    sJ t          g d,g d,g d,g          t!          d4d5d5C          z  k    sJ t!          d4d5d59          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 dDg dEg dFg          dGz  t-          dHdHdH          k    sJ t0          z  t-          dt0          z  dt0          z  dt0          z            k    sJ t          g d*g d+g d+g          t          t          fdI           t          t          fdJ           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 )KNc                  &    t          d          dz  S Nr   r   r1   rl   rm   rn   ry   ztest_power.<locals>.<lambda>  s    ): rm   r   r   r   r   r   ir      3   i)i  i  i,*  i7  )r   r   r   )r   r   r   )r      r   )	i"  i     i  i  ip  i  i  i  r   r   d   r   i r   r   r      !      0   9   )r   r   r   r   g      ?r{   i   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   c                  H                          t          d                    S Nr   )_matrix_pow_by_jordan_blocksr   r   s   rn   ry   ztest_power.<locals>.<lambda>/  s     > >quu E E rm   c                  l    t          ddgddgg                              t          d                    S )Nr   r   )r1   r   r   rl   rm   rn   ry   ztest_power.<locals>.<lambda>2  s3    AA'7 8 8 U UVWX[V\V\ ] ] rm   r   r   r   r   r   r   r         $@c                       dz  S N @rl   As   rn   ry   ztest_power.<locals>.<lambda>5      q#v rm   c                  *     t          dd          z  S r   r   r   s   rn   ry   ztest_power.<locals>.<lambda>6      q(1a..0 rm   ihiO<iv0ir|   T)integer)r   negativec                       z  S rt   rl   )r   r|   s   rn   ry   ztest_power.<locals>.<lambda>@  s    q!t rm   )r   nonnegativec                  *     t          dd          z  S r   r   r   s   rn   ry   ztest_power.<locals>.<lambda>G  r   rm   )r   r   r   )r   r   r   g      @)   H   Y   )i#        )i<  i  iI  r   r   r   c                  T                          d                                          S )N)subsdoit)Anr|   s   rn   ry   ztest_power.<locals>.<lambda>O  s    rwwq"~~2244 rm   )r   positiver   r   r   )r   r   r   r   r   r   r   gd%%@c                       dz  S r   rl   r   s   rn   ry   ztest_power.<locals>.<lambda>^  r   rm   c                       t           z  S rt   r
   r   s   rn   ry   ztest_power.<locals>.<lambda>_  s    q!t rm   )rN   r)   r   r1   r5   r   r   Half	sympy.abcr|   rZ   r[   r   _eval_pow_by_recursionr(   
ValueErrorr   r   rX   rI   r  r  r4   r>   r
   )Rr   r  r   r|   s    @@@@rn   
test_powerr    s   
!:!:;;;AAA  ArE111:!!D''!)QQsVVAXqquuQw#qAAAAAqD!!!92222222			999jjj122AqD!!!9EEEEEEEa43q66>>>>a419999QC5MMS $'1c61111q668s1vv%%%%Aq6Aq6"##WQZZ/6Ar7RH:M3N3NNNNN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Irm   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 )Nr   Tr   )r1   r^   rB   r   r   r   s    rn   $test_issue_17247_expression_blowup_1r  f  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 Nr   T)r1   r^   rB   jordan_forminvr   PJs      rn   $test_issue_17247_expression_blowup_2r  m  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 )Nr   Tr   l                )r1   r^   rB   r  s    rn   $test_issue_17247_expression_blowup_3r  s  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]])r1   r   rB   r  s    rn   $test_issue_17247_expression_blowup_4r!  z  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 )Nr   c                 (    dd| |z   z  t           z  z   S Nr   r   r  rv   s     rn   ry   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>      !rQqSk!m"3 rm   Tr^   r   $   r   EXdomain)r1   rB   charpolyr    r^   r
   r  s    rn   $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 rl   r^   r   s     rn   
<listcomp>z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>      ...aac...rm   @   Tbareissr   r1   r   rB   detr  s    rn   $test_issue_17247_expression_blowup_6r6    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 )Nr   c                 (    dd| |z   z  t           z  z   S r$  r  rv   s     rn   ry   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>  r%  rm   T	berkowitzr   )r1   rB   r5  r  s    rn   $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 rl   r/  r   s     rn   r0  z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>  r1  rm   r2  Tlur   r4  r  s    rn   $test_issue_17247_expression_blowup_8r?    s    q!..5"::...//A	T		    uuT{{a                                   r7  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 rl   r/  r   s     rn   r0  z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>  r1  rm   r2  T)r   r   r   r  r   r&  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r1   r   rB   rrefr  s    rn   $test_issue_17247_expression_blowup_9rG    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 )Nr   c                 (    dd| |z   z  t           z  z   S r$  r  rv   s     rn   ry   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>  r%  rm   Tr   )r1   rB   cofactorr  s    rn   %test_issue_17247_expression_blowup_10rK    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 )Nr   c                 (    dd| |z   z  t           z  z   S r$  r  rv   s     rn   ry   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>  r%  rm   Tr   r'  )r1   rB   cofactor_matrixr  s    rn   %test_issue_17247_expression_blowup_11rO    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 )Nr   c                 (    dd| |z   z  t           z  z   S r$  r  rv   s     rn   ry   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>  r%  rm   Tr   r   r   )r1   rB   	eigenvalsr
   r  s    rn   %test_issue_17247_expression_blowup_12rS    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   r   r   )r   r   r   r   FT)deepnumerrB  )r1   r^   
eigenvectsr   r   )r   evs     rn   %test_issue_17247_expression_blowup_13rY    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 : :      rm   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   r   r   Tr   rE  )r1   r^   rB   echelon_formr  s    rn   %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   r   r   Tr   )r1   r^   rB   rowspacer  s    rn   %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   r   r   T)r1   r^   rB   columnspacer  s    rn   %test_issue_17247_expression_blowup_16rb    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 rl   r/  r   s     rn   r0  z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>
  r1  rm   r2  Tr   r  r   r   r   r   rB  r   rC  r   r&  r   )r1   r   rB   	nullspacer  s    rn   %test_issue_17247_expression_blowup_17rg  	  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 )Nr   r   r   T)r1   r^   rB   is_nilpotentr  s    rn   %test_issue_17247_expression_blowup_18rj    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)r1   r   rB   is_diagonalizabler  s    rn   %test_issue_17247_expression_blowup_19rm    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 )	Nr   r   T)r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r1   r^   rB   diagonalizer  s    rn   %test_issue_17247_expression_blowup_20rr  "  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GEmethodv  [
            [-26194832/3470993 - 31733264*I/3470993, 156352/3470993 + 10325632*I/3470993, 0, -7741283181072/3306971225785 + 2999007604624*I/3306971225785],
            [4408224/3470993 - 9675328*I/3470993, -2422272/3470993 + 1523712*I/3470993, 0, -1824666489984/3306971225785 - 1401091949952*I/3306971225785],
            [-26406945676288/22270005630769 + 10245925485056*I/22270005630769, 7453523312640/22270005630769 + 1601616519168*I/22270005630769, 633088/6416033 - 140288*I/6416033, 872209227109521408/21217636514687010905 + 6066405081802389504*I/21217636514687010905],
            [0, 0, 0, -11328/952745 + 87616*I/952745]]r1   r   rB   r  r  s    rn   %test_issue_17247_expression_blowup_21rz  4      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 )Nrt  TLUrv  rx  ry  r  s    rn   %test_issue_17247_expression_blowup_22r  A  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 )Nrt  TADJrv  rx  )r1   r   rB   r  r   r  s    rn   %test_issue_17247_expression_blowup_23r  N  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 )Nrt  TCHrv  rx  r2   r   rB   r  r1   r  s    rn   %test_issue_17247_expression_blowup_24r  [  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 )Nrt  TLDLrv  rx  r  r  s    rn   %test_issue_17247_expression_blowup_25r  h  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]]Tr   r1   r   rB   rankr  s    rn   %test_issue_17247_expression_blowup_26r  u  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   r   Ta  [
            [    0,  4*x/(x**2 - 2*x + 1), -(-17*x**4 + 12*sqrt(2)*x**4 - 4*sqrt(2)*x**3 + 6*x**3 - 6*x - 4*sqrt(2)*x + 12*sqrt(2) + 17)/(-7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 + 8*x**3 - 2*x**2 + 8*x + 6*sqrt(2)*x - 5*sqrt(2) - 7), -(12*sqrt(2)*x**4 + 17*x**4 - 6*x**3 - 4*sqrt(2)*x**3 - 4*sqrt(2)*x + 6*x - 17 + 12*sqrt(2))/(7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 - 8*x**3 + 2*x**2 - 8*x + 6*sqrt(2)*x - 5*sqrt(2) + 7)],
            [x - 1, x/(x - 1) + 1/(x - 1),                       (-7*x**3 + 5*sqrt(2)*x**3 - x**2 + sqrt(2)*x**2 - sqrt(2)*x - x - 5*sqrt(2) - 7)/(-3*x**3 + 2*sqrt(2)*x**3 - 2*sqrt(2)*x**2 + 3*x**2 + 2*sqrt(2)*x + 3*x - 3 - 2*sqrt(2)),                       (7*x**3 + 5*sqrt(2)*x**3 + x**2 + sqrt(2)*x**2 - sqrt(2)*x + x - 5*sqrt(2) + 7)/(2*sqrt(2)*x**3 + 3*x**3 - 3*x**2 - 2*sqrt(2)*x**2 - 3*x + 2*sqrt(2)*x - 2*sqrt(2) + 3)],
            [    0,                     1,                                                                                            -(-3*x**2 + 2*sqrt(2)*x**2 + 2*x - 3 - 2*sqrt(2))/(-x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x + 1 + sqrt(2)),                                                                                            -(2*sqrt(2)*x**2 + 3*x**2 - 2*x - 2*sqrt(2) + 3)/(x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x - 1 + sqrt(2))],
            [1 - x,                     0,                                                                                                                                                                                               1,                                                                                                                                                                                             1]]a  [
            [0, 1,                       0,                       0],
            [0, 0,                       0,                       0],
            [0, 0, x - sqrt(2)*(x - 1) + 1,                       0],
            [0, 0,                       0, x + sqrt(2)*(x - 1) + 1]])r1   r^   rB   r  r   r   r  s      rn   %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 )Nrt  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)])r1   r   rB   singular_valuesr  s    rn   %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  r  s    rn   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)	r   r   r   r   r   r   r   r   r   r   r   r   rC  re  r  r   r   r   r   r   r   T)	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   rD  )r1   r   rB   rF  r   r  s    rn   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 )Nr      )r1   r   rl   rm   rn   ry   ztest_creation.<locals>.<lambda>  s    vaE"II66 rm   c                  $    t          ddg           S )Nr   r   r   rl   rm   rn   ry   ztest_creation.<locals>.<lambda>  s    vaR00 rm   c                  ,    t          d          d         S r   r   rl   rm   rn   ry   ztest_creation.<locals>.<lambda>  s    vf~~a0 rm   r   r   r   r   r   )r   r   r   r   r   	r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   )r   r   r   r   r   Fevaluater   r   r   r   c                     g | ]}|gS rl   rl   r   s     rn   r0  z!test_creation.<locals>.<listcomp>  s    7I7I7I7I7I7Irm   c                  Z    t          t          d          t          dd          g          S )Nr   r   r   r1   r8   rl   rm   rn   ry   ztest_creation.<locals>.<lambda>  !    vtAwwQ

&;<< rm   c                  Z    t          t          d          t          dd          g          S )Nr   r   r   r  rl   rm   rn   ry   ztest_creation.<locals>.<lambda>  r  rm   )r   r   r   )rN   r  
IndexErrorr1   rS   tolistTr   EmptySetr^   r   r   r   r5   r/   as_immutable
as_mutabler8   rA   )
r   rZ   r   r[   c23c13r\   datr   M2s
             rn   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 )Nr   r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r1   	irregularr8   rl   rm   rn   test_irregular_blockr    s    AtAayy$q))A+tAayy{Qq		!T!AYYq[$q))A+tAayy{< <?E	G @ @     rm   c                  8   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          |           }|                                | k    sJ d S )Nr   r   )	r   Oner  r^   r_   Zeror`   r1   r  )lstr   s     rn   test_tolistr  &  sh    E161Q3'!Q1a41qufac1:M
NCsA88::rm   c                  ~   t          dd                                          t          dd          k    sJ t          dd                                          t          t          dd                    k    sJ t          dd                                          t          t          dd                    k    sJ d S Nr   r   )r>   r  r  r/   rl   rm   rn   test_as_mutabler  ,  s    A;;!!##uQ{{2222A;;##%%q!)E)EEEEEA;;##%%q!)E)EEEEEEErm   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 )Nr   r   r   r   c                     | |z   S rt   rl   rv   s     rn   ry   ztest_slicing.<locals>.<lambda>7  
    1q5 rm   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r      r         r   r   )r   r   r  r   r  )r5   r>   r1   )m0m1m2s      rn   test_slicingr  2  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Crm   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 )
Nr   r   )r   r   r   r   r  r   r   r   r   rp  r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r  r   r   r   r   r   r   r  r   r  r  r      ))r   r   r   r   )r   r   r   r   r  r  )r>   r5   r1   r   s    rn   test_submatrix_assignmentr  @  s   aAa&&Aac1Q3hK & ' ' ' ' ' ' AAbqb"1"fIA;;;;Q<((AaaadG & ' ' ' ' ' ' AhhAaaadGa====MMMAaaadG * + + + + + + 1vAbqb!eH * + + + + + + + +rm   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 )Nr   r   c                     | dz  |z   S Nr   rl   rv   s     rn   ry   ztest_extract.<locals>.<lambda>]  s    !A#' rm   )r   r   r   r   r   r   )r   r   r   r   r   r   r	  )r   r   r   r   r   r  c                  4                          dgdg          S )Nr   r   r   r   s   rn   ry   ztest_extract.<locals>.<lambda>a      qyy!qc22 rm   c                  4                          dgdg          S r  r  r   s   rn   ry   ztest_extract.<locals>.<lambda>b  r  rm   )r1   r   r   rN   r  r   s   @rn   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3rm   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 )Nr   r   r   )	r   r   r   r   r   r   r   r   r   r   c                     | |z   S rt   rl   rv   s     rn   ry   ztest_reshape.<locals>.<lambda>h  r  rm   )r   r   r   r   )r   r   r   r   r   r   ))r   r   r   r   r   r   )r   r   r   r   r   r   )r5   reshaper1   r  r  s     rn   test_reshaper  e  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Orm   c                      t          d          } |                     d           t          d          dz  k    sJ |                     d           t          d          k    sJ d S )Nr   c                     d| z  S Nr   rl   r/  s    rn   ry   z test_applyfunc.<locals>.<lambda>p  s
    !A# rm   r   c                     dS r   rl   r/  s    rn   ry   z test_applyfunc.<locals>.<lambda>q  s    ! rm   )r5   	applyfuncr>   )r  s    rn   test_applyfuncr  n  sa    	QB<<&&#a&&(2222<<$$a000000rm   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 )Nr   r   rZ   Treal)complexr   )r   r   r   r   r   )r   r   r   r   )
r1   r^   r_   r   r   r   r
   r   r   r   )r  r  rZ   s      rn   test_expandr  t  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 @ @      rm   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  )
r1   r   r^   r   r_   refinerU   r  r  r   r  s     rn   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9rm   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 )Nr   )seedr   r      T)r  	symmetric)r  prng)r   r  )r   F      )r  percentr  r   r   r  )minr  r  )r9   copyr%   randomRandomr  r   r   )r   r   rngsizer  
zero_countrw   rx   s           rn   test_randomr     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
	  rm   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 )-Nr   r~  rv  r  r  r  QR)r   r   r   )r   r   r   )r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   BLOCKr   )r   1      )r   G   ^   );      A   c              3   `   K   | ](}t                              |                    u V  )d S rt   r   r  r   sr   r   s     rn   r   ztest_inverse.<locals>.<genexpr>  8      LLtAEE!HH~~$LLLLLLrm   zGE ADJ LU CH LDL QRc              3   `   K   | ](}t                              |                    u V  )d S rt   r  r  s     rn   r   ztest_inverse.<locals>.<genexpr>  r  rm   )r5   r  r1   r   r/   r   splitr0   )r   AinvAAr   r   s      @@rn   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Lrm   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 )Nr   r   r   r   r   r   )r1   r^   r_   jacobianr6   r`   r  )Lsymsfganss        rn   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. '  '             rm   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 )Nr   r   r   r&  r   r:  rv  )r=   r   r^   r   r   r   )w1w2s     rn   test_wronskianr     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      rm   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                              t          t          dz
  t          t          dz
  id	          t          t          dz
  t          dz
  z  g          k    sJ t          D ]D} t          dd
gd
dgg          |                     d                              dd          k    sJ Ed S )Nr   r   r   r   r   r  r   T)simultaneousr   )r1   r^   r  r_   r   r5   r   s    rn   	test_subsr$    s2   Aq6Aq6"##((A..&1a&1a&9I2J2JJJJJAq6AE1:&'',,q"g2w-?@@Q"a!""# # # #Aq6AE1:&'',,q"g2w-?@@Q"a!""# # # #Aq6AE1:&'',,aQ^<<Q"a!""# # # #1Q3%==q!a%AE2FFQQ !!" " " "  A A1v1v&''3771::??1a+@+@@@@@@A Arm   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 )	Nr   r   r   r   r   r  r   r   )r1   r^   xreplacer_   r   r5   r#  s    rn   test_xreplacer'  %  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rm   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 d S )Nr|   r  r   r   )ratio)	r   r   r1   r^   r_   r   r   r%   r   )r|   r  r   eqs       rn   test_simplifyr+  -  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11rm   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)
r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r1   r  	transposer  s    rn   test_transposer.  >  s    ......0 	1 	1A3&QFFFFFFFFFF	% 	& 	& 	& 	& 	& 	& 35A::::3!++--rm   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   r   )r   r   r   r   r   )r1   r
   r  C	conjugateHr  s    rn   test_conjugater3  O  s   Aq			 	 	A 3&1a&a&a&" # # # # # # 3&1qb!*$**& ' ' ' ' ' '3!++--3!#%<<<<3&Aq'2q'q'# $ $ $ $ $ $ $ $rm   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  )r5   Drl   rm   rn   ry   z!test_conj_dirac.<locals>.<lambda>b  s    3q668 rm   r   r   rp  r  r   )rN   AttributeErrorr1   r
   r6  r  s    rn   test_conj_diracr8  a  s    
>++,,,Aq!Aq!Aq! 	 	A
 3&***2A*2r2*2rAr*, - - - - - - - -rm   c                  j    t          g dg dg dg          } |                                 dk    sJ d S )Nr   r   r   r   r   r   )r   r   r   r  r1   tracer  s    rn   
test_tracer>  o  sE    							 	 	A 7799??????rm   c                  b    t          t          ddgdt          dgg          } | j        dk    sJ d S )Nr   r  )r1   r^   r_   r   r  s    rn   
test_shaper@  v  s@    Aq	Aq	 	 	A7frm   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   r   c                     | |z   dz   S Nr   rl   )rrx   s     rn   ry   z!test_col_row_op.<locals>.<lambda>  s    QUQY rm   r   r   c                     | t           |z  z   S rt   )r_   )r\   rx   s     rn   ry   z!test_col_row_op.<locals>.<lambda>  s    QAX rm   *   r   r   )r1   r^   r_   row_opcol_oprowcol)r   r1c1s      rn   test_col_row_oprM  |  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rm   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 )
Nr   r   r   r   r   r   r   r   r   r   r   )r1   row_multr  s    rn   test_row_multrQ    sk    ww 	 	AJJqOOOS6R<<<<S6Q;;;;S6R<<<<<<rm   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 )Nr   rO  r   r   r   r   r   r   r   r   r   r   r   r   r   )r1   row_addr  s    rn   test_row_addrV    sy    wwww 	 	A IIa!S6Q;;;;S6Q;;;;S6Q;;;;;;rm   c                  Z   t           d d         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 )Nr   r   r   r   c                     | d|z  z   S r  rl   r   us     rn   ry   z!test_zip_row_op.<locals>.<lambda>      AaC rm   r:  r   r   r   r   r   r   c                     | d|z  z   S r  rl   rY  s     rn   ry   z!test_zip_row_op.<locals>.<lambda>  r[  rm   )r   r   r   )r   r   r   r	  )r   r5   
zip_row_op)r   r   s     rn   test_zip_row_opr_    s	   rr{ & &GGAJJ	Q//000CC""$ % % % % % % GGAJJqL$	Q//000!!CC##% & & & & & & && &rm   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 )Nr   )r   r   r   rl   )r   r   r   )r   rZ   r[   s      rn   test_issue_3950ra    sz    yyyAyyyAyyyARS66666666666666rm   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 rC  rl   selfs    rn   	__index__z)test_issue_3981.<locals>.Index1.__index__      1rm   Nri   rj   rk   rh  rl   rm   rn   Index1rd    #        	 	 	 	 	rm   rk  c                       e Zd Zd ZdS )test_issue_3981.<locals>.Index2c                     dS r  rl   rf  s    rn   rh  z)test_issue_3981.<locals>.Index2.__index__  ri  rm   Nrj  rl   rm   rn   Index2rn    rl  rm   rp  r   r   r   r   rO  r   r   r   r   r   r   )rk  rp  index1index2r   s        rn   test_issue_3981rs    sk                  VXXFVXXFyyyAV9>>>>AfIQ419999			999%&&AVV^!!!!QY<1VQY<1AffnT7a<<<<AaiLT7a<<<<AfaiLT7a<<<<<<rm   c                  @    t          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 )Nr   r   c              3   z   K   | ]5} j                     |         |                                          k    V  6d S rt   evalfr   rw   rZ   s     rn   r   ztest_evalf.<locals>.<genexpr>  s@      >>wqwyy|qtzz||+>>>>>>rm   r   c              3   ~   K   | ]7} j         d           |         |                              d           k    V  8dS r   Nrv  rx  s     rn   r   ztest_evalf.<locals>.<genexpr>  sD      @@!wqwqzz!}!

1-@@@@@@rm   c              3   ~   K   | ]7} j         d           |         |                              d           k    V  8dS rz  r{   rx  s     rn   r   ztest_evalf.<locals>.<genexpr>  sD      88!sqs1vvayAaDFF1II%888888rm   )r1   r   r   r   rZ   s   @rn   
test_evalfr}    s    Q|A>>>>U1XX>>>>>>>>@@@@uQxx@@@@@@@@8888uQxx8888888888rm   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 )NTr  r  Fr   r   r   r   r   r   r   )r1   r^   is_symbolicr|  s    rn   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######rm   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 )Nr   Tr   r   r   Fr   )r1   is_upperr>   r|  s    rn   test_is_upperr    sz    			{A:aS1#A:aA:rm   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 )Nr   Fr   r   r   T)r1   is_lowerr|  s    rn   test_is_lowerr    sZ    			{A:aS1#A:rm   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 )Nr   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r1   ri  r|  s    rn   test_is_nilpotentr    s    q!EEEFFA1>AA  Aq~r

A1>rm   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)r   r   r   r   r   r   r   r   )r>   fillr8   r   r   r   r1   )r|   r   rZ   r[   s       rn   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rm   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   r   )r>   r1   r   r   r|  s    rn   test_empty_zerosr  +  sx    aA====aA6Q;;;;6Q;;;;aA6Q;;;;6Q;;;;;;rm   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 )Nr   r   r   )r   r   r   r   )r1   r^   r_   r   r   r   r   limitr   r   r   r   r|  s    rn   test_issue_3749r  6  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&%( ) ) ) ) ) ) ) )rm   c                      t          d          } |                     dd           dD ]4}|                     |d           |                     d          k    sJ 5d S )	Nr   r   r   )ru  r~  c                     | dk    S r   rl   r/  s    rn   ry   z%test_inv_iszerofunc.<locals>.<lambda>J  s
    a rm   )rw  
iszerofuncr  rv  )r5   col_swapr  )r   rw  s     rn   test_inv_iszerofuncr  F  s{    AAJJq!    uuF/?/?u@@EEE            rm   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   r   r   )
r   r1   r   r   r  r  r5   r   r  r&   )rhophiXYr  r  s         rn   test_jacobian_metricsr  N  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,--------rm   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  r   r   )r   r1   r   r   r  )r  r  r  r  r  s        rn   test_jacobian2r  [  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rm   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 Nr   r   )	r1   r   r^   r_   r`   r   r  r   r   )r  r  rw   rx   X_sliceY_slicer  ks           rn   test_issue_4564r  g  s%   AEAIAEAIAEAI?@@A1ayA1a[[ * *q! 	* 	*AAAAhGAAAhG  ))A6Q;;;;6Q;;;;1XX * *Aw')))))*	** *rm   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 rt   r  r1   r^   r_   r`   r  s   rn   ry   z(test_nonvectorJacobian.<locals>.<lambda>x  s!    ajjAq	):):;; rm   r   c                  .                                    S rt   )r  r  r  s   rn   ry   z(test_nonvectorJacobian.<locals>.<lambda>{  s    ajjmm rm   c                  |                          t          t          t          gt          t          gg                    S rt   r  r  s   rn   ry   z(test_nonvectorJacobian.<locals>.<lambda>|  s(    ajj1a&1a&0B)C)CDD rm   )r1   r   r^   r_   r`   rN   	TypeErrorr  s   @@rn   test_nonvectorJacobianr  u  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Erm   c                      t          ddgddgg          } |                                 }|j        dk    sJ t          d          D ]}||         |dz   k    sJ d S Nr   r   r   r   )r1   vecr   r   )r   m_vecrw   s      rn   test_vecr    ss    AA  AEEGGE:????1XX ! !Qx1q5     ! !rm   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 )Nr   r   r   F)diagonalr   )r  check_symmetryc                  J    t          ddgg                                          S r  r1   vechrl   rm   rn   ry   ztest_vech.<locals>.<lambda>       v1vh//4466 rm   c                  P    t          ddgddgg                                          S r  r  rl   rm   rn   ry   ztest_vech.<locals>.<lambda>  '    v1v1v&677<<>> rm   c                  J    t          ddgg                                          S r  r  rl   rm   rn   ry   ztest_vech.<locals>.<lambda>  r  rm   c                  P    t          ddgddgg                                          S r  r  rl   rm   rn   ry   ztest_vech.<locals>.<lambda>  r  rm   )	r1   r  r   r   r^   r_   rN   r'   r  )r   m_vechrw   s      rn   	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
:>>?????rm   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 )Nr   r   r   r   c                  "    t                     S rt   )r4   r   s   rn   ry   ztest_diag.<locals>.<lambda>  s    tAww rm   F)strict)r4   r1   rN   r  r   s   @rn   	test_diagr    s}    			??fYYY//////	
AsA
:'''%   F999$5$5555555rm   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 Nr   r   r   )r1   r^   r_   r`   get_diag_blocksrZ   r[   r\   s      rn   test_get_diag_blocks1r    s    AA  AAA  AAq	Aq!9q!Qi011A11#%%%%11#%%%%11#%%%%%%rm   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	          | ||                                          | ||gk    sJ t	          | ||                                          | ||gk    sJ t	          | ||                                          | ||gk    sJ t	          |||                                          |||gk    sJ d S r  )r1   r^   r_   r`   r4   r  r  s      rn   test_get_diag_blocks2r    s   AA  AAA  AAq	Aq!9q!Qi011A1a==((**q!Qi77771a==((**q!Qi77771a==((**q!Qi77771a==((**q!Qi777777rm   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 )	Nr   r   r   T)try_block_diagr  )r  rw  rv  )r1   r^   r_   r`   r4   r  )rZ   r[   r\   r   s       rn   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rm   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 )Nr   r   r>   rl   rm   rn   ry   z$test_creation_args.<locals>.<lambda>  s    uQ|| rm   c                  &    t          dddd          S Nr   r   r   r   r  rl   rm   rn   ry   z$test_creation_args.<locals>.<lambda>  s    eAq!Q// rm   r   c                       t          d          S N      @r  rl   rm   rn   ry   z$test_creation_args.<locals>.<lambda>  s    uRyy rm   c                       t          d          S r  r5   rl   rm   rn   ry   z$test_creation_args.<locals>.<lambda>  s    s2ww rm   r   c                       t          d          S Nr   r   rl   rm   rn   ry   z$test_creation_args.<locals>.<lambda>  s    fQii rm   c                  "    t          dd          S r   r   rl   rm   rn   ry   z$test_creation_args.<locals>.<lambda>  s    fQll rm   c                  &    t          ddgg          S r   r   rl   rm   rn   ry   z$test_creation_args.<locals>.<lambda>  s    vq1#h// rm   N)rN   r  r  r>   ru   r   r5   r8   rl   rm   rn   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0rm   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 )Nr   r   r   r   r   Fr%   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   ))r   r   r   r   )r   r   r   )r   r   r   r   )r1   is_diagonalis_symmetricr4   r>   r^   r_   r   r   s    rn   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2rm   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 )Nr   r   r   r   r   r   r  r   r   c                  ,                                      S rt   rq  r   s   rn   ry   z&test_diagonalization.<locals>.<lambda>       rm   r  )r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   rB  r   r  r   )r   r   r   r   Tc                  .                          d          S )NTr  r   s   rn   ry   z&test_diagonalization.<locals>.<lambda>1  s    d 3 3 rm   r   r   r   r   c                  ,                                      S rt   r  r   s   rn   ry   z&test_diagonalization.<locals>.<lambda>9       rm   )	r   r   r   r  r   r   r   r  r   c                  ,                                      S rt   r  r   s   rn   ry   z&test_diagonalization.<locals>.<lambda>=  r  rm   a b c d)r1   r
   rl  r  rN   r)   r4   rq  r5   r  as_numer_denomr  r(   r   )r  r6  rw   rZ   r[   r\   r]   r   s          @rn   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>>       rm   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   r   Tr   Fc                  "      j                     S rt   r  r|  s   rn   ry   z"test_issue_15887.<locals>.<lambda>P  s     rm   )r?   rl  rq  rN   r(   r|  s   @rn   test_issue_15887r  F  s    QFQF+,,A1  D((((AdG1  E))))QFQF+,,AAMOOOAdG
;////00000rm   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 )Nr   r   r  c                  ,                                      S rt   )r  r   s   rn   ry   z"test_jordan_form.<locals>.<lambda>V  r  rm   )	r   r  r   r   ir   r   ir  )	r   r   r   r   r   r   r   r   r   r   	r   r   r   rB  r   r   r  r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   rC  r   r   r&  )	r   r   r   r   r   r   r   r   r   )	r   rC  r   r   re  r   r   r   )	r   r   r   r   r   r   r   r   r   r   )r   r   r  r   r   r   r   r   r   r   r  r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r&  r   r   r   r   r   r  r  r&  r   r   r   r   )r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   z1.0n   )	precisionz2.0z3.14159265358979323846264338327z4.0)
r1   rN   r)   r  rq  rl  r	   valuesr   _prec)Jmustr  r  termr   s       @rn   test_jordan_formr  S  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"" 	%:$$$$% %rm   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)r   r   r   r   )rB  r   r   r   )r   r   r   r   )r   r   rB  r   r   r   r   r   )r1   r
   r  r%   r  )r   pqJmust1Jmust2r  r  s          rn   #test_jordan_form_complex_issue_9274r	    s-               " 	# 	#A 	
AaCA	AaCAaAq\Aq\Aq\Aq\# $ $F aAq\Aq\Aq\Aq\# $ $F ==??DAq;;!v++++AaCK  A%%%%%%rm   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   rp  r   r   r   r   r  r  r  r  )r1   r  r  s      rn   test_issue_10220r    s     	 	A ==??DAq$$$& ' ' ' ' ' ' $$$$	& ' ' ' ' ' ' ' 'rm   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 )
Nro  r  r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  )r1   r  r   r
   r   )r   r  r  s      rn   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!	        rm   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_wr   zZZ(K_i,K_w,UA)r)  r   r   r   r   )
r   r1   r+  r^   r   r   r    genas_exprr  )UAK_iK_wr   r+  r  s         rn   test_Matrix_berkowitz_charpolyr    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3rm   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lamdar   r   r   r   )r   r1   jordan_block_eval_matrix_exp_jblockr   lr   s     rn   test_exp_jordan_blockr    s    wAAq!!A$$&&&3q66(*<*<<<<<Aq!!A$$&&VVSVVSVVAX&AA3q66N 	 	     rm   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 )	Nr   r   r   r  rB  r   r   r   )r1   r   r   r   r   )r   m_exps     rn   test_expr"    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Krm   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 )Nr  r   r   r   r   r   r   r   r   r  c                  ,                                      S rt   )r   r   s   rn   ry   ztest_log.<locals>.<lambda>  s     rm   )r   r1   r  _eval_matrix_log_jblockr   rN   r(   r  s    @rn   test_logr&    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
 ;(((((rm   c                  V   t          t          t          fdf          } |                     t                    sJ |                     t                    rJ |                     t
                    sJ |                     t          d          } |                     t                    rJ d S )Nr  r   )r1   r^   r_   hasr`   r   r  r   s    rn   test_hasr)     s    A  A5588OOOuuQxx55==	q!AuuQxxrm   c            	          t          d          } t          dd| t          |           dz  t          |           dz  z   t          j        g          }t          |          \  }}}}|t          j        k    sJ d S )Nr^   r   r   r   )r   r1   r   r   r   r  r,   r^   columnpivot_offset	pivot_valpivot_assumed_nonzero
simplifieds         rn   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1r1  *  st     	sAAq1c!ffai#a&&!)3QV<==F$V,, ?L)2Jrm   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 )Nr^   r   r   r   simpfunc)r   r1   r   r   r,   r-   r+  s         rn   :test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2r5  6  s     	sAAqVVQYs1vvqy(A-VVQYs1vvqy(*+ +F
 	%Vi@@@ ?L)2J>>>>>>rm   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 )Nr^   r   r   r   r3  r   )r   r1   r   r   r,   r-   lenr+  s         rn   +test_find_reasonable_pivot_naive_simplifiesr8  E  s    	sAAqVVQYs1vvqy(*VVQYs1vvqy(*+ +F
 	%Vi@@@ ?L)2J z??aa=q    a=qs""""a=q    a=q      rm   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   rl   rm   rn   ry   ztest_errors.<locals>.<lambda>X  s    v1vsm44 rm   c                  2    t          ddgg          d         S )Nr   r   )g333333?r   r   rl   rm   rn   ry   ztest_errors.<locals>.<lambda>Y      v1vh//7 rm   c                  2    t          ddgg          d         S )Nr   r   )r   g@r   rl   rm   rn   ry   ztest_errors.<locals>.<lambda>Z  r<  rm   c                  &    t          ddd          S )Nr   r   T)r\   r  )r9   rl   rm   rn   ry   ztest_errors.<locals>.<lambda>[  s    z!qDAAA rm   c                  L    t          ddg                              dd          S )Nr   r   r   r   )r1   r  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>\  s     vq!f~~55a;; rm   c                  v    t          ddgddgg                              ddgt          ddg                    S Nr   r   r   r   r   )r1   copyin_matrixrl   rm   rn   ry   ztest_errors.<locals>.<lambda>^  s9    AA'((661vvq!f~~NN rm   c                  p    t          ddgddgg                              ddgt                                S rA  )r1   copyin_listsetrl   rm   rn   ry   ztest_errors.<locals>.<lambda>_  s=    fq!fq!f%566BBADuu  rm   c                  P    t          g dg dg                                          S )Nr   )r   r   r   r1   r  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>a  s'    III0F)G)G)K)K)M)M rm   c                  t    t          ddddg                              t          ddgddgg                    S r  )r1   row_joinrl   rm   rn   ry   ztest_errors.<locals>.<lambda>c  s9    q!aV$$--fq!fq!f5E.F.FGG rm   c                  p    t          ddg                              t          ddgddgg                    S r  )r1   col_joinrl   rm   rn   ry   ztest_errors.<locals>.<lambda>e  s3    FAq6NN33FQFQF;K4L4LMM rm   c                  p    t          dg                              dt          ddgddgg                    S r  )r1   
row_insertrl   rm   rn   ry   ztest_errors.<locals>.<lambda>f  D    vqc{{55a!B1vA : :     rm   c                  p    t          dg                              dt          ddgddgg                    S r  )r1   
col_insertrl   rm   rn   ry   ztest_errors.<locals>.<lambda>h  rN  rm   c                  H    t          ddg                                          S r   r<  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>j  s    A)=)=)?)? rm   c                  H    t          dg                              d          S rC  )r1   r  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>k  s    faSkk33A66 rm   c                  T    t          ddgddgg                              dd          S Nr   r   r   r   r   )r1   minorrl   rm   rn   ry   ztest_errors.<locals>.<lambda>l  s+    v1v1v&677==aCC rm   c                  T    t          ddgddgg                              dd          S rT  )r1   minor_submatrixrl   rm   rn   ry   ztest_errors.<locals>.<lambda>m  s+    v1v1v&677GG1MM rm   c                  J    t          g d                              d          S Nr   r   r1   crossrl   rm   rn   ry   ztest_errors.<locals>.<lambda>n  s     fYYY//55a88 rm   c                  J    t          g d                              d          S rY  r1   dotrl   rm   rn   ry   ztest_errors.<locals>.<lambda>o  s     fYYY//33A66 rm   c                  h    t          g d                              t          ddg                    S )Nr   r   r   r]  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>p  s*    viii0044VQF^^DD rm   c                  J    t          ddg                              g           S r   r]  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>q  s    vq!f~~11"55 rm   c                  J    t          ddg                              d          S )Nr   r   rZ   r]  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>r  s    faVnn0055 rm   c                  N    t          ddg                              g d          S )Nr   r   r   r]  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>s  s"    vq!f~~11)))<< rm   c                  H    t          g d                                          S )Nr   )r1   r   rl   rm   rn   ry   ztest_errors.<locals>.<lambda>t  s    			):):)>)>)@)@ rm   c                  P    t          ddgddgg                                          S r  )r1   
normalizedrl   rm   rn   ry   ztest_errors.<locals>.<lambda>u  '    v1v1v&677BBDD rm   c                  L    t          ddg                              d          S )Nr   r   znot a methodrv  rG  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>v  s!    vq!f~~111HH rm   c                  H    t          ddg                                          S r   r1   
inverse_GErl   rm   rn   ry   ztest_errors.<locals>.<lambda>w      A)B)B)D)D rm   c                  P    t          ddgddgg                                          S r   ri  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>x  rf  rm   c                  H    t          ddg                                          S r   r1   inverse_ADJrl   rm   rn   ry   ztest_errors.<locals>.<lambda>y  s    A)C)C)E)E rm   c                  P    t          ddgddgg                                          S r   rn  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>z  s'    v1v1v&677CCEE rm   c                  H    t          ddg                                          S r   )r1   
inverse_LUrl   rm   rn   ry   ztest_errors.<locals>.<lambda>{  rk  rm   c                  H    t          ddg                                          S r   r  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>|  s    A)D)D)F)F rm   c                  H    t          ddg                                          S r   r1   r5  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>}  s    A););)=)= rm   c                  T    t          ddgddgg                              d          S )Nr   r   r   r   zNot a real methodrv  ru  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>  s-    AA'((,,4G,HH rm   c                  `    t          g dg dg dg dg                              d          S )Nr  r  r  r  zNot functionr  ru  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>  sC    lll)))+ , ,,/C>C,J,J rm   c                  `    t          g dg dg dg dg                              d          S )Nr  r  r  r  Frx  ru  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>  sC    lll)))+ , ,,/C5C,A,A rm   c                  n    t          t          ddgddgg          t          ddgddgg                    S r  r6   r1   rl   rm   rn   ry   ztest_errors.<locals>.<lambda>  s:    AA/00&1a&1a&9I2J2JKK rm   c                  H    t          t          ddgddgg          g           S r  r{  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>  s%    wv1v1v.>'?'?DD rm   c                  B    t          t          d          dz  d          S )Nr^   r   rZ   )r6   r   rl   rm   rn   ry   ztest_errors.<locals>.<lambda>  s    wvc{{A~s;; rm   c                  ,    t          d          d         S )Nr   )r   r   r  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>      s1vvd| rm   c                  ,    t          d          d         S )Nr   )r   r   r  rl   rm   rn   ry   ztest_errors.<locals>.<lambda>  r  rm   r  c                  .                          d          S )Nzmethod=LU_decomposition())r5  r  s   rn   ry   ztest_errors.<locals>.<lambda>  s    quu%@AA rm   )r   r   r   r   r   r   r   r   c                  0                          d          S )Ng@)rM  r   Vs   rn   ry   ztest_errors.<locals>.<lambda>  s    q||C33 rm   c                  0                          d          S )Ng)rP  r  s   rn   ry   ztest_errors.<locals>.<lambda>  s    q||D!44 rm   )rN   r  r  r'   r  r)   r1   r  s   @@rn   test_errorsr  W  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5rm   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   r   r   c                     dS r   rl   rv   s     rn   ry   ztest_len.<locals>.<lambda>  s     rm   c                     dS r   rl   rv   s     rn   ry   ztest_len.<locals>.<lambda>  s    a rm   r   r   r   )r7  r1   rl   rm   rn   test_lenr    sY   vxx==Av1vh  CaSz(:(:$;$;@@@@q@@@@@@vaNN++,,F1a(())/ / / /-./ / / / / /vyyy))),--..!33331#;;&1#--''''xx88vbzz!!!!!!rm   c            
         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 d S )Nr   r   r   r   r   r   )r1   r^   r_   r   r   s    rn   test_integrater    s   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 I Irm   c                     t          ddt          t                    t          z  ft          ddfddt          dz  dz   ff          } |                     t          d          t          dt          ddfdf          k    sJ d S )	Nr   r   r   r   r   r   )r   r   r   )r   r   r   )r1   r   r^   r_   r  r   s    rn   
test_limitr    st    As1vvax 1a)b!QTAX->?@@A771a==FI1ay*#EFFFFFFFFrm   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 )Nr   r   r   r   r   r   r   r   )r   r:  r   Fr  )	r?   r^   r_   r   r   r   r  r@   rW   )r   A_imms     rn   	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Nrm   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 )
Nr   r   r   )r   r   r   r  r   r   r\  c                 T    g | ]#fd t           t          t          fD             $S )c                 `    g | ]*}                     |                                         +S rl   )r   )r   rw   fxyzrx   s     rn   r0  z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>  s2    :c:c:cTU499Q<<;L;LQ;O;O:c:c:crm   )r^   r_   r`   )r   rx   r  s    @rn   r0  z'test_diff_by_matrix.<locals>.<listcomp>  s=    9w9w9whi:c:c:c:c:cZ[]^`aYb:c:c:c9w9w9wrm   )r?   r^   r_   r`   ra   r   rV   r  rZ   r@   r[   r>   r   r   r   r   r   r1   r   )r   r  BdBr  exprresr  s          @rn   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+''''''''rm   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 )Nr   r   r   r   r   c                       j         S rt   )nonexistantattributer   s   rn   ry   ztest_getattr.<locals>.<lambda>  s
    1#9 rm   r   r   r   r   )r1   r^   r_   rN   r7  getattrr   s   @rn   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Orm   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 )
N)r   r   r   )r   r   r   r   r   )r   r   Fr  r   r   )r1   is_upper_hessenbergr  is_lower_hessenbergr>   r   s    rn   test_hessenbergr    s    			999iii011A    	A    AeH E))))			999iii011A$$$$aA      rm   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 Nr   r1   choleskyrl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>  s    )@)@)B)B rm   c                  D    t          d                                          S Nr   )r   r   r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>      v&677@@BB rm   c                  \    t          dt          z   dfdf                                          S Nr   r   r   )r1   r
   r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>  s'    vAqz6&:;;DDFF rm   c                  D    t          d                                          S N)r   r   )r   r   r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>  r  rm   c                  H    t          d                              d          S Nr  F	hermitianr  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>  s     v&677@@5@QQ rm   r   r   r   Fr  r   r  r   r   ))   r   rC  )r   r   r   )rC  r   r  r  )r   r   r   )r   r   r   r   r  r   r  r  r   c                  D    t          d                                          S r  r2   r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>!  s    f)=)=)F)F)H)H rm   c                  D    t          d                                          S r  r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>"      |,<==FFHH rm   c                  \    t          dt          z   dfdf                                          S r  )r2   r
   r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>#  s'    |a!eQZ,@AAJJLL rm   c                  D    t          d                                          S r  r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>$  r  rm   c                  H    t          d                              d          S r  r  rl   rm   rn   ry   ztest_cholesky.<locals>.<lambda>%  s!    |,<==FFQVFWW rm   )rN   r)   r  r1   r
   r  r   r  r  r   r2   )r   r  s     rn   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Hrm   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 )Nr^   Tr  r   r   r   r   r   r  r   r   r  r   	frobeniusfro%   )r   r   r   r  i  r   iI3 r   alpha)r  r   r  r   )r   r   r   g      Y@r   )	r   r   r   r  r   r   r   r   r   )r   r1   r   r   r&   normr   r   r   r  r   maxr  r5   r_   r   r   r   r  r
   r>   r%   r   InfinityNegativeInfinitytrue)r^   r   r   r  r0  r6  r  r  orderr  r  difr   rZ   r[   r\   r]   es                     rn   test_matrix_normr  5  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??????rm   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 )Nr^   Tr  r   r   r   r   r   r   r   r   c              3      K   | ]L}t          d                                                   |                                                    V  MdS )      ?N)r	   
epsilon_eqr  rw  )r   valMcr^   s     rn   r   z(test_condition_number.<locals>.<genexpr>  sg       Q QuRyy##BGGAsOO$9$9$;$;<< Q Q Q Q Q Qrm   r   r   r   r   r   )r   r5   r   condition_numberr   r   r   r1   r   r   r   r   r  r   )r   r   r  r^   s     @@rn   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------rm   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)r   rO  r   r   r   ))r   r   r   )r   r   r   )r   r   r   r   )r:  r   r   )r1   r2   )r   r  r0  r6  s       rn   test_equalityr    s    011A011A!!!QQQ$<<<<AaaadG||||Avvvv66667777Bwwww 	677A011A6666Avvvvvvrm   c                      t          d                              t          g dg                    t          g dg dg dg dg          k    sJ d S )Nr   )r   r   r   r:  r   r   )r5   rK  r1   rl   rm   rn   test_col_joinr    sp    q66??6999+..//									 	 	     rm   c                  :   t          g dg          } t          dd          D ]w}g d}|                    |d           t          t	          d                              ||                               d                                                    |k    sJ xd S )Nr   r   r   rB  r   r:  r   r   r   )r1   r   insertrJ   r5   rM  rJ  r  )r4rw   r  s      rn   test_row_insertr    s    			B2q\\ F FII	As1vv((B//33A66==??@@AEEEEEF Frm   c                  8   t          g d          } t          dd          D ]w}g d}|                    |d           t          t	          d                              ||                               d                                                    |k    sJ xd S )Nr  rB  r   r   r   r   r   )r1   r   r  rJ   r>   rP  rI  r  )c4rw   r  s      rn   test_col_insertr    s    						B2q\\ H HII	AuQxx**1b1155a88??AABBaGGGGGH Hrm   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 )Nr   r   r   r   )r   r   g0.++c                 0     | j         dd          j        S )Nr   T)r|   chop)rw  is_zeror/  s    rn   ry   z!test_normalized.<locals>.<lambda>  s    2D1119 rm   rx  )r1   re  r   r   s    rn   test_normalizedr    s    1a&>>$$&&AA/001 1 1 1 )))''))VIII->->>>>> 	}}}A<<99   						     rm   c                  ^    t          d           dk    sJ t          d           dk    sJ d S )Nc                  D    t          d                                          S r  r5   print_nonzerorl   rm   rn   ry   z$test_print_nonzero.<locals>.<lambda>  s    3q66//11 rm   z[X  ]
[ X ]
[  X]
c                  F    t          d                              d          S )Nr   .r  rl   rm   rn   ry   z$test_print_nonzero.<locals>.<lambda>  s    3q66//44 rm   z[.  ]
[ . ]
[  .]
)rK   rl   rm   rn   test_print_nonzeror    sX    1122       4455           rm   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 )Nr   r   r   r   r   r   r#  )r1   r5   r>   r8   r   r   )rw   r`   r   r   s       rn   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#~~~~~ rm   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   r   r   r   FrZ   T)nonzero)	r1   is_zero_matrixr>   r5   r^   r2   r/   r0   r   r|  s    rn   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;;;;;;rm   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 )Nr   r   r   r   r:  r   r   )r   r<   r;   r:   r5   r=  r   rY   from_axis_angleto_rotation_matrixrC   rD   rE   )
thetar3_plusr3_minusr2_plusr2_minusr1_plusr1_minusq1q2q3s
             rn   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&;&;&=&=======rm   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vectorr   z	vector[4]r]   c                  ,    t          d          d         S )Nr]   r   r*   rl   rm   rn   ry   z%test_DeferredVector.<locals>.<lambda>+	  s    ~c2226 rm   testzDeferredVector('test'))strr+   r   rN   r  reprrl   rm   rn   test_DeferredVectorr
  (	  s    ~h''*++{::::>#&&''>#+>+>>>>>
:66777~c""##s****v&&''+CCCCCCCrm   c                  B    t          t          d                    rJ d S )Nr  )rL   r+   rl   rm   rn    test_DeferredVector_not_iterabler  /	  s$    s++,,,,,,,rm   c                  2    t          t          d            d S )Nc                  :    t          t          d                    S )Nr  )r1   r+   rl   rm   rn   ry   z,test_DeferredVector_Matrix.<locals>.<lambda>3	  s    f^C%8%899 rm   )rN   r  rl   rm   rn   test_DeferredVector_Matrixr  2	  s    
999:::::rm   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 )Nr   r   r   r   r   Tr   )r   r1   r.   r  r   r#   )r  r  r  r  s       rn   test_GramSchmidtr  5	  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_,,,,,,rm   c                  j    t          g dd          dk    sJ t          g ddd          dk    sJ d S )Nr  r   r   F)zero)r3   rl   rm   rn   test_casoratianr  F	  sK    lllA&&!++++lllAE222a777777rm   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   r   )r   r   )r1   r>   r   rl   rm   rn   test_zero_dimension_multiplyr  K	  s    HHU1a[[ '61111A;;uQ{{"eAqkk1111A;;uQ{{"fhh......rm   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 )Nr   r   r   r   r   c                       dd d f         S r  rl   r   s   rn   ry   z'test_slice_issue_2884.<locals>.<lambda>W	  s    qAAAw rm   c                       d         S )Nr  rl   r   s   rn   ry   z'test_slice_issue_2884.<locals>.<lambda>X	  s    qw rm   )r1   r   r  rN   r  r   s   @rn   test_slice_issue_2884r  Q	  s    q!U1XXAQT7fq!fX&&&&&&RU8v1vh''''''QQQT7fq!fX&&(((((QQQU8v1vh'')))))
:'''
:'''''rm   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   r   r   r   r   )r>   r   r1   rl   rm   rn   test_slice_issue_3401r  [	  sc    A;;qqq"u#v----A;;q!!!tq!R 0 0000000rm   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 )Nr   r   r   r   r   rF  r   r   r   )r   r   r   +   )r   rF  r     r   )r  r   r   rS  )r>   r1   r2   )r  s    rn   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''''''''rm   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 )Nr   r   r   )r   c                  P    t          ddgddgg                                          S r   rG  rl   rm   rn   ry   z'test_invertible_check.<locals>.<lambda>{	  s'    v1v1v&677;;== rm   )r   r   r   r   r   r  c                  0                          d          S )Nr  rv  r  r   s   rn   ry   z'test_invertible_check.<locals>.<lambda>	  s    quuEu22 rm   c                  0                          d          S )Nru  rv  r$  r   s   rn   ry   z'test_invertible_check.<locals>.<lambda>	      quuDu11 rm   c                  0                          d          S )Nr~  rv  r$  r   s   rn   ry   z'test_invertible_check.<locals>.<lambda>	  r&  rm   )	r1   rF  rN   r  r^   r7  r   r5   r$   r   s   @rn   test_invertible_checkr(  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2rm   c                      t          d          \  } }| |z  }|                    | t          g d                    t          g d          |z  k    sJ d S )Nzx, y)r   r   r   )r   r  r1   )r^   r_   r  s      rn   test_issue_3959r*  	  s\    6??DAq	!A66!VIII&&''6)))+<+<Q+>>>>>>>rm   c                  V    t          t          ddgddgg                    dk    sJ d S )Nr   r   r   r   zMatrix([[1, 2], [3, 4]]))r  r1   rl   rm   rn   test_issue_5964r,  	  s7    v1v1v&''((,FFFFFFFrm   c                      t          d          \  } }t          t          | d|z  g|dz  | dz   gg                    dk    sJ d S )Nx yr   r   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))r   r"   r1   )r^   r_   s     rn   test_issue_7604r/  	  s^    5>>DAqAaC1a4Q-0112234 4 4 4 4 4rm   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 )	Nr   r:  r   )r   r   r  r   r   )r   r   )r   r   r  r   rT  )r5   is_Identityr  r>   r8   r1   r2   r   rl   rm   rn   test_is_Identityr2  	  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[[[[[[rm   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 )Nr   r   rS  r   r  r   rC  Fr  Tr  physicsr  conjugate_conventionr   r   r   rightr   left)r6  c                  n    t          ddg                              t          ddg          dd          S )Nr   r   r   r   Tr  r5  r]  rl   rm   rn   ry   ztest_dot.<locals>.<lambda>	  s0    vq!f~~11&!Q..Dgm1nn rm   )r8   r^  r1   r
   rN   r  rl   rm   rn   test_dotr:  	  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orm   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   r   )r   r1   dualequalsr5   r>   )B_xB_yB_zE_xE_yE_zFFds           rn   	test_dualrF  	  sL   #*!$. $. $. Cc3ScC 
!cC4 
tC 
cTa 	 	 	A 
sdSD3$	S3$	sdq3	sSDQ	 
 
B 6688??2q66;;==a)))))6688==??!!1"%%%%%%%rm   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 )Nr   r   Fr   r   Tr  c                     | S rt   rl   r/  s    rn   ry   z%test_anti_symmetric.<locals>.<lambda>	  s    ! rm   r   r   )r1   is_anti_symmetricr^   r_   r   r   s    rn   test_anti_symmetricrJ  	  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))))))rm   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)r   r   T)	normalize)rL  sort)r1   rq  r  r5   r   r  )r   r  rU   s      rn   #test_normalize_sort_diogonalizationrN  	  s      A==4=((DAqQS5ACE((((S[[((((((==4d=33DAqQS5ACE((((S[[((((((Q3quuww;!rm   c                  2    t          t          d            d S )Nc                  F    t          g dt          ddg           g          S )Nr   r   r   r   rl   rm   rn   ry   z!test_issue_5321.<locals>.<lambda>	  s#    vyyy&Ar2B2B&CDD rm   )rN   r  rl   rm   rn   test_issue_5321rQ  	  s    
:DDEEEEErm   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 )Nr   )r   r   r   r   )r   r   r   r   r   r   )r1   hstackr5   vstackr2   r#  s    rn   test_issue_5320rU  	  s+   =Q3q66**f6 / /     =Q3q66**f	
A	
A	
A	
A	6 / /     C::cc#a&&kk33qQx==11V= 6 6      rm   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 rC  )r1   r   rS  rT  )r   AIms     rn   test_issue_11944rX  	  sz    uA
!**C=a  FQF8$4$44444=a  FQC!:$6$6666666rm   c                     g d} g d}t          g d          }|j        }fd}t          D ] |           } |          } ||                    |          |            ||                    |j                  |            ||j                            |j                  |            ||j                            |          |           t	          t
          d            d S )Nr   r   )r  r   r  c                 B    || k    sJ t          |           k    sJ d S rt   )r   )r   r  r   s     rn   r  ztest_cross.<locals>.test	
  s'    axxxxAww#~~~~~~rm   c                  p    t          ddddg                              t          ddddg                    S r   rZ  rl   rm   rn   ry   ztest_cross.<locals>.<lambda>
  s8    q!aV""6!QA#7#788 rm   )r1   r  r   r[  rN   r'   )rZ   r[   rJ  rI  r  r   r  r   s          @rn   
test_crossr\  
  s   		A		A


C
%C         CFFCFFQWWQZZQWWQS\\3QSYYqs^^S!!!QSYYq\\3
: 9 9 : : : : :rm   c                     t          t          t          t          g          } t          t          t
          t          g          }|                                 |z  |                     |          k    sJ |                                 	                                sJ |                                 
                                | k    sJ d S rt   )r1   r^   r_   r`   rZ   r[   r\   hatr[  rI  vee)v1v2s     rn   test_hat_veerb  
  s    	Aq			B	Aq			B6688b=BHHRLL((((6688%%'''''6688<<>>Rrm   c                  v   t           dd          D ]l} |                     d          |                     d          h}t          |          dk    r+|                                |                     d          k    sJ mt           d d         D ],} t	          |                     d          t
                    rJ -d S )Nr  r   r   )r   r5   r7  popr   r   )r   r  s     rn   	test_hashre  
  s    rss| 5 5WWQZZ$1vv{{quuww#''!**44444rr{ 4 4cggajj(3333334 4rm   c                  R     t           d          t          t           fd           d S )Nr   c                  H    t                               d                    S rC  )hashr5   r#  s   rn   ry   z!test_issue_3979.<locals>.<lambda>+
  s    4

#3#3 rm   )r   rN   r7  r#  s   @rn   test_issue_3979ri  &
  s.     !*C
>333344444rm   c                      dt           gddgg} t          ddgt            dgg          }t          D ]%}| ||                                           k    sJ &d S Nr   r   )r
   r1   r   adjoint)r  r  r   s      rn   test_adjointrm  .
  sq    q6Aq6
C
1a&A2q'"
#
#C ) )cc#hh&&((((((() )rm   c                      t          t          t          t                    dz  t	          t                    dz  z   gg                    t          dgg          k    sJ d S )Nr   r   )r%   r/   r   r^   r   rl   rm   rn   test_simplify_immutablero  4
  sa    Oc!ffai#a&&!)&;%<$=>>??#aSE**+ + + + + +rm   c                      t          dt                    \  t          ddfd          } t          ddfd          }|                              }|| k    sJ d S )NzF, Gr#  r   c                       | |z             S rt   rl   )rw   rx   Gs     rn   ry   ztest_replace.<locals>.<lambda>:
      !!AaC&& rm   c                       | |z             S rt   rl   )rw   rx   rD  s     rn   ry   ztest_replace.<locals>.<lambda>;
  rs  rm   )r   r   r1   replace)Kr   NrD  rr  s      @@rn   test_replacerx  8
  sr    6x(((DAqq!(((())Aq!(((())A			!QA666666rm   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   )r1   r^   atomsr   r  NegativeOner   r   s    rn   
test_atomsr|  @
  ss    AA!G%&&A7799qttAM155555776??qc!!!!!!rm   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RDrv  r  h   i  r   r   r   )r   r   r   )r  r     EDr   )compi_ib,  i  ij  c              3   ~   K   | ]7\  }} |                                 |                                           V  8d S rt   r{   )r   rw   rx   r  s      rn   r   ztest_pinv.<locals>.<genexpr>m
  sW       
 
Aq 	QSSUUACCEE
 
 
 
 
 
rm   )r1   rZ   r[   r\   r]   r%   pinvr  r2  sympy.core.numbersr  r   zipr  )
A1Asr   A_pinvAApApAr  wrepsr  s
            @rn   	test_pinvr  F
  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
 
 
 
 
 
 
 
 
 
rm   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   r  r  r   )>   `   U   r  r  r   )E   8   r  r   6   r   )r   r  [   )   r  r   )r   r  r   r   Z   r   )r   r   r   r   r   r   r  rv  c                     |                      t                    }d |D             }| |z
                      |                                          }t	          d |D                       S )Nc                 8    i | ]}||                                 S rl   rv  )r   rD  s     rn   
<dictcomp>zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>
  s"    <<<qa<<<rm   c              3   <   K   | ]}t          |          d k     V  dS )g|=Nr   r   r  s     rn   r   zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>
  s,      ;;!s1vv~;;;;;;rm   )rz  r!   r&  rw  r   )M1r  rootofsrootofs_approxdiff_approxs        rn   allclosezEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose
  sf    hhv&&G<<G<<<N7,,^<<BBDDK;;{;;;;;;rm   )r1   r  r2  )r  r   r  r  r  r  s         rn   3test_pinv_rank_deficient_when_diagonalization_failsr  s
  s    
 	###############  	! 	!
B  $ $t$$&jqju||||	< 	< 	< xs######-$ $rm   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 rk  )r8   r1   rl   rm   rn   test_issue_7201r  
  sl    1::Q

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

"fQ2&6&6666666rm   c                      t           t          t          t          fD ]'}  | t          gdgg          j        t          hk    sJ (d S r   )r/   r0   r1   r2   r^   free_symbolsr  s    rn   test_free_symbolsr  
  sN    3V\I 1 1q1#s}})aS000001 1rm   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   array?NumPy must be available to test creating matrices from ndarraysr   rO  c                  P    t            ddgddggddgddggg                    S )	Nr   r   r   r   r   r   r   r   r   r  s   rn   ry   z#test_from_ndarray.<locals>.<lambda>
  s8    uu1v1v.!Q!Q0@ABBCC rm   r   r   r   r   N)
numpyr  ImportErrorrQ   r1   r^   r_   r`   rN   NotImplementedErrorr  s   @rn   test_from_ndarrayr  
  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 matricesr   r   r   r   r  )
sympy.matrices.commonr  r  r  r  r  rQ   r   rM   PendingDeprecationWarning)r  r  r  r   s       rn   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 matricesr   r   r   r         @)r  g       @r  r  )r  r  mpmathr  r  rQ   r   )r  r  r   s      rn   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 matricesr   r   r   r   r  )r  r  scipy.sparser  r  rQ   r   )r  r  r   s      rn   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 )Nr   r   r   Fr   r   )r1   r
   is_hermitianr^   r|  s    rn   test_hermitianr  
  s    A!Q !!A>cAdG>U""""AdG>!!!gaiAdG>U""""""rm   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 )NFr  r   r   )r1   r   r^   r  r|  s    rn   	test_doitr  
  sf    Qq5)))*+,,AQ41Q3;;;;1688v!ug&&&&&&rm   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 )Nr   r  r   r   r  )r   r   r   )r   r   r  r   c                  .                          d          S r   row_delr  s   rn   ry   z+test_issue_9457_9467_9876.<locals>.<lambda>
      qyy}} rm   c                  $      j         d          S Nr   r  rT   s   rn   ry   z+test_issue_9457_9467_9876.<locals>.<lambda>
      yqy~~ rm   r   r   r   r   c                  .                          d          S r   col_delr  s   rn   ry   z+test_issue_9457_9467_9876.<locals>.<lambda>   r  rm   c                  $      j         d          S r  r  rT   s   rn   ry   z+test_issue_9457_9467_9876.<locals>.<lambda>  r  rm   )r1   r  rN   r  r  )r   rw  Or  rU   s      @@rn   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
:----.....rm   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 br   r   )r   r5   r1   r`   )r^   r_   rZ   r[   r   r  s         rn   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0rm   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 )NrP  rI  )r   r   r   rM  rK  r   r   r   r   joinrF  )r1   r  r  id)	r   rZ   r[   r\   opsr   opr  news	            rn   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 1rm   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 )Nr   rO  r  r   )TTFr   r   r   r   r   r   )TFF)TFT)FFFr   r   )FTF)r1   r   r   s    rn   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     rm   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 )NrC  r   r   r   r   r  r   r   r   /a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1)r1   r   r  r
   r%   rF  r>   r   )r   axaybxbycxcydxdyexeyt0t1s                rn   !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======rm   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   )r  r   r   )r   r  r  V瞯<)q7K<r  r   )      r   r   r   )r  r  r  )r                 @)r  r  r  )r   r  r  )r  r  g      )r1   rF  r  r  )mmm_mixedm_floatm_invs       rn   test_partial_pivotingr  9  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1rm   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<r  r/  s    rn   ry   z*test_iszero_substitution.<locals>.<lambda>X  s    Q rm   rx  r   )r  r   g4iҤIӿr   )r   r  glٲer   r  r  r  N)r1   rF  r  )r   m_rref	m_correctm_diffs       rn   test_iszero_substitutionr  Q  s     	$$$%9%9%9:N:N:NOPPAVV55V66q9F999:[:[:[\}\}\}~IiF;;==5    #;!rm   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  -   r   r  r   r   r   r   c                 B    t           | j                              dk     S )Ng#B;)r   r|   r/  s    rn   ry   z"test_issue_11238.<locals>.<lambda>m  s    #cacee**u$ rm   T)r%   r  )	sympy.geometry.pointr	  r   r   r   r   r1   r%   r  )
r	  xxyyp1p2p0r  r  m3Zs
             rn   test_issue_11238r  _  s   ******	
3r(2r"""##	#SHR,<,<)<%=%=Q%G	HB
T!WW*SHR,,,--q0
02c"Xb"=M=M:M6N6N3N
NQSVYZ\]efhjl]m]mZmVnVnpqVqQq	rB	q!B	q477(		B	r"B	hrll"B"$56	7	7B	b"r'"	#	#B	"r'""HR"W$5$56	7	7B
 	%$A77DQ7//1444477DQ7//1444477DQ7//1444444rm   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 )Nr   r  )r1   r   ImaginaryUnitr   as_real_imagr   )r  r  r  klsrZ   r[   s         rn   test_as_real_imagr  r  s    	!III		B	AO	B	bB # #c"gg""$$!Aww$r((""""Aww$r(("""""# #rm   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 )Nr   r  r   r   r   )r   r   r   r   )r1   jordan_cells)r   r  Jcellss      rn   test_deprecatedr  |  s}    
 	q!22233A  IAv!9q!aS))))))!9q!\\\22222222rm   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   r   r   )r   r  r  r   )r   r   r   r   )r   r   r   )sympy.core.modr  r1   )r  r   r  s      rn   test_issue_14489r!    s    """"""zzzA}}}A3q!99yyy))))))3q!99yyy))))))))rm   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  r  r   r   r   r   )dtypefloat64)r  r  r  rQ   r1   floatr#  name)r  r   s     rn   test_issue_14943r'    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   r   rZ   r   r   zm[0, 0] > 0)rA   r   r  )r   rZ   s     rn   test_case_6913r)    sH    S!QAsA	$	Aq66]""""""rm   c                      t          ddd          } t          d          }|                     |          || ik    sJ d S )Nr   r   rZ   )rA   rH   match)r   rZ   s     rn   test_issue_11948r,    sC    S!QAS		A771::!Qrm   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 )Nr   r   r   )r1   r
   orthogonalizer   QRdecompositionr2  r5   )vecsr   rU   r  s       rn   test_gramschmidt_conjugate_dotr1    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######rm   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 )NrZ   r   r   r[   r   r   )r1   rA   r^  r   )rZ   r[   r\   r]   r  s        rn   test_issue_8207r3    s    |CA&&''A|CA&&''AaAQ$AQ$A$<<<<666666rm   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   )nthrootr   r   r   r   r   c                  v    t          d                              t          t                    t                    S r  )r>   analytic_funcr   r^   rl   rm   rn   ry   ztest_func.<locals>.<lambda>  s"    a 6 6s1vvq A A rm   c                  n     t           z                      t          t                     t                     S rt   )r^   r7  r   r   s   rn   ry   ztest_func.<locals>.<lambda>  s!    1 3 3CFFA > > rm   )r   r   r  r   )r   r   r   r   )r   r   r   r   c                  ^                          t          t                    t                    S rt   )r7  r   r^   r   s   rn   ry   ztest_func.<locals>.<lambda>  s    Q ; ; rm   r  r   "   )r   r  r   )r   r   r  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r  )sympy.simplify.simplifyr5  r1   r7  r   r^   ra   r   r   r   rN   r  r   r%   r   )r5  r   s    @rn   	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Hrm   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  )rF   stater1   r   s    rn   r  ztest_issue_19809.<locals>.f  s3    !'4////QC5MMEtrm   T)rB   
concurrentfuturesThreadPoolExecutorsubmitresult)r  executorfutures      rn   test_issue_19809rG    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 rk  )r1   r^   r_   r   r   r  r  s    rn   test_issue_23276rI    si    1vAQAq	Aq!9--	
	
9 2 2      rm   c                     t          g dg dg dg dg          } |                                 }|d         t          g d          k    sJ |d         t          g d          k    sJ |d	         t          g d
          k    sJ t          |          dk    sJ t          j        | g|R                                  |k    sJ d S )Nr   r   r   r   r   r  rC  r   r   r  r   r   r   r   r   r   r   r   re  r   r   )r   r  r   r   r   )r   rC  r   r   r   )r   r   r   re  r   )rg   ra  r1   r7  rS  r   basiss     rn   test_columnspace_onerQ    s    0000000000002 	3 	3A
 MMOOE8vmmm,,,,,,8vnnn------8vnnn------u::????=#U###//11U::::::rm   c                  B   t          g dg dg dg dg          } |                                 }|d         t          g dg          k    sJ |d         t          g dg          k    sJ |d         t          g d	g          k    sJ t          |          d
k    sJ d S )NrK  rL  rM  rN  r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )rg   r^  r1   r7  rO  s     rn   test_rowspacerS    s    0000000000002 	3 	3A
 JJLLE8v/0000008v///01111118v/000000u::??????rm   c                  h   t          g dg dg dg dg          } |                                 }|d         t          g d          k    sJ |d         t          g d          k    sJ t          d	 | |d         z  D                       sJ t          d
 | |d         z  D                       sJ d S )NrK  rL  rM  rN  r   )r  r   r   r   r   r   )r   r   r   r   r   c              3   $   K   | ]}|j         V  d S rt   r  r  s     rn   r   z%test_nullspace_one.<locals>.<genexpr>  $      --Qqy------rm   c              3   $   K   | ]}|j         V  d S rt   rV  r  s     rn   r   z%test_nullspace_one.<locals>.<genexpr>  rW  rm   )rg   rf  r1   r   rO  s     rn   test_nullspace_onerY    s    0000000000002 	3 	3A
 KKMME8v...//////8v000111111--!E!H*----------!E!H*----------rm   c                     t          d          t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd	           t          t          fd
           t          t          fd           t          t          fd           t          t          fd           t          t          fd                               ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd           t	          g dg dg dg          k    sJ t          d!ddgd"z            }  | j        ddd          t	          d!ddgd"z            k    sJ  | j        ddd          t	          d!ddgd"z            k    sJ  | j        dddd          t	          d!ddgd"z            k    sJ d S )#Nr   c                  .                          d          S Nabcelementary_row_opr  s   rn   ry   ztest_row_op.<locals>.<lambda>      q22599 rm   c                  ,                                      S rt   r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>      q2244 rm   c                  4                          ddd          S )Nn->knr   rI  r  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>       q227Q2GG rm   c                  4                          ddd          S )Nre  rC  r   rf  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>!      q227a2HH rm   c                  4                          ddd          S )Nn<->mr   r   row1row2r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>"      q2272KK rm   c                  4                          ddd          S )Nrk  r   r   rl  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>#  ro  rm   c                  4                          ddd          S )Nrk  rC  r   rl  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>$      q227!2LL rm   c                  4                          ddd          S )Nrk  r   rC  rl  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>%      q2272LL rm   c                  6                          dddd          S Nn->n+kmr   r   rm  rn  r  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>&      q22911PQ2RR rm   c                  6                          dddd          S )Nrw  r   r   rx  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>'  ry  rm   c                  6                          dddd          S )Nrw  rC  r   r   rx  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>(      q2292AQR2SS rm   c                  6                          dddd          S )Nrw  r   rC  r   rx  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>)      q22912QR2SS rm   c                  6                          dddd          S rv  r^  r`  s   rn   ry   ztest_row_op.<locals>.<lambda>*  ry  rm   re  r   r   r  r   r   r   r:  r;  rf  )rm  r  rk  rl  )rI  rn  rw  )r   r   r   )rI  r  rn  )rm  r  rn  r   r   )r}   rN   r  r_  r1   rq   rZ   r  s    @rn   test_row_opr       qA
:9999:::
:4444555
:GGGGHHH
:HHHHIII
:KKKKLLL
:KKKKLLL
:LLLLMMM
:LLLLMMM
:RRRRSSS
:RRRRSSS
:SSSSTTT
:SSSSTTT
:RRRRSSS w1--IIIyyy8Y1Z1ZZZZZw1--IIIyyy8Y1Z1ZZZZZwA33vyyy)))U^U^U^>_7`7`````wQ!44			999V_V_V_?`8a8aaaaaw1--IIIyyy8Y1Z1ZZZZZwQQ776999iiiYbYbYbBc;d;dddddwAA66&)))YYYXaXaXaAb:c:cccccy!Q22fiiiT]T]T]=^6_6_____ya11==T]T]T]_h_h_hHiAjAjjjjjyqAA>>&)))U^U^U^`i`i`iIjBkBkkkkk 	QA3q5))A1w1--1qc!e1D1DDDDD1w1--1qc!e1D1DDDDD1y!Q22fQA3q56I6IIIIIIIrm   c                     t          d          t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd           t          t          fd	           t          t          fd
           t          t          fd           t          t          fd           t          t          fd           t          t          fd                               ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     ddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd          t	          g dg dg dg          k    sJ                     dddd           t	          g dg dg dg          k    sJ t          d!ddgd"z            }  | j        ddd          t	          d!ddgd"z            k    sJ  | j        ddd          t	          d!ddgd"z            k    sJ  | j        dddd          t	          d!ddgd"z            k    sJ d S )#Nr   c                  .                          d          S r\  elementary_col_opr`  s   rn   ry   ztest_col_op.<locals>.<lambda>B  ra  rm   c                  ,                                      S rt   r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>C  rc  rm   c                  4                          ddd          S )Nre  r   rJ  r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>D  rg  rm   c                  4                          ddd          S )Nre  rC  r   r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>E  ri  rm   c                  4                          ddd          S )Nrk  r   r   col1col2r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>F  ro  rm   c                  4                          ddd          S )Nrk  r   r   r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>G  ro  rm   c                  4                          ddd          S )Nrk  rC  r   r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>H  rr  rm   c                  4                          ddd          S )Nrk  r   rC  r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>I  rt  rm   c                  6                          dddd          S Nrw  r   r   r  r  r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>J  ry  rm   c                  6                          dddd          S )Nrw  r   r   r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>K  ry  rm   c                  6                          dddd          S )Nrw  rC  r   r   r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>L  r|  rm   c                  6                          dddd          S )Nrw  r   rC  r   r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>M  r~  rm   c                  6                          dddd          S r  r  r`  s   rn   ry   ztest_col_op.<locals>.<lambda>N  ry  rm   re  r   r   r  r   r   r   r:  r;  r  )r  r  rk  r  )rJ  r  rw  )r   r   r   )rJ  r  r  )r  r  r  r   r   )r}   rN   r  r  r1   rq   r  s    @rn   test_col_opr  ?  r  rm   c                     t          d          } t          d          }| j        sJ |j        sJ t          ddg           }|j        sJ t          ddg d          }|j        sJ t          ddg d          }|j        rJ t	          d          }t          dd|ddg          }|j        sJ t          dd||dg          }|j        rJ t          ddg d          }|j        rJ d S )	Nr   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r^   r   	r   r   r   r   r   r   r   r   r   )r   r}   
is_echelonrq   r   )zroidentrZ   r^   s       rn   test_is_echelonr  c  s%   
1

C1E>Q2&&A<Q#5#5#566A<Q#5#5#566A|sAQAq!9--A<QAq!9--A|Q#>#>#>??A|rm   c                     t          d          t          d          }  j                    k    sJ |                                 | k    sJ t          ddg            j                    k    sJ t          dddg           j                    k    sJ fd}t          ddg d          t	          dgdgdgg          g}fdt          j                  D             } j                    j        sJ  |||           t          ddg d	          g }fd
t          j                  D             } j                    j        sJ  |||           t          ddg d          t	          t          dd          gdgdgg          t	          t          dd          gdgdgg          g}fdt          j                  D             } j                    j        sJ  |||           t          ddg d          t	          dgdgdgg          g}fdt          j                  D             } j                    j        sJ  |||           t          ddg d          t	          dgdgdgg          t	          dgdgdgg          g}fdt          j                  D             } j                    j        sJ  |||           t          ddg d          t	          dgdgdgg          g}fdt          j                  D             } j                    j        sJ  |||           d S )Nr   r   r   r   c                     |D ] }t          d |z  D                       sJ !|D ]K}t          d |D                       s0t          d |                                z  D                       rJ Ld S )Nc              3   $   K   | ]}|j         V  d S rt   rV  r   ra   s     rn   r   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>  s$      66Qqy666666rm   c              3   $   K   | ]}|j         V  d S rt   rV  r  s     rn   r   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>  s$      ,,Qqy,,,,,,rm   c              3   $   K   | ]}|j         V  d S rt   rV  r  s     rn   r   zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>  s$      JJQqyJJJJJJrm   )r   r-  )r   r   nullsr   	a_echelons       rn   verify_row_null_spacez0test_echelon_form.<locals>.verify_row_null_space  s     	7 	7A66)A+666666666 	K 	KA,,!,,,,, KJJ)AKKMM2IJJJJJJJJ	K 	Krm   r  r  c                 (    g | ]}|d d f         S rt   rl   rx  s     rn   r0  z%test_echelon_form.<locals>.<listcomp>  %    +++AadG+++rm   )	r   r   r   r   r   r   r   r   r   c                 (    g | ]}|d d f         S rt   rl   rx  s     rn   r0  z%test_echelon_form.<locals>.<listcomp>  r  rm   )	r   r   r   r   r   r   r   r   r   r   r   r   c                 (    g | ]}|d d f         S rt   rl   rx  s     rn   r0  z%test_echelon_form.<locals>.<listcomp>  r  rm   )	r   r   r   r   r   r   r   r   r   c                 (    g | ]}|d d f         S rt   rl   rx  s     rn   r0  z%test_echelon_form.<locals>.<listcomp>  r  rm   )	r   r   r   r   r   r   r   r   r   c                 (    g | ]}|d d f         S rt   rl   rx  s     rn   r0  z%test_echelon_form.<locals>.<listcomp>  r  rm   )r   r   r   r   r   r   c                 (    g | ]}|d d f         S rt   rl   rx  s     rn   r0  z%test_echelon_form.<locals>.<listcomp>  r  rm   )	r   r}   r[  rq   r1   r   r   r  r   )r  r  r  r   rZ   r  s       @@rn   test_echelon_formr  ~  s   
 	AqA 1>q    >>q    Q2&&A1>q    QA3''A1>q    K K K K K 	Q#>#>#>??ATTT   E ,+++U16]]+++D  I!T5))) 	Q#>#>#>??AE++++U16]]+++D  I!T5)))Q#>#>#>??Ar1ooVV   r1ooVV  	E ,+++U16]]+++D  I!T5))) 	Q#>#>#>??AVVV   E ,+++U16]]+++D  I!T5)))Q#>#>#>??ASSS   TTT  	E ,+++U16]]+++D  I!T5)))Q#5#5#566ATSS   E ,+++U16]]+++D  I!T5)))))rm   c                     t          ddg           } |                     d          | k    sJ t          dddg          } t          dddg          }|                     d           |j        d          cxk    r| k    sn J t          ddg d          } |j        d          t          dgdgdgg          k    sJ t          ddg d          } |j        d          t          g dg          k    sJ t          ddg d          } |j        d          t          g d	g d
g dg          k    sJ t          ddg d          }t          ddg d          }t          ddg d          }t          ddg d          } |j        d           |j        d          cxk    r2 |j        d          cxk    r |j        d          cxk    r|k    sn J t          d          } t	          d          }|                     d          | k    sJ  |j        d          |k    sJ t          g dg dg dg dg          } |j                    \  }}|t          g dg dg dg dg          k    sJ |dk    sJ t          t          dd          t          dd          ddgg dg dg dg          } |j        d          t          dddt          dd          gdddt          d d          gdddt          d!d          gg d"g          k    sJ t          d#          }t          dd|ddt          |          |dg          }t           |j        d          ddt          |          | dz   z  |t          dd          z   |z   z  dddt          |          |z   dz   z  g          D ]\  }	}
t          |	|
z
            j
        sJ d S )$Nr   F)pivotsr   r   r   r   r  )r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   )	r   r   r   r   r   r   r   r   r   r  )	r   r   r   r   r   r   r   r   r   )r   r   r   r   r   rC  r   )r   r   r   r   r   re  r   )r   r   r  r   r   r   rC  )r   r   r   r   r  r   r   )r   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  i   rC     r  r^   )rq   rF  r1   r}   r   r   r   r   r  r%   r  )r  rZ   r[   r\   r]   r`   r   pivot_offsetsr^   rw   rx   s              rn   	test_rrefr    sA   Q2&&A6661$$$$QA3''AQA3''A666616#7#7#7<<<<1<<<<<<Q999--A166A3aS/#:#:::::Q999--A166999+#6#66666Q#>#>#>??A166%/ZZ%/ZZ%/ZZ+1 $2 $2 2 2 2 2
 	Q#>#>#>??AQ#>#>#>??AQ#>#>#>??AQ#>#>#>??A16AF%   & & & &AF%   & & & & AF%   & & & & %&& & & & & &
 	qAA6661$$$$161$$$$''''''''''''	) 	* 	*A
  C&------------	/ 0 0 0 0 0 0
 I%%%%x2!QA!L0000000002 	3 	3A 166*+Q8C3E3E)F*+QHR4E4E)F*+Q8C3E3E)F);););	+= $> $> > > > > 	sAQAq!T!WWa#;<<AFAF%(((477QBF#a!Q&7%7!%;<1aa1q)+, , ' '1 A&&&&&' 'rm   c                  D   t          d          \  } }}}t          ddgddgddgddgg          }t          | |||g          }|                    |          t          ddgddgddgddgg          t          d|z  |z   gd|z  dz  |dz  z
  g| g|gg          fk    sJ d S )Nr  r   r   r   r   r   r  )r   r1   rref_rhs)rZ   r[   r\   r]   r   r  s         rn   test_rref_rhsr    s    ##JAq!QAAAA/00A1a|A::a==VFFFF	%   
1qMqSUQqS[MMM	  	      rm   c            	      8   t          g dg dg dg dg dg dg                              ddd	
          }                     dd	dd          }                    dd	d          }| d	d d f         t          g dg          k    sJ |d	d d f         t          g dg          k    sJ |d	d d f         t          g dg          k    sJ t          t          fd           t          t          fd           t          t          fd           d S )N)r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r  )r   r   r   rC  )r   r   r   r   rk  r   r   rl  rw  r   rB  rx  re  rf  )r   r   r   r  )r  r  r   r   c                  4                          ddd          S )Nrk  r   r   rl  r^  r0  s   rn   ry   z"test_issue_17827.<locals>.<lambda>>  ro  rm   c                  4                          ddd          S )Nre  r   r   rf  r^  r  s   rn   ry   z"test_issue_17827.<locals>.<lambda>?  rg  rm   c                  6                          dddd          S )Nrw  r   r   r   rx  r^  r  s   rn   ry   z"test_issue_17827.<locals>.<lambda>@  r|  rm   )r1   r_  rN   r  )r6  r   rD  r0  s      @rn   test_issue_17827r  -  si    	 	A 	
G!!44A	IAA<<A	Ga00AQT7flll^,,,,,,QT7fmmm_------QT7fooo.//////
:KKKKLLL
:GGGGHHH
:SSSSTTTTTrm   c                  H   t          ddgt          ddt          z  z
  gg          } |                                 dk    sJ t          ddt          dd                    }|                                dk    sJ t	          d          }|                                dk    sJ d S )Nr   r   r   r   r   )r1   r^   r  r   r>   )r   r|   r  s      rn   	test_rankr  B  s    AA!G%&&A6688q====q!U1b\\""A6688q====aA6688q======rm   c                  ,   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  r   r   r   r   )r   r1   r  )r  r  r  r  r  r  r  r  r  r  r  r  r   s                rn   test_issue_11434r  J  s    ABB 3BBBBBBRB2q)RB2q)RB2q)RB2q)R2b2b5!B$r'BrE/1=	? 	@ 	@A
 6688q======rm   c            
         t          d          \  } }t          d| z  dddgd| z  d| z  dz
  ddgdd| z  d| z  |z
  dz
  dgdd| |z   dgg          }t          dddd| dz  | | z
  z  z  gdddd| | | z
  z  z  gdddd| | z
  z  gg d	g          }d
}|                                \  }}t          ||z
            t	          |j         k    sJ ||k    sJ d S )Nz
nu, lambdar   r   r   r   r  r   r   r  r   )r   r1   rF  r%   r>   r   )nulambr   expected_reducedexpected_pivotsreducedr  s          rn   test_rank_regression_from_sor  T  sD    |$$HBBA:B$2	A:QrTBrET>A#5:BIr:< 	= 	=A 1aBED52:,>)?@ !1aArD52:,?@ !1aTEBJ@@@@B C C  OffhhOGV$w.//5!'?BBBB_$$$$$$rm   c                  "   t          g dg dg dg dg          } | t          j        d          t          z  z
  }|                                dk    sJ |dz                                  dk    sJ |dz                                  dk    sJ d S )Nro  r  r  r  r   r   r   )r1   r5   r
   r  )r   r  s     rn   test_issue_15872r  h  s    ooo~~~|||LMMA	FJqMMAA6688q====qD;;==AqD;;==Arm   (Q  r  concurrent.futuresr@  collections.abcr   sympy.core.addr   sympy.core.functionr   r   r   r  r   r	   r
   r   r   r   r   r   sympy.core.powerr   sympy.core.singletonr   sympy.core.symbolr   r   sympy.core.sympifyr   $sympy.functions.elementary.complexesr   &sympy.functions.elementary.exponentialr   r   (sympy.functions.elementary.miscellaneousr   r   r   (sympy.functions.elementary.trigonometricr   r   r   sympy.integrals.integralsr   sympy.polys.polytoolsr   r    sympy.polys.rootoftoolsr!   sympy.printing.strr"   sympy.sets.setsr#   r;  r$   r%   sympy.simplify.trigsimpr&   sympy.matrices.exceptionsr'   r(   r)   sympy.matrices.matrixbaser+   sympy.matrices.determinantr,   sympy.matrices.utilitiesr-   sympy.matricesr.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   
sympy.corerG   rH   (sympy.functions.special.tensor_functionsrI   sympy.utilities.iterablesrJ   rK   rL   sympy.utilities.exceptionsrM   sympy.testing.pytestrN   rO   rP   rQ   rR   rS   sympy.assumptionsrU   sympy.tensor.arrayrV   $sympy.tensor.array.array_derivativesrW   sympy.matrices.expressionsrX   sympy.algebrasrY   r  rZ   r[   r\   r]   r^   r_   r`   ra   r   r  rb   rc   sympy.matrices.matricesrd   re   rg   rq   r}   r   r   r   r   r   r   r   r   r   r  r  r  r  r!  r,  r6  r;  r?  rG  rK  rO  rS  rY  r\  r_  rb  rg  rj  rm  rr  rz  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r  r  r   r$  r'  r+  r.  r3  r8  r>  r@  rM  rQ  rV  r_  ra  rs  r}  r  r  r  r  r  r  r  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  r5  r8  r  r  r  r  r  r  r  r  r  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  r:  rF  rJ  rN  rQ  rU  rX  r\  rb  re  ri  rm  ro  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,  r1  r3  r<  rG  rI  rQ  rS  rY  r  r  r  r  r  r  r  r  r  r  r  rl   rm   rn   <module>r     s        $ $ $ $ $ $       6 6 6 6 6 6 6 6 6 6 L L L L L L L L L L L L L L L L L L L L             " " " " " " / / / / / / / / & & & & & & 4 4 4 4 4 4 = = = = = = = = E E E E E E E E E E D D D D D D D D D D / / / / / / 2 2 2 2 2 2 2 2 * * * * * * # # # # # # % % % % % % 8 8 8 8 8 8 8 8 , , , , , ,          4 4 4 4 4 4 C C C C C C . . . . . .L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L L 8 7 7 7 7 7 " " " " " " " " C C C C C C @ @ @ @ @ @ @ @ @ @ 6 6 6 6 6 6: : : : : : : : : : : : : : : :       $ $ $ $ $ $ @ @ @ @ @ @ - - - - - - % % % % % % , , , , , , , , , , , , , , , , , , , , <2G
H B A A A A A A A E E E E E E E E       ^_o                 
       ~@P                 
@ @ @6 6 6
+ 
+ 
+
! 
! 
!+ + +
& & &  
9 9 9) ) )XJ6 J6 J6Z^J ^J ^JB? ? ?  _ _ _*J *J *JX_ _ _
% % %
' ' '
     
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^    F F FD D D+ + +84 4 4P P P1 1 1  $
: 
: 
:  <7M 7M 7Mt     8! ! !"A A AG G G2 2 2"     "$ $ $$- - -      :    & & &    >9 9 9$ $ $"        *  ) ) )      
. 
. 
.	 	 	* * *F F F! ! !@ @ @.6 6 6& & &8 8 8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 ;6z" " "I I IG G G
O O O*4( 4( 4(nP P P! ! !%I %I %IPZ Z Zz. . .&  "  F F FH H H         $< < <"> "> ">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 5 5 5) ) )+ + +  " " "*
 *
 *
Z "$ "$ "$J7 7 71 1 18 8 8$# # # 	+ 	+ 	+	# 	# 	## # #' ' '
/ / /8	1 	1 	1	1 	1 	1     2 2 20  5 5 5&# # #3 3 3* * *9 9 9# # #     
$ $ $  I I I< :;;# # <;#  ; ; ;  . . .!J !J !JH!J !J !JH  6\* \* \*~>' >' >'B  U U U*    % % %(    s$   3FFF%GG	G