
    gc                        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j+        ,                    de)          d             Z-ej+        ,                    de)          d             Z. G d d          Z/ e/            Z0ej+        ,                    de)          d             Z1ej+        ,                    de)          d             Z2d Z3ej+        ,                    de)          d             Z4ej+        ,                    de)          d              Z5ej+        ,                    de)          d!             Z6ej+        ,                    de)          d"             Z7ej+        ,                    de)          d#             Z8ej+        ,                    de)          d$             Z9ej+        ,                    de)          d%             Z:ej+        ,                    de)          d&             Z;ej+        ,                    de)          d'             Z<ej+        ,                    de)          d(             Z=ej+        ,                    de)          d)             Z>ej+        ,                    de)          d*             Z?ej+        ,                    de)          d+             Z@ej+        ,                    de)          d,             ZAej+        ,                    de)          d-             ZBej+        ,                    de)          d.             ZCej+        ,                    de)          d/             ZDej+        ,                    de)          d0             ZEej+        ,                    de)          d1             ZFej+        ,                    de)          d2             ZGej+        ,                    de)          d3             ZHej+        ,                    de)          d4             ZIej+        ,                    de)          d5             ZJej+        ,                    de)          d6             ZKej+        ,                    de(          d7             ZLej+        ,                    de)          d8             ZMej+        ,                    de)          d9             ZNej+        ,                    de)          d:             ZOej+        ,                    de)          d;             ZPej+        ,                    de)          d<             ZQej+        ,                    de)          d=             ZRej+        ,                    de)          d>             ZSej+        ,                    de)          d?             ZTej+        ,                    de)          d@             ZUej+        ,                    de)          dA             ZVej+        ,                    de*          dB             ZWej+        ,                    de*          dC             ZXej+        ,                    de)          dD             ZYej+        ,                    de)          dE             ZZej+        ,                    de*          dF             Z[ej+        ,                    de)          dG             Z\ej+        ,                    de*          dH             Z]ej+        ,                    de*          dI             Z^ej+        ,                    de)          dJ             Z_dS )K    )GROUND_TYPES)ZZQQGFZZ_Isymbols)DMBadInputErrorDMDomainErrorDMNonSquareMatrixErrorDMNonInvertibleMatrixErrorDMShapeError)DMDomainMatrixDDMSDMDFM)raisesskipNc                  
  
 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|                    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 n#t          j
        |j        d                   du sJ t          dt                     }	
t
          u r-|	j        |k    sJ |	j                                        |k    sJ ndt          d
k    r-|	j                                        |k    sJ |	j        |k    sJ n,|	j        |k    s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 ]5
 
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           7t          t          fd           t          t          fd           t          t          fd           dS )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   _/var/www/html/ai-engine/env/lib/python3.11/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                  0    t           dt                    S r%   r   r   r*   s   r+   r,   z'test_XXM_constructors.<locals>.<lambda>y   s    Lfb$A$A r.   c                  0    t           dt                    S r0   r;   )r1   s   r+   r,   z'test_XXM_constructors.<locals>.<lambda>z       L&"$E$E r.   c                  0    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   #   sp    
A1	A1	A1C !uuA!uuA!uuA C GG2hGGGG 
A1	A1	A1r!uuG !uuA!uuA!uuA2a55)) G IJw > >CVR  v{{{{v{{{{x2~~~~w&    c>>:ad1g&&$.....:aeDk**d22223++#::7a<<<<7>>##q(((((W$$7>>##q((((7a<<<<<7a<<<<7>>##q((((s7FB''-7777s7FB''-7777s7FB''-7777 < < < < <=== @ @ @ @ @AAA < < < < <==== B BCVR  v{{{{v{{{{x2~~~~w&    z!A$q'""d****C,,0A5555s7FB''-7777s7FB''-7777s7FB''-7777 < < < < <=== < < < < <=== @ @ @ @ @AAAA
?AAAABBB
?EEEEFFF
?EEEEFFFF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    rbt          ddgddggdt                     }t          ddgddggdt                     }|                    |           |                    |           t          |          D ]I\  }}t          |          D ]4\  }}||k    r||k    d	u sJ ||k    d
u sJ  ||k    d
u sJ ||k    d	u sJ 5Jt          |          D ]I\  }}t          |          D ]4\  }}||k    r||k    d	u sJ ||k    d
u sJ  ||k    d
u sJ ||k    d	u sJ 5Jt          |          D ].\  }}t          |          D ]\  }}||k    d
u sJ ||k    d	u sJ /dS )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    UUBqEENRUUBqEEN+Da55RUU##BqEEbee(<(<==DUUBqEENRUUBqEEN+Da55RUU##BqEEbee(<(<==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2q!fq!f%vr22ff6"" * *2v&& 	* 	*EArAvvbT))))bU*****bU****bT)))))	* 6"" * *2v&& 	* 	*EArAvv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                     }|                    |           |D ]s		                                |k    sJ 	                                |k    sJ t          dk    r2t          t          	fd           	                                |k    sJ tt          dk    rA|D ]?		                                |k    sJ t           t          t          d	          t          fD ]t!          	t
                    r.t          j                  st          t          	fd
           E	                              
t          j                  rJ|                              }
                                |k    sJ 
                                |k    sJ t          t          
fd           
                                |                              k    sJ ?dS dS )z4Test to_ddm etc. for DDM, SDM, DFM and DomainMatrix.r   r   r   r   r   rT   r   c                  ,                                      S Nto_dfmrP   s   r+   r,   ztest_to_XXM.<locals>.<lambda>   s    

 r.   r   c                  .                                    S ro   )
convert_to)rP   Ks   r+   r,   ztest_to_XXM.<locals>.<lambda>   s    Q r.   c                  ,                                      S ro   rp   )A_Ks   r+   r,   ztest_to_XXM.<locals>.<lambda>   s    CJJLL 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    qEE2a55>BqEE2a55>
*CQ%%BqEE""2a55RUU';';
<
<CVR  EVR  E#vr**F#vr**FE66*EwC$$U . .xxzzU""""xxzzU""""7""&(:(:(:(:;;;??$$----
 w 	J 	JA88::&&&&"beeT* J Ja%% 
Jc.B1.E.E 
J.0G0G0G0G0GHHHH,,q//C+A.. J"'"2"21"5"5"zz||w6666"0022g=====24H4H4H4HIII"0022e6F6Fq6I6IIIIIIJ 	J 	Jr.   c                     t          d          \  } }t          dv r;g }i }t          t          t	          d          t          |          t          | |f         g}nt          dk    rqd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 ]:t          j                  d	u sJ t          j                  |         k    sJ ;|D ]2t          j                  du sJ t          t          fd
           3dS )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,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      sy    6??DAq)))	RA1r!A#w7		 	 H	
 qEE qEqsGM!A

 	@0<???? B B#F++t3333"6**k&.AAAAAA I I#F++u4444"$G$G$G$GHHHHI Ir.   c                    t          | |          }|dk    r|                                S |dk    r|                                S |dk    r.t          dk    rt	          d           |                                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 typeFzUnknown type %s)r   rG   rx   r   r   rq   )r*   typru   rP   s       r+   _DMr   
  s    
3

A
e||xxzz	xxzz	7""8999xxzz-'#----r.   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                 B   ddgddgg} | |          j         \  }}g d}|D ]w|D ]rdcxk    r|k     rIn nFdcxk    r|k     r9n n6                              t          |                            k    sJ Xt          t          fd           sxdS )zTest getitem for DDM, etc.r   r   r   )r   r   r   r   c                  0                                    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7DAq###G < < 	< 	<AQ{{{{{{{{{rQ{{{{{{{{{yyA"SVAY--77777z#:#:#:#:#:#:;;;;		<< <r.   c                 6	    | g dg dg                               ddt          d                      | g dg dg          k    sJ                      ddt          d                      | g dg dg          k    sJ                      dd	t          d
                      | g dg dg          k    sJ                      ddt          d                      | g dg dg          k    sJ                      ddt          d                      | g dg dg          k    sJ                      ddt          d                      | g dg dg          k    sJ t          t          fd           t          t          fd                                ddt          d                      | g dg dg          k    sJ                      ddt          d                      | g dg dg          k    sJ                      ddt          d                      | g dg dg          k    sJ                      ddt          d                      | g dg dg          k    sJ t          t          fd           t          t          fd                                 dd	t          d                      | g dg d!g          k    sJ                      ddt          d                      | g dg d"g          k    sJ                      ddt          d                      | g dg d#g          k    sJ                      ddt          d                      | g d$g d#g          k    sJ                      ddt          d                      | g d%g d#g          k    sJ                      ddt          d                      | g d%g d#g          k    sJ                      ddt          d                      | g d#g d#g          k    sJ                      ddt          d                      | g d&g d#g          k    sJ d'S )(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                  L                          ddt          d                    S )Nr   r      setitemr   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>      qyyAr"vv66 r.   c                  L                          ddt          d                    S )Nr      r   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>  s    qyyB277 r.      )r   r   r      )r   r   r      )r   r   r      )r   r   r   c                  L                          ddt          d                    S )Nr   r      r   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>  r   r.   c                  L                          ddt          d                    S )Nr   r      r   rr   s   r+   r,   z"test_XDM_setitem.<locals>.<lambda>  s    qyyQ27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  sW    	IIIyyy!""AIIaBqEEIIIyyy)******IIaBqEEIIIyyy)******IIaBqEEIIIyyy)******IIaRUUIIIyyy)******IIaRVVJJJ			*++++++IIaRVVKKK+,,,,,,
:6666777
:7777888IIaBrFFKKK,------IIaBrFFKKK-......IIb!RVVKKK-......IIb!RVVKKK-......
:6666777
:7777888IIaBqEEKKK-......IIaRUUKKK,------IIaRUUKKK+,,,,,,IIaBqEEJJJ			*++++++IIaRUUJJJ			*++++++IIaBqEEJJJ			*++++++IIaRUUIIIyyy)******IIaRUUIIIyyy)********r.   c                       e Zd Zd ZdS )_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 d S )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   
IIIyyy))),--A1?F111QQQ3K(A----1?F122aaa4L)RRIII0F-G-GGGGG1?F122abb5M*bb1a&1a&1A.B.BBBBB1?F122crc6N+rrAq6Aq62B/C/CCCCC1?F122er!e8,-aS1#J????1?F111SSqS5M*bb1a&1a&1a&1I.J.JJJJJ1?F33Q3qqq5M*bb)))YYY1G.H.HHHHH1?F33Q3sss7O,QFQF3C0D0DDDDD1?F33Q3ttt8,-aVaV4D1E1EEEEE1?F44R4!8,-aVaV4D1E1EEEEE1?F44R4"9-.""q!fq!f5E2F2FFFFF1?F111TTrT6N+rr999iii2S/T/TTTTT1?F44R46N+rr999iii2S/T/TTTTTTTr.   c                 0    | g dg dg dg                               g dg d          k    sJ                      ddgddg           | ddgd	d
gg          k    sJ                      ddgddg           | ddgdd	gg          k    sJ                      ddgddg           | ddgdd
gg          k    sJ                      ddgdg           | dgdgg          k    sJ                      ddgg            | dgg                              dt                    k    sJ                      g g d           | dgg                              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          }|                     ddgddg           | ddgddgg          k    sJ d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r#   )r   r   c                  8                          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8 r.   c                  8                          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9 r.   c                  8                          ddgddg          S )Nr   r   r   r   rr   s   r+   r,   z"test_XXM_extract.<locals>.<lambda>  r   r.   c                  8                          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9 r.   r   )r   zerosr   r   r   )r   BrP   s     @r+   test_XXM_extractr     s    	IIIyyy))),--A99YYY			**a////99aVaV$$QFQF+;(<(<<<<<99aVaV$$QFQF+;(<(<<<<<99aVaV$$QFQF+;(<(<<<<<99aVaS!!RR!qc
^^333399aVR  BBuIIOOFB$?$?????99R##rrA3%yyvr'B'BBBBB
:8888999
:9999:::
:8888999
:9999:::
IIIyyy))),--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          |                                           dk    sJ t          |                                           dk    sJ t          |           dk    sJ t          |                                           dk    sJ t          |                                           d	k    sJ t          t          d
          t          d          ddt          d          iddt                    }t          |          dk    sJ t          |                                          dk    sJ t          |                                          dk    sJ t          |          dk    sJ t          dk    rOt          |                                          dk    sJ t          |                                          dk    sJ nNt          |                                          dk    sJ t          |                                          dk    sJ t          dk    rt          |                                           dk    sJ t          |                                          dk    sJ t          |                                           dk    sJ t          |                                          dk    sJ d S d S )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|   iiiIII6CCAq66EF F F Fqxxzz??+, , , ,qxxzz??OP P P P 77EF F F F

<= = = =

`a a a a 	RUUr!uu--1bee*==vrJJAq66@A A A Aqxxzz??   qxxzz??&' ' ' ' 77@A A A A vAHHJJ/0 0 0 0AHHJJ;< < < < < AHHJJCD D D DAHHJJJK K K K w188::/0 0 0 0188::    AHHJJ@A A A AAHHJJ/0 0 0 0 0 0r.   c                 R   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                    |d
t                     | |          k    sJ t          t          fd           d S )Nr   r   r   r   r   r   r   r   r   r   r   r&   c                  <                          dt                    S r0   )	from_listr   )T
lol_ZZ_bads   r+   r,   z$test_XXM_from_list.<locals>.<lambda>  s    AKK
FB$G$G r.   )typer   r   r   r	   )r   r*   lol_ZZr   r  s      @@r+   test_XXM_from_listr    s    RR!YYA99iii
 C!uubeeRUU#beeRUUBqEE%:;Fa55"Q%%A'"Q%%A1r!uu)EFJ;;vvr**bbgg5555
?GGGGGHHHHHr.   c                    g dg dg} | |                                           t          d          t          d          t          d          gt          d          t          d          t          d          ggk    sJ d S Nr   r   r   r   r   r   r   )to_listr   r   r*   s     r+   test_XXM_to_listr	    st    99iii
 C2c77??"Q%%A1!6A1r!uu8M NNNNNNNr.   c           	         g dg dg} | |                                           t          d          t          d          t          d          t          d          t          d          t          d          gk    sJ d S r  )to_list_flatr   r  s     r+   test_XXM_to_list_flatr  #  sp    99iii
 C2c77!!beeRUUBqEE2a55"Q%%A%OOOOOOOr.   c                 ~   t           | dgg                    t          d          t          d          t          d          t          d          t          d          t          d          g                    dt                     | g dg d	g          k    sJ t          t          fd
           d S )Nr   r   r   r   r   r   r&   r   r   c                  <                          dt                    S )Nr   )from_list_flatr   )r   flats   r+   r,   z)test_XXM_from_list_flat.<locals>.<lambda>.  s    A$4$4T62$F$F r.   )r  r   r  r   r	   )r   r   r  s    @@r+   test_XXM_from_list_flatr  )  s    RR!YYAqEE2a55"Q%%A1r!uu5DD&"--YYY			4J1K1KKKKK
?FFFFFGGGGGr.   c                      | g dg dg dg          }t          d          t          d          t          d          g}d}|                                |||j        ffk    sJ d S )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    
IIIyyy))),--A1r!uubee$H&G<<>>h!'(:;;;;;;;r.   c                 D   t           | dgg                    t          d          t          d          t          d          gddf} | g dg dg d	g          }                    |t                    |k    sJ t          t          fd
           d S )Nr   r   r   r   r  r   r  r   r  c                  @                          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$S r.   )r  r   r  r   r	   )r   dataresultr   r  r   s      @@@r+   test_XXM_from_flat_nzr  9  s    RR!YYA1r!uubee$H&GVDRIIIyyy122F>>(D"--7777
?SSSSSSTTTTTr.   c                     t          d          t          d          dt          d          t          d          t          d          dd} | g dg d	g                                          |k    sJ d S )
Nr   r   r"   r   r   r   r   r   r   r   r   )r   to_dodr   r5   s     r+   test_XXM_to_dodr$  D  sy    Q%%BqEE""2a55RUUr!uu'E'E
F
FC2yyy)))$%%,,..#555555r.   c                 6   t           | dgg                    }t          d          t          d          dt          d          t          d          t          d          dd}|                    |d	t                     | g d
g dg          k    sJ d S )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  s    RR!YYAQ%%BqEE""2a55RUUr!uu'E'E
F
FC::c62&&""iii-C*D*DDDDDDDr.   c                     t          d          t          d          t          d          t          d          t          d          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   to_dokr#  s     r+   test_XXM_to_dokr/  Q  sr    a55"Q%%a55"Q%%A8 8C2yyy)))$%%,,..#555555r.   c                 .   t           | dgg                    }t          d          t          d          t          d          t          d          t          d          d}|                    |dt                     | g dg d	g          k    sJ d S )
Nr   r   r   r   r   r*  r&   r!  r   )r  r   from_dokr'  s      r+   test_XXM_from_dokr2  X  s    RR!YYAa55"Q%%a55"Q%%A8 8C::c62&&""iii-C*D*DDDDDDDr.   c                    t          d          t          d          t          d          t          d          t          d          g}t           | g dg dg                                                    |k    sJ d S )Nr   r   r   r   r!  r   )r   sortediter_values)r   valuess     r+   test_XXM_iter_valuesr7  `  sr    eeRUUBqEE2a55"Q%%0F""iii+,,88::;;vEEE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                                                    |k    sJ d S )Nr!   r   r"   r   r+  r,  r   r-  r   r!  r   )r   r4  
iter_items)r   itemss     r+   test_XXM_iter_itemsr;  f  s    bee_vr!uuobee_vr!uuo1@E""iii+,,7799::eCCCCCCr.   c                     t           | dgg                    }t          g dg dgdt                    }|                    |           | g dg dg          k    sJ d S )Nr   r   r   r&   )r  r   r   from_ddm)r   r   ddms      r+   test_XXM_from_ddmr?  m  so    RR!YYA
yyy)))$fb
1
1C::c??bb)))YYY!788888888r.   c                     t           | dgg                    }|                    dt                     | g dg dg          k    sJ d S )Nr   r&   r   )r  r   r   r   r   s     r+   test_XXM_zerosrB  t  sU    RR!YYA7762""iii%;"<"<<<<<<<r.   c                     t           | dgg                    }|                    dt                     | g dg dg          k    sJ d S )Nr   r&   )r   r   r   )r  onesr   rA  s     r+   test_XXM_onesrE  z  sU    RR!YYA66&"YYY			$:!;!;;;;;;;r.   c                    t           | dgg                    }|                    dt                     | g dg dg dg          k    sJ |                    dt                     | ddgddgddgg          k    sJ d S )Nr   r   r   r   r   r   r   r   r   r    r   )r  eyer   rA  s     r+   test_XXM_eyerJ    s    RR!YYA55B<<22yyy)))YYY?@@@@@@55QFQFQF#; < <<<<<<<r.   c                     t           | dgg                    }|                    g dt                     | g dg dg dg          k    sJ d S )Nr   r   r   )r   r   r   r  )r  diagr   rA  s     r+   test_XXM_diagrM    s_    RR!YYA66)))R  BB			999iii'H$I$IIIIIIIr.   c                      | g dg dg          }|                                  | ddgddgddgg          k    sJ d S )	Nr   r   r   r   r   r   r   r   )	transposer   s     r+   test_XXM_transposerP    sZ    
IIIyyy!""A;;==BBAAA788888888r.   c                      | g dg dg          } | g dg dg          } | g dg dg          }|                     |          |k    sJ d S )Nr   r   r   r   r   r   r   r   )addr   rP   r   Cs       r+   test_XXM_addrW    sq    
IIIyyy!""A
IIIyyy!""A
III{{{#$$A5588q======r.   c                      | g dg dg          } | g dg dg          } | g dg dg          }|                     |          |k    sJ d S )Nr   r   r   )subrU  s       r+   test_XXM_subrZ    sq    
IIIyyy!""A
IIIyyy!""A
IIIyyy!""A5588q======r.   c                      | g dg dg          }t          d          }|                    |           | g dg dg          k    sJ |                    |           | g dg dg          k    sJ d S )Nr   r   r   rR  rS  )r   mulrmul)r   rP   bs      r+   test_XXM_mulr_    s    
IIIyyy!""A
1A5588rr999kkk233333366!99III{{{34444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          }|                     |          |k    sJ d S )Nr   r   r   r   r   r   r   r         1   @   )matmulrU  s       r+   test_XXM_matmulrf    s}    
IIIyyy!""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          }|                     |          |k    sJ d S )Nr   r   )r   r   r   )r      $   )mul_elementwiserU  s       r+   test_XXM_mul_elementwiserk    s{    
IIIyyy!""A
IIIyyy!""A
III|||$%%AQ1$$$$$$r.   c                 ~     | g dg dg          } | g dg dg          }|                                 |k    sJ d S )Nr   r   )r   r   r   )r   i)neg)r   rP   rV  s      r+   test_XXM_negro    sS    
IIIyyy!""A
LLL,,,'((A5577a<<<<<<r.   c                      | g dg dgt                     } | g dg dgt                    }|                    t                    |k    sJ |                    t                     |k    sJ d S )Nr   r   )r   r   rt   r   rP   r   s      r+   test_XXM_convert_torr    s~    
IIIyyy!2&&A
IIIyyy!2&&A<<q    <<q      r.   c           	           | g dg dg dg dg dg dg          }|                                 ddgdgd	d
gd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   )r   r   r   r   r   r   )r   r   r   r   r   r   r   r   r   r   r   r   )sccr   s     r+   test_XXM_sccru    s    
 	 	A 55771vsQFQC000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          }|                     |          |k    sJ |                     ||          |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   )hstackr   rP   r   rV  ABCs        r+   test_XXM_hstackrz    s    
IIIyyy!""A
QFQGA
OOO---.//A
",,,...0 1 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          }|                     |          |k    sJ |                     ||          |k    sJ d S )Nr   r   r   )vstackrx  s        r+   test_XXM_vstackr}    s    
IIIyyy!""A
III;A
IIIyyy))),--A
"iiiIIIyyy)))YYYO
P
PC88A;;!88Aq>>S      r.   c                      | g dg dg          } | g dg dg          }|                     d t                    |k    sJ d S )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    sa    
IIIyyy!""A
III{{{#$$A;;}}b))Q......r.   c                      | g dg dg                                           du sJ  | g dg dg                                           du sJ d S )Nr   )r   r   r   Tr   F)is_upperr   s    r+   test_XXM_is_upperr    p    2yyy)))$%%..00D88882yyy)))$%%..00E999999r.   c                      | g dg dg                                           du sJ  | g dg dg                                           du sJ d S )Nr   )r   r   r   Tr   r   F)is_lowerr  s    r+   test_XXM_is_lowerr    r  r.   c                      | g dg dg                                           du sJ  | g dg dg                                           du sJ d S )Nr   r   r   r   Tr   r   F)is_diagonalr  s    r+   test_XXM_is_diagonalr    sp    2yyy)))$%%1133t;;;;2yyy)))$%%1133u<<<<<<r.   c                 \     | g dg dg                                           ddgk    sJ d S )Nr   r  r   r   )diagonalr  s    r+   test_XXM_diagonalr    s@    2yyy)))$%%..00QF::::::r.   c                      | g dg dg                                           du sJ  | g dg dg                                           du sJ d S )Nr   Tr   F)is_zero_matrixr  s    r+   test_XXM_is_zero_matrixr  	  sp    2yyy)))$%%4466$>>>>2yyy)))$%%4466%??????r.   c                      | g dg dg dg                                           dk    sJ  | g dg dg dg                                           dk    sJ d S )Nr   r   r   r   r   r   r   r   )detr  s    r+   test_XXM_det_ZZr    s|    2yyy)))YYY/004466!;;;;2yyy)))ZZZ01155772======r.   c                 x     | ddgddgg          }|                                 t          dd          k    sJ d S )Nr-  r&   r   r   r   r   r   r   )r  r   r   dM1s     r+   test_XXM_det_QQr    sE    
"uenuen-
.
.C77992b		!!!!!!r.   c                 z    | ddgddgg          } | ddgddgg          }|                                 |k    s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           d S )Nr-  r&   r  r  )ir   )   r   )r   r   )rm  r   r   r   r   r   r   r   c                  ,                                      S ro   inv)dM3s   r+   r,   z!test_XXM_inv_QQ.<locals>.<lambda>#  s    swwyy r.   )r-  r&   r  )r  r  r-  c                  ,                                      S ro   r  )dM4s   r+   r,   z!test_XXM_inv_QQ.<locals>.<lambda>&  s    37799 r.   )r  re  r   r   r   )r   r  dM2r  r  s      @@r+   test_XXM_inv_QQr    s   
"uenuen-
.
.C
"vv 01
2
2C7799::c??bb1a&1a&!1222222
"uenuen-
.
.C
%'8'8'8'8999
"###%:%:%:;
<
<C
!#4#4#4#455555r.   c                 `     | g dg dg dg          t          t          fd           d S )Nr   r   r  c                  ,                                      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  )  sG    
"iiiJJJ/
0
0C =++++,,,,,r.   c                 f     | g dg dg dg          }|                                 g dk    sJ d S )Nr   r   r  )r   iir   )charpolyr  s     r+   test_XXM_charpoly_ZZr  1  sJ    
"iiiJJJ/
0
0C<<>>---------r.   c                      | ddgddgg          }|                                 t          dd          t          dd          t          dd          gk    sJ d S )	Nr-  r&   r  r  r   ir   r   )r  r   r  s     r+   test_XXM_charpoly_QQr  7  s\    
"uenuen-
.
.C<<>>b1ggr#bzz2b99=======r.   c                      | g dg dg dg           | g dg dg dg          t          t          fd           d S )Nr   r   r  r   rG  rH  c                  .                                    S ro   lu_solve)r  r  s   r+   r,   z&test_XXM_lu_solve_ZZ.<locals>.<lambda>A  s    #,,s"3"3 r.   r  )r   r  r  s    @@r+   test_XXM_lu_solve_ZZr  =  sk    
"iiiJJJ/
0
0C
"iiiIII.
/
/C
=3333344444r.   c                 j    | g dg dg dg          } | g dg dg dg          } | g dg dg d	g          }|                     |          |cxk    r|                                k    sn J  | g dg dg           | d
dgdd
gddgg          t          t          fd           d S )Nr   r   r  r   rG  rH  )r   r   )r   r   r,  )r  )r   r   r   r   )r,  r  r,  r   r   c                  .                                    S ro   r  )r  dM5s   r+   r,   z&test_XXM_lu_solve_QQ.<locals>.<lambda>M  s    c!2!2 r.   )r  r  r   r   )r   r  r  r  r  r  s       @@r+   test_XXM_lu_solve_QQr  D  s   
"iiiJJJ/
0
0C
"iiiIII.
/
/C
"###$:$:$:;O;O;OP
Q
QC<<0000swwyy000000
"iii#
$
$C
"q!fq!fq!f%
&
&C
<2222233333r.   c                      | g dg dg dg          }|                                  | g dg          dgfk    sJ d S )Nr   r   r   )r   r   r   r   )	nullspacer  s     r+   test_XXM_nullspace_QQr  P  s\    
"iiiIII.
/
/C ==??rr:::,//!5555555r.   c                     | g dg dg          } | g dg dg          } | ddgddgg          }|                                 |k    sJ |                                ||fk    sJ |                    |          |k    sJ d S )Nr   )r   r   r  )r   rm  r   r   r   rm  )llllll_transformre  )r   r  M_lllr   s       r+   test_XXM_lllr  Y  s    
IIIzzz"##AB			;;;'((E
QFRGA5577e??
****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 M M M M M M M M M M M M - - - - - - - - XG XG XGv3& 3& 3&l)J )J )JX'I 'I 'IT. . .   
  
  
  
  
  
  
  
  
  
  
 &&	!GW
%GW
% w''< < ('<" w''?+ ?+ ('?+D       
 
 w''U U ('U" w''= = ('=*30 30 30l w''I I ('I w''O O ('O
 w''P P ('P
 w''H H ('H w''< < ('< w''U U ('U w''6 6 ('6
 w''E E ('E w''6 6 ('6 w''E E ('E w''F F ('F
 w''D D ('D w''9 9 ('9 w''= = ('=
 w''< < ('<
 w''= = ('= w''J J ('J
 w''9 9 ('9
 w''  (' w''  (' w''5 5 ('5 w''  (' w''% % ('% w''  (' v&&! ! '&! w''1 1 ('1 w''! ! ('! w''! ! ('! w''/ / ('/ w'': : (':
 w'': : (':
 w''= = ('=
 w''; ; ('; w''@ @ ('@
 w''> > ('>
 w''" " ('"
 w''
6 
6 ('
6 w''- - ('- w''. . ('.
 w''> > ('>
 w''5 5 ('5 w''4 4 ('4 w''6 6 ('6 w''    ('     r.   