o
    gc                     @   sV  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d Zd	d
 Zdd Zdd Zdd Zdd Zdd Zdd Zdd Z dd Z!dd Z"dd Z#dd  Z$d!d" Z%d#d$ Z&d%d& Z'ee e!gZ(e"e#e$gZ)e%e&e'gZ*ej+,d'e)d(d) Z-ej+,d'e)d*d+ Z.G d,d- d-Z/e/ Z0ej+,d'e)d.d/ Z1ej+,d'e)d0d1 Z2d2d3 Z3ej+,d'e)d4d5 Z4ej+,d'e)d6d7 Z5ej+,d'e)d8d9 Z6ej+,d'e)d:d; Z7ej+,d'e)d<d= Z8ej+,d'e)d>d? Z9ej+,d'e)d@dA Z:ej+,d'e)dBdC Z;ej+,d'e)dDdE Z<ej+,d'e)dFdG Z=ej+,d'e)dHdI Z>ej+,d'e)dJdK Z?ej+,d'e)dLdM Z@ej+,d'e)dNdO ZAej+,d'e)dPdQ ZBej+,d'e)dRdS ZCej+,d'e)dTdU ZDej+,d'e)dVdW ZEej+,d'e)dXdY ZFej+,d'e)dZd[ ZGej+,d'e)d\d] ZHej+,d'e)d^d_ ZIej+,d'e)d`da ZJej+,d'e)dbdc ZKej+,d'e(ddde ZLej+,d'e)dfdg ZMej+,d'e)dhdi ZNej+,d'e)djdk ZOej+,d'e)dldm ZPej+,d'e)dndo ZQej+,d'e)dpdq ZRej+,d'e)drds ZSej+,d'e)dtdu ZTej+,d'e)dvdw ZUej+,d'e)dxdy ZVej+,d'e*dzd{ ZWej+,d'e*d|d} ZXej+,d'e)d~d ZYej+,d'e)dd ZZej+,d'e*dd Z[ej+,d'e)dd Z\ej+,d'e*dd Z]ej+,d'e*dd Z^ej+,d'e)dd Z_dS )    )GROUND_TYPES)ZZQQGFZZ_Isymbols)DMBadInputErrorDMDomainErrorDMNonSquareMatrixErrorDMNonInvertibleMatrixErrorDMShapeError)DMDomainMatrixDDMSDMDFM)raisesskipNc            
         s  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sJ |jdksJ |jt ksJ |j	dksJ  turt 
|d d du sJ nt 
|jd du sJ tdt }	 tu r|	j|ksJ |	j |ksJ n'td
kr|	j |ksJ |	j|ksJ 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s1J tt fdd tt fdd tt fdd q|D ]  dt }|jdksbJ |jdksjJ |jt ksrJ |j	dkszJ t 
|d d du sJ tdt j|ksJ  |dt j	dksJ  |dt j	dksJ  |dt j	dksJ tt fdd tt fdd tt fdd qRttfdd ttfdd ttfd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lolr&   Z/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_xxm.py<lambda>c       z'test_XXM_constructors.<locals>.<lambda>c                      r"   Nr   r%   r&   )r(   lol_badr&   r*   r+   d   r,   c                      r"   r-   r%   r&   r(   dodr&   r*   r+   e   r,   c                      r"   r#   r%   r&   r/   r&   r*   r+   u   r,   c                      r"   r-   r%   r&   r'   r&   r*   r+   v   r,   c                      r"   r-   r%   r&   )r(   dod_badr&   r*   r+   w   r,   c                         t  dtS r#   r   r   r&   r)   r&   r*   r+   y   r,   c                      r2   r-   r3   r&   )r.   r&   r*   r+   z   r,   c                      r2   r-   r3   r&   )r1   r&   r*   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&   )r(   r0   r1   r)   r.   r*   test_XXM_constructors#   s   
rG   c                  C   s  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rtddgddggdt }tddgddggdt }|| || t|D ]2\}}t|D ])\}}||kr||kd	u sJ ||kd
u sJ q||kd
u sJ ||kd	u sJ qqt|D ]6\}}t|D ]-\}}||kr||kd	u sJ ||kd
u sJ q||kd
u sJ ||kd	u sJ qqt|D ]!\}}t|D ]\}}||kd
u s3J ||kd	u s<J q&q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   r5   	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A2r&   r&   r*   test_XXM_eq~   sR    & &


r`   c            	         s  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rPt| dt }|| |D ]'   |ks\J   |ksdJ tdkryt	t
 fdd	   |ksyJ qRtdkr|D ]`   |ksJ t ttd
tfD ]Kt trtst	t
 fdd	 q tr|} |ksJ  |ksJ qt	t
fdd	  |ksJ qqdS dS )z4Test to_ddm etc. for DDM, SDM, DFM and DomainMatrix.r   r   r   r   r   rH   r   c                            S Nto_dfmr&   rE   r&   r*   r+          ztest_to_XXM.<locals>.<lambda>r   c                      
     S rb   )
convert_tor&   )rE   Kr&   r*   r+         
 c                      ra   rb   rc   r&   )A_Kr&   r*   r+      rf   N)r   r   r   r   r   r   r5   r<   to_sdmr   NotImplementedErrorto_dfm_or_ddmrd   r   r   r   
isinstance_supports_domainrh   )	r)   r0   A_ddmA_sdmA_dm_dA_dm_sA_allA_dfmA_dfm_Kr&   )rE   rk   ri   r*   test_to_XXM   sB    &



rx   c                     s   t d\} }tdv rg }i }tttdt|  t| |f g}n.tdkrFddl}ttg}t|jt|ji}tdt|  t| |f t| |t	g}nJ dt |D ] t
 d	u sYJ t
 |  ksdJ qN|D ] t
 du srJ tt fd
d qgdS )z(Test which domains are supported by DFM.zx, y)pythongmpyr   r   r   NFzUnknown GROUND_TYPES: %sTc                      s
   t  S rb   )r   _get_flint_funcr&   r8   r&   r*   r+     rj   z"test_DFM_domains.<locals>.<lambda>)r   r   r   r   r   r   fmpz_matfmpq_mat
frac_fieldr   r   rp   r{   r   rm   )xy	supportedflint_funcsnot_supportedr   r&   r|   r*   test_DFM_domains   s2    

r   c                 C   sV   t | |}|dkr| S |dkr| S |dkr%tdkr!td | S J d| )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   r<   rl   r   r   rd   )r)   typri   rE   r&   r&   r*   _DM
  s   
r   c                 C      t | |tS )z'Make a DM of type typ over ZZ from lol.)r   r   r)   r   r&   r&   r*   _DMZ     r   c                 C   r   )z'Make a DM of type typ over QQ from lol.)r   r   r   r&   r&   r*   _DMQ  r   r   c                 C      t | d|S )zMake a DDM over K from lol.r   r   r)   ri   r&   r&   r*   DM_ddm$  r   r   c                 C   r   )zMake a SDM over K from lol.r   r   r   r&   r&   r*   DM_sdm)  r   r   c                 C   r   )zMake a DFM over K from lol.r   r   r   r&   r&   r*   DM_dfm.  r   r   c                 C   
   t | dS zMake a DDM from lol.r   r   r4   r&   r&   r*   DMZ_ddm3     
r   c                 C   r   zMake a SDM from lol.r   r   r4   r&   r&   r*   DMZ_sdm8  r   r   c                 C   r   zMake a DFM from lol.r   r   r4   r&   r&   r*   DMZ_dfm=  r   r   c                 C   r   r   r   r4   r&   r&   r*   DMQ_ddmB  r   r   c                 C   r   r   r   r4   r&   r&   r*   DMQ_sdmG  r   r   c                 C   r   r   r   r4   r&   r&   r*   DMQ_dfmL  r   r   r   c                    s   ddgddgg}| |  j \}}g d}|D ];|D ]6d  kr'|k rFn nd  kr3|k rFn n t|  ksEJ qtt fdd qqdS )	zTest getitem for DDM, etc.r   r   r   )r   r   r   r   c                      s     S rb   )getitemr&   rE   ijr&   r*   r+   e  r,   z"test_XDM_getitem.<locals>.<lambda>N)r9   r   r   r   
IndexError)r   r)   r\   rZ   indicesr&   r   r*   test_XDM_getitemV  s   
0"r   c                    s  | 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s8J   dd	td
  | g dg dgksOJ   ddtd  | g dg dgksfJ   ddtd  | g dg dgks}J   ddtd  | g dg dgksJ tt fdd tt fdd   ddtd  | g dg dgksJ   ddtd  | g dg dgksJ   ddtd  | g dg dgksJ   ddtd  | g dg dgksJ tt fd d tt fd!d   dd	td  | g dg d"gks-J   ddtd  | g dg d#gksEJ   ddtd  | g dg d$gks]J   ddtd  | g d%g d$gksuJ   ddtd  | g d&g d$gksJ   ddtd  | g d&g d$gksJ   ddtd  | g d$g d$gksJ   ddtd  | g d'g d$gksJ 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                           ddtdS )Nr   r      setitemr   r&   re   r&   r*   r+         z"test_XDM_setitem.<locals>.<lambda>c                      r   )Nr      r   r&   re   r&   r*   r+     r      )r   r   r      )r   r   r      )r   r   r      )r   r   r   c                      r   )Nr   r      r   r&   re   r&   r*   r+     r   c                      r   )Nr   r      r   r&   re   r&   r*   r+     r   )r   r   r   )r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   r   N)r   r   r   r   r   r&   re   r*   test_XDM_setitemh  sR   "r   c                   @   s   e Zd Zdd ZdS )_Slicedc                 C   s   |S rb   r&   )selfitemr&   r&   r*   __getitem__  s   z_Sliced.__getitem__N)__name__
__module____qualname__r   r&   r&   r&   r*   r     s    r   c                 C   s  | 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s7J |j tdd dd f  | ddgddggksPJ |j tdd d d	f  | d
dgddggksiJ |j tdd d d	df  | d
gdggksJ |j td d d d df  | ddgd
dgddggksJ |j td d dd d f  | g dg dgksJ |j td d dd d df  | ddgddggksJ |j td d dd d df  | ddgddggksJ |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sDJ |j td d d	d d f  | g dg dg dgksbJ 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_slicer   rE   r&   r&   r*   test_XXM_extract_slice  s   "2220:46688<@r   c                    s  | 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s1J   ddgddg| ddgdd	ggksGJ   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spJ   ddgg | dggdtksJ   g g d| dggdtksJ tt fdd tt fdd tt fdd tt fdd | g dg dg dg}| ddgddg| ddgddggksJ d S )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r!   )r   r   c                           ddgddgS )Nr   r   r   r   extractr&   re   r&   r*   r+         z"test_XXM_extract.<locals>.<lambda>c                      r   )Nr   r   r   r   r   r&   re   r&   r*   r+     r   c                      s     ddgddgS )Nr   r   r   r   r&   re   r&   r*   r+     r   c                      r   )Nr   r   r   r   r   r&   re   r&   r*   r+     r   r   )r   zerosr   r   r   )r   Br&   re   r*   test_XXM_extract  s   ,,,&((0r   c                  C   s  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s3J t|  dks=J t|  d	ksGJ t td
tdddtdiddt}t|dkscJ t| dksmJ t| dkswJ t|dksJ tdkrt| dksJ t| dksJ nt| dksJ t| dksJ tdkrt|  dksJ t| dksJ t|  dksJ t| dksJ 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   rH   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}}rz   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   strr<   rl   reprr   rd   )rE   r   r&   r&   r*   test_XXM_str  sx   



(










	r   c                    s   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sLJ tt fdd d S )Nr   r   r   r   r   r   r   r   r   r   r   r$   c                           dtS r-   )	from_listr   r&   T
lol_ZZ_badr&   r*   r+         z$test_XXM_from_list.<locals>.<lambda>)typer   r   r   r   )r   r)   lol_ZZr&   r   r*   test_XXM_from_list  s   ,2r   c                 C   sP   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)   r&   r&   r*   test_XXM_to_list  s   @r   c                 C   sL   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   r&   r&   r*   test_XXM_to_list_flat#  s   <r   c                    sv   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 d S )Nr   r   r   r   r   r   r$   r   r   c                      r   )Nr   )from_list_flatr   r&   r   flatr&   r*   r+   .  r   z)test_XXM_from_list_flat.<locals>.<lambda>)r   r   r   r   r   r   r&   r   r*   test_XXM_from_list_flat)  s   (&r   c                 C   sR   | 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   rH   )r   
to_flat_nzr9   )r   Melementsr   r&   r&   r*   test_XXM_to_flat_nz1  s   r   c                    s|   t | dgg tdtdtdgddf}| g dg dg d	g} |t|ks1J tt fd
d d S )Nr   r   r   r   r   r   r   r   r   c                      s     dftS r#   )from_flat_nzr   r&   r   r   r   r&   r*   r+   A  r   z'test_XXM_from_flat_nz.<locals>.<lambda>)r   r   r   r   r   )r   dataresultr&   r   r*   test_XXM_from_flat_nz9  s   r   c                 C   sP   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   r0   r&   r&   r*   test_XXM_to_dodD  s   ,$r   c                 C   sf   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s1J d S )Nr   r   r   r    r   r   r   r   r$   r   r   )r   r   from_dodr   r   r0   r&   r&   r*   test_XXM_from_dodJ  s   ,*r   c                 C   sH   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   r&   r&   r*   test_XXM_to_dokQ  s   $r  c                 C   s^   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   r&   r&   r*   test_XXM_from_dokX  s
   *r  c                 C   sJ   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   valuesr&   r&   r*   test_XXM_iter_values`  s   "(r
  c                 C   s^   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   r  
iter_items)r   itemsr&   r&   r*   test_XXM_iter_itemsf  s   (r  c                 C   sN   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   ddmr&   r&   r*   test_XXM_from_ddmm  s   &r  c                 C   8   t | dgg}|dt| g dg dgksJ d S )Nr   r$   r   )r   r   r   r   r   r&   r&   r*   test_XXM_zerost     (r  c                 C   r  )Nr   r$   )r   r   r   )r   onesr   r  r&   r&   r*   test_XXM_onesz  r  r  c                 C   sh   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s2J d S )Nr   r   r   r   r   r   r   r   r   r   r   )r   eyer   r  r&   r&   r*   test_XXM_eye  s   *.r  c                 C   sB   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   r  r&   r&   r*   test_XXM_diag  s   2r  c                 C   s>   | 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   r&   r&   r*   test_XXM_transpose  s   *r  c                 C   R   | 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   rE   r   Cr&   r&   r*   test_XXM_add     r%  c                 C   sR   | g dg dg}| g dg dg}| g dg dg}| ||ks'J d S )Nr   r   r   )subr#  r&   r&   r*   test_XXM_sub  r&  r(  c                 C   sd   | g dg dg}t d}||| g dg dgksJ ||| g dg dgks0J d S )Nr   r   r   r   r!  )r   mulrmul)r   rE   br&   r&   r*   test_XXM_mul  s   "&r,  c                 C   sX   | 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   @   )matmulr#  r&   r&   r*   test_XXM_matmul  s   r2  c                 C   r  )Nr   r   )r   r   r   )r      $   )mul_elementwiser#  r&   r&   r*   test_XXM_mul_elementwise  r&  r6  c                 C   s<   | g dg dg}| g dg dg}|  |ksJ d S )Nr   r   )r   r   r   )r   i)neg)r   rE   r$  r&   r&   r*   test_XXM_neg  s   r9  c                 C   sT   | 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   rh   r   rE   r   r&   r&   r*   test_XXM_convert_to  s   r;  c                 C   sT   | 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   r&   r&   r*   test_XXM_scc  s   (r=  c                 C   sz   | g dg dg}| ddgddgg}| g dg dg}| g d	g d
g}| ||ks1J | |||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   rE   r   r$  ABCr&   r&   r*   test_XXM_hstack  s   rA  c                 C   s   | 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sGJ d S )Nr   r   r   )vstackr?  r&   r&   r*   test_XXM_vstack  s   ,rC  c                 C   sD   | g dg dg}| g dg dg}| dd t|ks J d S )Nr   r   r   r!  c                 S   s   d|  S )Nr   r&   )r   r&   r&   r*   r+     rf   z$test_XXM_applyfunc.<locals>.<lambda>)	applyfuncr   r:  r&   r&   r*   test_XXM_applyfunc  s   rE  c                 C   sD   | 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_upperr   r&   r&   r*   test_XXM_is_upper      $rG  c                 C   D   | 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   r&   r&   r*   test_XXM_is_lower  rH  rK  c                 C   rI  )Nr   r   r   r   Tr   r   F)is_diagonalr   r&   r&   r*   test_XXM_is_diagonal  rH  rN  c                 C   s(   | g dg dg  ddgksJ d S )Nr   rL  r   r   )diagonalr   r&   r&   r*   test_XXM_diagonal  s   (rP  c                 C   sD   | 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   r&   r&   r*   test_XXM_is_zero_matrix	  rH  rR  c                 C   sP   | 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   r&   r&   r*   test_XXM_det_ZZ  s   &*rU  c                 C   s.   | ddgddgg}|  tddksJ d S )Nr  r$   r   r   r   r   r   r   )rT  r   r   dM1r&   r&   r*   test_XXM_det_QQ  s   rZ  c                    s   | 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d | g dg dgttfdd d S )Nr  r$   rV  rW  )ir   )   r   )r   r   )r7  r   r   r   r   r   r   r   c                      ra   rb   invr&   )dM3r&   r*   r+   #  rf   z!test_XXM_inv_QQ.<locals>.<lambda>)r  r$   rV  )r\  r]  r  c                      ra   rb   r^  r&   )dM4r&   r*   r+   &  rf   )r_  r1  r   r   r
   )r   rY  dM2r&   )r`  ra  r*   test_XXM_inv_QQ  s   "rc  c                    s0   | g dg dg dg t t fdd d S )Nr   r   rS  c                      ra   rb   r^  r&   rY  r&   r*   r+   .  rf   z!test_XXM_inv_ZZ.<locals>.<lambda>r   r	   r   r&   rd  r*   test_XXM_inv_ZZ)  s   rf  c                 C   s2   | g dg dg dg}|  g dksJ d S )Nr   r   rS  )r   iir   )charpolyrX  r&   r&   r*   test_XXM_charpoly_ZZ1  s   rh  c                 C   s@   | ddgddgg}|  tddtddtddgksJ d S )	Nr  r$   rV  rW  r   ir   r   )rg  r   rX  r&   r&   r*   test_XXM_charpoly_QQ7  s   ,ri  c                    sL   | g dg dg dg | g dg dg dgt t fdd d S )	Nr   r   rS  r   r  r  c                      rg   rb   lu_solver&   rY  rb  r&   r*   r+   A  rj   z&test_XXM_lu_solve_ZZ.<locals>.<lambda>re  r   r&   rl  r*   test_XXM_lu_solve_ZZ=  s   rm  c                    s   | g dg dg dg}| g dg dg dg}| g dg dg d	g}| ||  kr7| ks:J  J | g dg dg | d
dgdd
gddggtt fdd d S )Nr   r   rS  r   r  r  )r   r   )r   r   r  )rn  )r   r   r   r   )r  ro  r  r   r   c                      rg   rb   rj  r&   ra  dM5r&   r*   r+   M  rj   z&test_XXM_lu_solve_QQ.<locals>.<lambda>)rk  r_  r   r   )r   rY  rb  r`  r&   rp  r*   test_XXM_lu_solve_QQD  s   &rr  c                 C   s>   | 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   )	nullspacerX  r&   r&   r*   test_XXM_nullspace_QQP  s   $rt  c                 C   sv   | g dg dg}| g dg dg}| ddgddgg}|  |ks&J | ||fks0J |||ks9J d S )Nr   )r   r   r[  )r   r7  r   r   r   r7  )llllll_transformr1  )r   r   M_lllr   r&   r&   r*   test_XXM_lllY  s   rx  )`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   pytestrG   r`   rx   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  r  r
  r  r  r  r  r  r  r  r%  r(  r,  r2  r6  r9  r;  r=  rA  rC  rE  rG  rK  rN  rP  rR  rU  rZ  rc  rf  rh  ri  rm  rr  rt  rx  r&   r&   r&   r*   <module>   s   [6,*




B

6





























	














