
    Ogc                        d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
mZmZmZ d dlmZmZmZmZmZ d dlmZmZ d dl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'ee e!gZ(e"e#e$gZ)e%e&e'gZ*ejV                  jY                  de)      d        Z-ejV                  jY                  de)      d        Z. G d d      Z/ e/       Z0ejV                  jY                  de)      d        Z1ejV                  jY                  de)      d        Z2d Z3ejV                  jY                  de)      d        Z4ejV                  jY                  de)      d         Z5ejV                  jY                  de)      d!        Z6ejV                  jY                  de)      d"        Z7ejV                  jY                  de)      d#        Z8ejV                  jY                  de)      d$        Z9ejV                  jY                  de)      d%        Z:ejV                  jY                  de)      d&        Z;ejV                  jY                  de)      d'        Z<ejV                  jY                  de)      d(        Z=ejV                  jY                  de)      d)        Z>ejV                  jY                  de)      d*        Z?ejV                  jY                  de)      d+        Z@ejV                  jY                  de)      d,        ZAejV                  jY                  de)      d-        ZBejV                  jY                  de)      d.        ZCejV                  jY                  de)      d/        ZDejV                  jY                  de)      d0        ZEejV                  jY                  de)      d1        ZFejV                  jY                  de)      d2        ZGejV                  jY                  de)      d3        ZHejV                  jY                  de)      d4        ZIejV                  jY                  de)      d5        ZJejV                  jY                  de)      d6        ZKejV                  jY                  de(      d7        ZLejV                  jY                  de)      d8        ZMejV                  jY                  de)      d9        ZNejV                  jY                  de)      d:        ZOejV                  jY                  de)      d;        ZPejV                  jY                  de)      d<        ZQejV                  jY                  de)      d=        ZRejV                  jY                  de)      d>        ZSejV                  jY                  de)      d?        ZTejV                  jY                  de)      d@        ZUejV                  jY                  de)      dA        ZVejV                  jY                  de*      dB        ZWejV                  jY                  de*      dC        ZXejV                  jY                  de)      dD        ZYejV                  jY                  de)      dE        ZZejV                  jY                  de*      dF        Z[ejV                  jY                  de)      dG        Z\ejV                  jY                  de*      dH        Z]ejV                  jY                  de*      dI        Z^ejV                  jY                  de)      dJ        Z_y)K    )GROUND_TYPES)ZZQQGFZZ_Isymbols)DMBadInputErrorDMDomainErrorDMNonSquareMatrixErrorDMNonInvertibleMatrixErrorDMShapeError)DMDomainMatrixDDMSDMDFM)raisesskipNc                  x	  
 t        d      t        d      gt        d      t        d      gt        d      t        d      ggt        d      t        d      dt        d      t        d      dt        d      t        d      ddg } g }g g g}i }i }i }t        d      t        d      gt        d      t        d      gt        d      t        d      t        d	      ggt        d      t        d      dt        d      t        d      dt        d      t        d      t        d	      ddt        g}t        g}t        d
k(  r|j	                  t
               |D ]  
 
dt               }|j                  dk(  sJ |j                  dk(  sJ |j                  t         k(  sJ |j                  dk(  sJ 
t
        urt        j                  |d   d         du s(J t        j                  |j                  d         du sJ t        dt               }	
t
        u r0|	j                  |k(  sJ |	j                  j                         |k7  skJ t        d
k(  r0|	j                  j                         |k(  sJ |	j                  |k7  s2J |	j                  |k(  sJ |	j                  j                         |k(  sJ  
| dt               j                  dk(  sJ  
|dt               j                  dk(  sJ  
|dt               j                  dk(  sJ t        t        
fd       t        t        
fd       t        t        
fd        |D ]+  
 
dt               }|j                  dk(  sJ |j                  dk(  sJ |j                  t         k(  sJ |j                  dk(  sJ t        j                  |d   d         du sJ t        dt               j                  |k(  sJ  
|dt               j                  dk(  sJ  
|dt               j                  dk(  sJ  
|dt               j                  dk(  sJ t        t        
fd       t        t        
fd       t        t        
fd       . t        t        fd       t        t        fd       t        t        fd       y)zTest the DDM, etc constructors.                  r   r   r   r   r      flintr   r   r   Tr   r   r   r   r   r   c                         dt               S Nr   r   r   XDMlols   j/var/www/html/suriana-translation/venv/lib/python3.12/site-packages/sympy/polys/matrices/tests/test_xxm.py<lambda>z'test_XXM_constructors.<locals>.<lambda>c       C(<     c                         dt               S Nr    r'   )r)   lol_bads   r+   r,   z'test_XXM_constructors.<locals>.<lambda>d       GVR(@ r.   c                         dt               S r0   r'   r)   dods   r+   r,   z'test_XXM_constructors.<locals>.<lambda>e   r-   r.   c                         dt               S r%   r'   r4   s   r+   r,   z'test_XXM_constructors.<locals>.<lambda>u   r-   r.   c                         dt               S r0   r'   r(   s   r+   r,   z'test_XXM_constructors.<locals>.<lambda>v   r-   r.   c                         dt               S r0   r'   )r)   dod_bads   r+   r,   z'test_XXM_constructors.<locals>.<lambda>w   r2   r.   c                  &    t         dt              S r%   r   r   r*   s   r+   r,   z'test_XXM_constructors.<locals>.<lambda>y   s    Lfb$A r.   c                  &    t         dt              S r0   r;   )r1   s   r+   r,   z'test_XXM_constructors.<locals>.<lambda>z       L&"$E r.   c                  &    t         dt              S r0   r;   )r9   s   r+   r,   z'test_XXM_constructors.<locals>.<lambda>{   r>   r.   N)r   r   r   r   appendr   rowscolsdomainshapeof_typerepr   to_ddmr   r	   )lol_0x0lol_0x2lol_2x0dod_0x0dod_0x2dod_2x0	XDM_dense
XDM_sparseAAdmr)   r5   r9   r*   r1   s             @@@@@r+   test_XXM_constructorsrR   #   s&    
A1	A1	A1C !uA!uA!uAC GG2hGGGG 
A1	A1	A1r!uG !uA!uA!uA2a5)G IJw >VR vv{{vv{{xx2~~ww&   c>::ad1g&$...::aeeDk*d2223+#:77a<<77>>#q(((W$77>>#q(((77a<<77a<<77>>#q(((7FB'--7777FB'--7777FB'--777 <= @A <=9><  BVR vv{{vv{{xx2~~ww&   zz!A$q'"d***C,00A5557FB'--7777FB'--7777FB'--777 <= <= @A!B$ ?AB
?EF
?EFr.   c                     t        d      t        d      gt        d      t        d      gg} t        d      t        d      dt        d      t        d      dd}t        d      t        d      gt        d      t        d      gg}t        d      t        d      dt        d      t        d      dd}t        | dt               }t        |dt               }t        | dt               }t        |dt               }t        |dt               }t        |dt               }	t        |dt               }
t        |dt               }||||g}||	|
|g}t        dk(  rPt        ddgddggdt               }t        ddgddggdt               }|j                  |       |j                  |       t        |      D ]B  \  }}t        |      D ]/  \  }}||k(  r||k(  d	u sJ ||k7  d
u rJ ||k(  d
u sJ ||k7  d	u r/J  D t        |      D ]B  \  }}t        |      D ]/  \  }}||k(  r||k(  d	u sJ ||k7  d
u rJ ||k(  d
u sJ ||k7  d	u r/J  D t        |      D ]*  \  }}t        |      D ]  \  }}||k(  d
u sJ ||k7  d	u rJ  , y)z1Test equality for DDM, SDM, DFM and DomainMatrix.r   r   r   r   r   r   r   r   r   TFN)r   r   r   r   r   r   r@   	enumerate)lol1dod1lol2dod2A1_ddmA1_sdmA1_dm_dA1_dm_sA2_ddmA2_sdmA2_dm_dA2_dm_sA1_allA2_allA1_dfmA2_dfmnAnmAmA1A2s                         r+   test_XXM_eqrl   ~   s    UBqENRUBqEN+Da5RU#BqEbe(<=DUBqENRUBqEN+Da5RU#BqEbe(<=Dvr"Fvr"F4,G4,Gvr"Fvr"F4,G4,Gfgw/Ffgw/Fwq!fq!f%vr2q!fq!f%vr2ff6" *2v& 	*EArAvbT)))bU***bU***bT)))	** 6" *2v& 	*EArAvbT)))bU***bU***bT)))	** 6" &2v& 	&EAr"H&&&"H%%%	&&r.   c                    	
 t        d      t        d      gt        d      t        d      gg} t        d      t        d      dt        d      t        d      dd}t        | dt               }t        |dt               }t        | dt               }t        |dt               }||||g}t        dk(  r"t        | dt               }|j                  |       |D ]^  		j                         |k(  sJ 	j                         |k(  sJ t        dk7  s7t        t        	fd       	j                         |k(  r^J  t        dk(  r|D ]  		j                         k(  sJ t         t        t        d	      t        fD ]  t!        	t
              r*t        j"                        st        t        	fd
       =	j%                        
t        j"                        r<|j%                        }
j                         |k(  sJ 
j                         |k(  rJ t        t        
fd       
j                         |j%                        k(  rJ   yy)z4Test to_ddm etc. for DDM, SDM, DFM and DomainMatrix.r   r   r   r   r   rT   r   c                  $     j                         S Nto_dfmrP   s   r+   r,   ztest_to_XXM.<locals>.<lambda>   s    
 r.   r   c                  &     j                        S ro   )
convert_to)rP   Ks   r+   r,   ztest_to_XXM.<locals>.<lambda>   s    Q r.   c                  $     j                         S ro   rp   )A_Ks   r+   r,   ztest_to_XXM.<locals>.<lambda>   s    CJJL r.   N)r   r   r   r   r   r   r@   rG   to_sdmr   NotImplementedErrorto_dfm_or_ddmrq   r   r   r   
isinstance_supports_domainrt   )r*   r5   A_ddmA_sdmA_dm_dA_dm_sA_allA_dfmA_dfm_KrP   rw   ru   s            @@@r+   test_to_XXMr      s    qE2a5>BqE2a5>
*CQ%BqE"2a5RU';
<CVR EVR E#vr*F#vr*FE66*EwC$U .xxzU"""xxzU"""7"&(:;??$---. w 	JA88:&&&"beT* Ja%c.B.B1.E.0GH,,q/C++A."'"2"21"5"zz|w666"002g===24HI"002e6F6Fq6IIIIJ	J r.   c                  p   t        d      \  } }t        dv r-g }i }t        t        t	        d      t        |    t        | |f   g}nt        dk(  rkddl}t        t        g}t        |j                  t        |j                  i}t	        d      t        |    t        | |f   t        j                  | |      t        g}nJ dt        z         |D ]8  t        j                        d	u sJ t        j                        |   k(  r8J  |D ].  t        j                        du sJ t        t        fd
       0 y)z(Test which domains are supported by DFM.zx, y)pythongmpyr   r   r   NFzUnknown GROUND_TYPES: %sTc                  .    t        j                         S ro   )r   _get_flint_func)rC   s   r+   r,   z"test_DFM_domains.<locals>.<lambda>  s    C,?,?,G r.   )r   r   r   r   r   r   fmpz_matfmpq_mat
frac_fieldr   r   r|   r   r   ry   )xy	supportedflint_funcsnot_supportedr   rC   s         @r+   test_DFM_domainsr      s:    6?DAq))	RA1r!A#w7		 H	
 qE qEqsGMM!A

 	@0<??u B##F+t333""6*k&.AAAAB   I##F+u444"$GHIr.   c                     t        | |      }|dk(  r|j                         S |dk(  r|j                         S |dk(  r$t        dk7  rt	        d       |j                         S J d|z         )z&Make a DM of type typ over K from lol.r   r   r   r   z%DFM not supported in this ground typezUnknown type %s)r   rG   rx   r   r   rq   )r*   typru   rP   s       r+   _DMr   
  sg    
3
A
e|xxz	xxz	7"89xxz-'#--ur.   c                 $    t        | |t              S )z'Make a DM of type typ over ZZ from lol.)r   r   r*   r   s     r+   _DMZr         sCr.   c                 $    t        | |t              S )z'Make a DM of type typ over QQ from lol.)r   r   r   s     r+   _DMQr     r   r.   c                     t        | d|      S )zMake a DDM over K from lol.r   r   r*   ru   s     r+   DM_ddmr   $      sE1r.   c                     t        | d|      S )zMake a SDM over K from lol.r   r   r   s     r+   DM_sdmr   )  r   r.   c                     t        | d|      S )zMake a DFM over K from lol.r   r   r   s     r+   DM_dfmr   .  r   r.   c                     t        | d      S zMake a DDM from lol.r   r   r<   s    r+   DMZ_ddmr   3      Ur.   c                     t        | d      S zMake a SDM from lol.r   r   r<   s    r+   DMZ_sdmr   8  r   r.   c                     t        | d      S zMake a DFM from lol.r   r   r<   s    r+   DMZ_dfmr   =  r   r.   c                     t        | d      S r   r   r<   s    r+   DMQ_ddmr   B  r   r.   c                     t        | d      S r   r   r<   s    r+   DMQ_sdmr   G  r   r.   c                     t        | d      S r   r   r<   s    r+   DMQ_dfmr   L  r   r.   r   c                    ddgddgg} | |      j                   \  }}g d}|D ]a  |D ]Z  dcxk  r|k  r8n n5dcxk  r|k  r*n n'j                        t        |            k(  rDJ t        t        fd       \ c y)zTest getitem for DDM, etc.r   r   r   )r   r   r   r   c                  (     j                        S ro   )getitem)rP   ijs   r+   r,   z"test_XDM_getitem.<locals>.<lambda>e  s    199Q? r.   N)rD   r   r   r   
IndexError)r   r*   rh   rf   indicesrP   r   r   s        @@@r+   test_XDM_getitemr   V  s     q6Aq6
C
3A77DAq#G < 	<AQ{{rQ{{yyA"SVAY-777z#:;		<<r.   c                 V    | g dg dg      j                  ddt        d              | g dg dg      k(  sJ j                  ddt        d              | g dg dg      k(  sJ j                  dd	t        d
              | g dg dg      k(  sJ j                  ddt        d              | g dg dg      k(  sJ j                  ddt        d              | g dg dg      k(  sJ j                  ddt        d              | g dg dg      k(  sJ t        t        fd       t        t        fd       j                  ddt        d              | g dg dg      k(  sJ j                  ddt        d              | g dg dg      k(  sJ j                  ddt        d              | g dg dg      k(  sJ j                  ddt        d              | g dg dg      k(  sJ t        t        fd       t        t        fd        j                  dd	t        d              | g dg d!g      k(  sJ j                  ddt        d              | g dg d"g      k(  sJ j                  ddt        d              | g dg d#g      k(  sJ j                  ddt        d              | g d$g d#g      k(  sJ j                  ddt        d              | g d%g d#g      k(  sJ j                  ddt        d              | g d%g d#g      k(  sJ j                  ddt        d              | g d#g d#g      k(  sJ j                  ddt        d              | g d&g d#g      k(  sJ y')(zTest setitem for DDM, etc.r   )r   r   r   r   r   )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                  <     j                  ddt        d            S )Nr   r      setitemr   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>      qyyAr"v6 r.   c                  <     j                  ddt        d            S )Nr      r   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>  s    qyyB27 r.      )r   r   r      )r   r   r      )r   r   r      )r   r   r   c                  <     j                  ddt        d            S )Nr   r      r   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>  r   r.   c                  <     j                  ddt        d            S )Nr   r      r   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>  s    qyyQ27 r.   )r   r   r   )r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   r   N)r   r   r   r   r   rP   s    @r+   test_XDM_setitemr   h  sX    	Iy!"AIIaBqEIy)****IIaBqEIy)****IIaBqEIy)****IIaRUIy)****IIaRVJ	*++++IIaRVK+,,,,
:67
:78IIaBrFK,----IIaBrFK-....IIb!RVK-....IIb!RVK-....
:67
:78IIaBqEK-....IIaRUK,----IIaRUK+,,,,IIaBqEJ	*++++IIaRUJ	*++++IIaBqEJ	*++++IIaRUIy)****IIaRUIy)****r.   c                       e Zd Zd Zy)_Slicedc                     |S ro    )selfitems     r+   __getitem__z_Sliced.__getitem__  s    r.   N)__name__
__module____qualname__r   r   r.   r+   r   r     s    r.   r   c                     | g dg dg dg      } |j                   t        d d d d f    |k(  sJ  |j                   t        dd d d f     | g dg dg      k(  sJ  |j                   t        dd dd f     | ddgddgg      k(  sJ  |j                   t        dd d d	f     | d
dgddgg      k(  sJ  |j                   t        dd d d	df     | d
gdgg      k(  sJ  |j                   t        d d d d df     | ddgd
dgddgg      k(  sJ  |j                   t        d d dd d f     | g dg dg      k(  sJ  |j                   t        d d dd d df     | ddgddgg      k(  sJ  |j                   t        d d dd d df     | ddgddgg      k(  sJ  |j                   t        d d dd d df     | ddgddgg      k(  sJ  |j                   t        d d dd d df     | ddgddgg      k(  sJ  |j                   t        d d d d d	f     | g dg dg dg      k(  sJ  |j                   t        d d d	d d f     | g dg dg dg      k(  sJ y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r   r   r   )r   r   r   )r   r   r   )extract_slice_slicer   s     r+   test_XXM_extract_slicer     s   
Iy),-A1??F1Q3K(A---1??F12a4L)RI0F-GGGG1??F12ab5M*b1a&1a&1A.BBBB1??F12crc6N+rAq6Aq62B/CCCC1??F12er!e8,-aS1#J???1??F1SqS5M*b1a&1a&1a&1I.JJJJ1??F3Q3q5M*b)Y1G.HHHH1??F3Q3ss7O,QFQF3C0DDDD1??F3Q3tt8,-aVaV4D1EEEE1??F4R4!8,-aVaV4D1EEEE1??F4R4"9-."q!fq!f5E2FFFF1??F1TrT6N+r9i2S/TTTT1??F4R46N+r9i2S/TTTTr.   c                 l    | g dg dg dg      j                  g dg d      k(  sJ j                  ddgddg       | ddgd	d
gg      k(  sJ j                  ddgddg       | ddgdd	gg      k(  sJ j                  ddgddg       | ddgdd
gg      k(  sJ j                  ddgdg       | dgdgg      k(  sJ j                  ddgg        | dgg      j                  dt              k(  sJ j                  g g d       | dgg      j                  dt              k(  sJ t        t        fd       t        t        fd       t        t        fd       t        t        fd        | g dg dg dg      }|j                  ddgddg       | ddgddgg      k(  sJ y )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r#   )r   r   c                  0     j                  ddgddg      S )Nr   r   r   r   extractrr   s   r+   r,   z"test_XXM_extract.<locals>.<lambda>      qyy!Q!Q8 r.   c                  0     j                  ddgddg      S )Nr   r   r   r   r   rr   s   r+   r,   z"test_XXM_extract.<locals>.<lambda>  s    qyy!Q!R9 r.   c                  0     j                  ddgddg      S )Nr   r   r   r   rr   s   r+   r,   z"test_XXM_extract.<locals>.<lambda>  r   r.   c                  0     j                  ddgddg      S )Nr   r   r   r   r   rr   s   r+   r,   z"test_XXM_extract.<locals>.<lambda>  s    qyy"a1a&9 r.   r   )r   zerosr   r   r   )r   BrP   s     @r+   test_XXM_extractr     s    	Iy),-A99Y	*a///99aVaV$QFQF+;(<<<<99aVaV$QFQF+;(<<<<99aVaV$QFQF+;(<<<<99aVaS!R!qc
^33399aVR BuIOOFB$????99R#rA3%yvr'BBBB
:89
:9:
:89
:9:
Iy),-A99aVaV$QFQF+;(<<<<r.   c                     t        g dg dg dgdt              } t        |       dk(  sJ t        | j                               dk(  sJ t        | j	                               dk(  sJ t        |       dk(  sJ t        | j                               dk(  sJ t        | j	                               d	k(  sJ t        t        d
      t        d      ddt        d      iddt              }t        |      dk(  sJ t        |j                               dk(  sJ t        |j	                               dk(  sJ t        |      dk(  sJ t        dk7  r<t        |j                               dk(  sJ t        |j	                               dk(  s>J t        |j                               dk(  sJ t        |j	                               dk(  sJ t        dk(  ryt        | j                               dk(  sJ t        |j                               dk(  sJ t        | j                               dk(  sJ t        |j                               dk(  sJ y y )Nr   r   r   r   r   z;DomainMatrix([[1, 2, 3], [4, 5, 6], [7, 8, 9]], (3, 3), ZZ)z![[1, 2, 3], [4, 5, 6], [7, 8, 9]]zE{0: {0: 1, 1: 2, 2: 3}, 1: {0: 4, 1: 5, 2: 6}, 2: {0: 7, 1: 8, 2: 9}}z2DDM([[1, 2, 3], [4, 5, 6], [7, 8, 9]], (3, 3), ZZ)zVSDM({0: {0: 1, 1: 2, 2: 3}, 1: {0: 4, 1: 5, 2: 6}, 2: {0: 7, 1: 8, 2: 9}}, (3, 3), ZZ)r   r   r   r   r   rT   z6DomainMatrix({0: {0: 1, 1: 2}, 1: {0: 3}}, (2, 2), ZZ)z[[1, 2], [3, 0]]z{0: {0: 1, 1: 2}, 1: {0: 3}}r   z!DDM([[1, 2], [3, 0]], (2, 2), ZZ)z-SDM({0: {0: 1, 1: 2}, 1: {0: 3}}, (2, 2), ZZ)z5DDM([[mpz(1), mpz(2)], [mpz(3), mpz(0)]], (2, 2), ZZ)z<SDM({0: {0: mpz(1), 1: mpz(2)}, 1: {0: mpz(3)}}, (2, 2), ZZ)r   z2DFM([[1, 2, 3], [4, 5, 6], [7, 8, 9]], (3, 3), ZZ)z!DFM([[1, 2], [3, 0]], (2, 2), ZZ))r   r   strrG   rx   reprr   rq   )rP   r   s     r+   test_XXM_strr     s   iI6CAq6EF F Fqxxz?+, , ,qxxz?OP P P 7EF F F
<= = =
`a a a 	RUr!u-1be*=vrJAq6@A A Aqxxz?  qxxz?&' ' ' 7@A A A vAHHJ/0 	0 0AHHJ;< 	< < AHHJCD 	D DAHHJJK 	K K w188:/0 	0 0188: 	  AHHJ@A 	A AAHHJ/0 	0 0 r.   c                    t         | dgg            g dg dg}t        d      t        d      t        d      gt        d      t        d      t        d      gg}t        d      t        d      t        d      gt        d      t        d      t        d      t        d	      ggj                  |d
t               | |      k(  sJ t        t        fd       y )Nr   r   r   r   r   r   r   r   r   r   r   r&   c                  2     j                  dt              S r0   )	from_listr   )T
lol_ZZ_bads   r+   r,   z$test_XXM_from_list.<locals>.<lambda>  s    AKK
FB$G r.   )typer   r   r   r	   )r   r*   lol_ZZr   r  s      @@r+   test_XXM_from_listr    s    R!YAi
 C!ubeRU#beRUBqE%:;Fa5"Q%A'"Q%A1r!u)EFJ;;vvr*bg555
?GHr.   c                     g dg dg} | |      j                         t        d      t        d      t        d      gt        d      t        d      t        d      ggk(  sJ y Nr   r   r   r   r   r   r   )to_listr   r   r*   s     r+   test_XXM_to_listr	    sP    i
 Cc7??"Q%A1!6A1r!u8M NNNNr.   c           	          g dg dg} | |      j                         t        d      t        d      t        d      t        d      t        d      t        d      gk(  sJ y r  )to_list_flatr   r  s     r+   test_XXM_to_list_flatr  #  sL    i
 Cc7!beRUBqE2a5"Q%A%OOOOr.   c                 "   t         | dgg            t        d      t        d      t        d      t        d      t        d      t        d      gj                  dt               | g dg d	g      k(  sJ t        t        fd
       y )Nr   r   r   r   r   r   r&   r   r   c                  2     j                  dt              S )Nr   )from_list_flatr   )r   flats   r+   r,   z)test_XXM_from_list_flat.<locals>.<lambda>.  s    A$4$4T62$F r.   )r  r   r  r   r	   )r   r   r  s    @@r+   test_XXM_from_list_flatr  )  sp    R!YAqE2a5"Q%A1r!u5DD&"-Y	4J1KKKK
?FGr.   c                      | g dg dg dg      }t        d      t        d      t        d      g}d}|j                         |||j                  ffk(  sJ y )Nr   r   r   r   r   r   r   r   r   r   r!   r   rT   )r   
to_flat_nzrD   )r   Melementsr   s       r+   test_XXM_to_flat_nzr  1  sR    
Iy),-A1r!ube$H&G<<>h!''(:;;;;r.   c                     t         | dgg            t        d      t        d      t        d      gddf} | g dg dg d	g      }j                  |t              |k(  sJ t        t        fd
       y )Nr   r   r   r   r  r   r  r   r  c                  6     j                  dft              S r%   )from_flat_nzr   )r   r  r   s   r+   r,   z'test_XXM_from_flat_nz.<locals>.<lambda>A  s    ANN8gv=NPR$S r.   )r  r   r  r   r	   )r   dataresultr   r  r   s      @@@r+   test_XXM_from_flat_nzr  9  sr    R!YA1r!ube$H&GVDIy12F>>(D"-777
?STr.   c                     t        d      t        d      dt        d      t        d      t        d      dd} | g dg d	g      j                         |k(  sJ y )
Nr   r   r"   r   r   r   r   r   r   r   r   )r   to_dodr   r5   s     r+   test_XXM_to_dodr$  D  sM    Q%BqE"2a5RUr!u'E
FCy)$%,,.#555r.   c                     t         | dgg            }t        d      t        d      dt        d      t        d      t        d      dd}|j                  |d	t               | g d
g dg      k(  sJ y )Nr   r   r   r"   r   r   r   r   r&   r!  r   )r  r   from_dodr   r   r5   s      r+   test_XXM_from_dodr(  J  sb    R!YAQ%BqE"2a5RUr!u'E
FC::c62&"i-C*DDDDr.   c                     t        d      t        d      t        d      t        d      t        d      d} | g dg dg      j                         |k(  sJ y )Nr   r   r   r   r!   r"   r   r   r   r   r   r   r!  r   )r   to_dokr#  s     r+   test_XXM_to_dokr/  Q  sJ    a5"Q%a5"Q%A8Cy)$%,,.#555r.   c                     t         | dgg            }t        d      t        d      t        d      t        d      t        d      d}|j                  |dt               | g dg d	g      k(  sJ y )
Nr   r   r   r   r   r*  r&   r!  r   )r  r   from_dokr'  s      r+   test_XXM_from_dokr2  X  s_    R!YAa5"Q%a5"Q%A8C::c62&"i-C*DDDDr.   c                     t        d      t        d      t        d      t        d      t        d      g}t         | g dg dg      j                               |k(  sJ y )Nr   r   r   r   r!  r   )r   sortediter_values)r   valuess     r+   test_XXM_iter_valuesr7  `  sL    eRUBqE2a5"Q%0F"i+,88:;vEEEr.   c                     dt        d      fdt        d      fdt        d      fdt        d      fdt        d	      fg}t         | g d
g dg      j                               |k(  sJ y )Nr!   r   r"   r   r+  r,  r   r-  r   r!  r   )r   r4  
iter_items)r   itemss     r+   test_XXM_iter_itemsr;  f  sd    be_vr!uobe_vr!uo1@E"i+,779:eCCCr.   c                     t         | dgg            }t        g dg dgdt              }|j                  |       | g dg dg      k(  sJ y )Nr   r   r   r&   )r  r   r   from_ddm)r   r   ddms      r+   test_XXM_from_ddmr?  m  sF    R!YA
y)$fb
1C::c?b)Y!78888r.   c                 x    t         | dgg            }|j                  dt               | g dg dg      k(  sJ y )Nr   r&   r   )r  r   r   r   r   s     r+   test_XXM_zerosrB  t  s6    R!YA7762"i%;"<<<<r.   c                 x    t         | dgg            }|j                  dt               | g dg dg      k(  sJ y )Nr   r&   )r   r   r   )r  onesr   rA  s     r+   test_XXM_onesrE  z  s6    R!YA66&"Y	$:!;;;;r.   c                     t         | dgg            }|j                  dt               | g dg dg dg      k(  sJ |j                  dt               | ddgddgddgg      k(  sJ y )Nr   r   r   r   r   r   r   r   r   r    r   )r  eyer   rA  s     r+   test_XXM_eyerJ    sh    R!YA55B<2y)Y?@@@@55QFQFQF#; <<<<r.   c                     t         | dgg            }|j                  g dt               | g dg dg dg      k(  sJ y )Nr   r   r   )r   r   r   r  )r  diagr   rA  s     r+   test_XXM_diagrM    s8    R!YA66)R B	9i'H$IIIIr.   c                 h     | g dg dg      }|j                          | ddgddgddgg      k(  sJ y )	Nr   r   r   r   r   r   r   r   )	transposer   s     r+   test_XXM_transposerP    s=    
Iy!"A;;=BAAA78888r.   c                      | g dg dg      } | g dg dg      } | g dg dg      }|j                  |      |k(  sJ y )Nr   r   r   r   r   r   r   r   )addr   rP   r   Cs       r+   test_XXM_addrW    sC    
Iy!"A
Iy!"A
I{#$A558q==r.   c                      | g dg dg      } | g dg dg      } | g dg dg      }|j                  |      |k(  sJ y )Nr   r   r   )subrU  s       r+   test_XXM_subrZ    sC    
Iy!"A
Iy!"A
Iy!"A558q==r.   c                      | g dg dg      }t        d      }|j                  |       | g dg dg      k(  sJ |j                  |       | g dg dg      k(  sJ y )Nr   r   r   rR  rS  )r   mulrmul)r   rP   bs      r+   test_XXM_mulr_    sZ    
Iy!"A
1A558r9k2333366!9I{34444r.   c                      | g dg dg      } | ddgddgddgg      } | d	d
gddgg      }|j                  |      |k(  sJ y )Nr   r   r   r   r   r   r   r         1   @   )matmulrU  s       r+   test_XXM_matmulrf    s[    
Iy!"A
QFQFQF#$A
RHr2h A88A;!r.   c                      | g dg dg      } | g dg dg      } | g dg dg      }|j                  |      |k(  sJ y )Nr   r   )r   r   r   )r      $   )mul_elementwiserU  s       r+   test_XXM_mul_elementwiserk    sH    
Iy!"A
Iy!"A
I|$%AQ1$$$r.   c                 f     | g dg dg      } | g dg dg      }|j                         |k(  sJ y )Nr   r   )r   r   r   )r   i)neg)r   rP   rV  s      r+   test_XXM_negro    s2    
Iy!"A
L,'(A557a<<r.   c                      | g dg dgt               } | g dg dgt              }|j                  t              |k(  sJ |j                  t               |k(  sJ y )Nr   r   )r   r   rt   r   rP   r   s      r+   test_XXM_convert_torr    sR    
Iy!2&A
Iy!2&A<<q   <<q   r.   c           	      v     | g dg dg dg dg dg dg      }|j                         ddgdgd	d
gdggk(  sJ y )N)r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )sccr   s     r+   test_XXM_sccru    sN    
 	A 5571vsQFQC0000r.   c                      | g dg dg      } | ddgddgg      } | g dg dg      } | g d	g d
g      }|j                  |      |k(  sJ |j                  ||      |k(  sJ y )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   )hstackr   rP   r   rV  ABCs        r+   test_XXM_hstackrz    s{    
Iy!"A
QFQGA
O-./A
,.0 1C88A;!88Aq>S   r.   c           	           | g dg dg      } | g dg      } | g dg dg dg      } | g dg dg dg dg dg dg      }|j                  |      |k(  sJ |j                  ||      |k(  sJ y )Nr   r   r   )vstackrx  s        r+   test_XXM_vstackr}    sr    
Iy!"A
I;A
Iy),-A
iIy)YO
PC88A;!88Aq>S   r.   c                 t     | g dg dg      } | g dg dg      }|j                  d t              |k(  sJ y )Nr   r   rR  rS  c                     d| z  S )Nr   r   )r   s    r+   r,   z$test_XXM_applyfunc.<locals>.<lambda>  s
    1 r.   )	applyfuncr   rq  s      r+   test_XXM_applyfuncr    s9    
Iy!"A
I{#$A;;}b)Q...r.   c                      | g dg dg      j                         du sJ  | g dg dg      j                         du sJ y )Nr   )r   r   r   Tr   F)is_upperr   s    r+   test_XXM_is_upperr    D    y)$%..0D888y)$%..0E999r.   c                      | g dg dg      j                         du sJ  | g dg dg      j                         du sJ y )Nr   )r   r   r   Tr   r   F)is_lowerr  s    r+   test_XXM_is_lowerr    r  r.   c                      | g dg dg      j                         du sJ  | g dg dg      j                         du sJ y )Nr   r   r   r   Tr   r   F)is_diagonalr  s    r+   test_XXM_is_diagonalr    sD    y)$%113t;;;y)$%113u<<<r.   c                 J     | g dg dg      j                         ddgk(  sJ y )Nr   r  r   r   )diagonalr  s    r+   test_XXM_diagonalr    s'    y)$%..0QF:::r.   c                      | g dg dg      j                         du sJ  | g dg dg      j                         du sJ y )Nr   Tr   F)is_zero_matrixr  s    r+   test_XXM_is_zero_matrixr  	  sD    y)$%446$>>>y)$%446%???r.   c                      | g dg dg dg      j                         dk(  sJ  | g dg dg dg      j                         dk(  sJ y )Nr   r   r   r   r   r   r   r   )detr  s    r+   test_XXM_det_ZZr    sH    y)Y/0446!;;;y)Z015572===r.   c                 ^     | ddgddgg      }|j                         t        dd      k(  sJ y )Nr-  r&   r   r   r   r   r   r   )r  r   r   dM1s     r+   test_XXM_det_QQr    s3    
uenuen-
.C7792b	!!!r.   c                 2    | ddgddgg      } | ddgddgg      }|j                         |k(  sJ |j                  |       | d	d
gd
d	gg      k(  sJ  | ddgddgg      t        t        fd        | g dg dg      t        t        fd       y )Nr-  r&   r  r  )ir   )   r   )r   r   )rm  r   r   r   r   r   r   r   c                  $     j                         S ro   inv)dM3s   r+   r,   z!test_XXM_inv_QQ.<locals>.<lambda>#  s    swwy r.   )r-  r&   r  )r  r  r-  c                  $     j                         S ro   r  )dM4s   r+   r,   z!test_XXM_inv_QQ.<locals>.<lambda>&  s    3779 r.   )r  re  r   r   r   )r   r  dM2r  r  s      @@r+   test_XXM_inv_QQr    s    
uenuen-
.C
vv 01
2C779::c?b1a&1a&!12222
uenuen-
.C
%'89
#%:;
<C
!#45r.   c                 N     | g dg dg dg      t        t        fd       y )Nr   r   r  c                  $     j                         S ro   r  )r  s   r+   r,   z!test_XXM_inv_ZZ.<locals>.<lambda>.  s    #'') r.   r   r
   r  s    @r+   test_XXM_inv_ZZr  )  s!    
iJ/
0C =+,r.   c                 T     | g dg dg dg      }|j                         g dk(  sJ y )Nr   r   r  )r   iir   )charpolyr  s     r+   test_XXM_charpoly_ZZr  1  s(    
iJ/
0C<<>----r.   c                      | ddgddgg      }|j                         t        dd      t        dd      t        dd      gk(  sJ y )	Nr-  r&   r  r  r   ir   r   )r  r   r  s     r+   test_XXM_charpoly_QQr  7  sF    
uenuen-
.C<<>b1gr#bz2b9====r.   c                 t     | g dg dg dg       | g dg dg dg      t        t        fd       y )Nr   r   r  r   rG  rH  c                  &     j                        S ro   lu_solve)r  r  s   r+   r,   z&test_XXM_lu_solve_ZZ.<locals>.<lambda>A  s    #,,s"3 r.   r  )r   r  r  s    @@r+   test_XXM_lu_solve_ZZr  =  s0    
iJ/
0C
iI.
/C
=34r.   c                 .    | g dg dg dg      } | g dg dg dg      } | g dg dg d	g      }|j                  |      |cxk(  r|j                         k(  sJ  J  | g dg dg       | d
dgdd
gddgg      t        t        fd       y )Nr   r   r  r   rG  rH  )r   r   )r   r   r,  )r  )r   r   r   r   )r,  r  r,  r   r   c                  &     j                        S ro   r  )r  dM5s   r+   r,   z&test_XXM_lu_solve_QQ.<locals>.<lambda>M  s    c!2 r.   )r  r  r   r   )r   r  r  r  r  r  s       @@r+   test_XXM_lu_solve_QQr  D  s    
iJ/
0C
iI.
/C
#$:;OP
QC<<0swwy00000
i#
$C
q!fq!fq!f%
&C
<23r.   c                 h     | g dg dg dg      }|j                          | g dg      dgfk(  sJ y )Nr   r   r   )r   r   r   r   )	nullspacer  s     r+   test_XXM_nullspace_QQr  P  s7    
iI.
/C ==?r:,/!5555r.   c                      | g dg dg      } | g dg dg      } | ddgddgg      }|j                         |k(  sJ |j                         ||fk(  sJ |j                  |      |k(  sJ y )Nr   )r   r   r  )r   rm  r   r   r   rm  )llllll_transformre  )r   r  M_lllr   s       r+   test_XXM_lllr  Y  sz    
Iz"#A	;'(E
QFRGA557e??
***88A;%r.   )`sympy.external.gmpyr   sympyr   r   r   r   r   sympy.polys.matrices.exceptionsr	   r
   r   r   r   !sympy.polys.matrices.domainmatrixr   r   r   r   r   sympy.testing.pytestr   r   pytestrR   rl   r   r   r   r   r   r   r   r   r   r   r   r   r   r   DM_allDMZ_allDMQ_allmarkparametrizer   r   r   r   r   r   r   r  r	  r  r  r  r  r$  r(  r/  r2  r7  r;  r?  rB  rE  rJ  rM  rP  rW  rZ  r_  rf  rk  ro  rr  ru  rz  r}  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r   r.   r+   <module>r     s  " - + +  N M - XGv3&l)JX'IT. 










 &&	!GW
%GW
% w'< (<" w'?+ (?+D 
 
 w'U (U" w'= (=*30l w'I (I w'O (O
 w'P (P
 w'H (H w'< (< w'U (U w'6 (6
 w'E (E w'6 (6 w'E (E w'F (F
 w'D (D w'9 (9 w'= (=
 w'< (<
 w'= (= w'J (J
 w'9 (9
 w' ( w' ( w'5 (5 w' ( w'% (% w' ( v&! '! w'1 (1 w'! (! w'! (! w'/ (/ w': (:
 w': (:
 w'= (=
 w'; (; w'@ (@
 w'> (>
 w'" ("
 w'
6 (
6 w'- (- w'. (.
 w'> (>
 w'5 (5 w'4 (4 w'6 (6 w'  ( r.   