
    \hRt                        S SK Jr  S SKJrJrJrJrJr  S SKJ	r	J
r
JrJrJr  S SKJrJrJrJrJr  S SKJrJr  S SKrS rS rS	 rS
 rS rS rS rS rS r S r!S r"S r#S r$S r%S r&S r'\\ \!/r(\"\#\$/r)\%\&\'/r*\RV                  RY                  S\)5      S 5       r-\RV                  RY                  S\)5      S 5       r. " S S5      r/\/" 5       r0\RV                  RY                  S\)5      S 5       r1\RV                  RY                  S\)5      S 5       r2S r3\RV                  RY                  S\)5      S 5       r4\RV                  RY                  S\)5      S  5       r5\RV                  RY                  S\)5      S! 5       r6\RV                  RY                  S\)5      S" 5       r7\RV                  RY                  S\)5      S# 5       r8\RV                  RY                  S\)5      S$ 5       r9\RV                  RY                  S\)5      S% 5       r:\RV                  RY                  S\)5      S& 5       r;\RV                  RY                  S\)5      S' 5       r<\RV                  RY                  S\)5      S( 5       r=\RV                  RY                  S\)5      S) 5       r>\RV                  RY                  S\)5      S* 5       r?\RV                  RY                  S\)5      S+ 5       r@\RV                  RY                  S\)5      S, 5       rA\RV                  RY                  S\)5      S- 5       rB\RV                  RY                  S\)5      S. 5       rC\RV                  RY                  S\)5      S/ 5       rD\RV                  RY                  S\)5      S0 5       rE\RV                  RY                  S\)5      S1 5       rF\RV                  RY                  S\)5      S2 5       rG\RV                  RY                  S\)5      S3 5       rH\RV                  RY                  S\)5      S4 5       rI\RV                  RY                  S\)5      S5 5       rJ\RV                  RY                  S\)5      S6 5       rK\RV                  RY                  S\(5      S7 5       rL\RV                  RY                  S\)5      S8 5       rM\RV                  RY                  S\)5      S9 5       rN\RV                  RY                  S\)5      S: 5       rO\RV                  RY                  S\)5      S; 5       rP\RV                  RY                  S\)5      S< 5       rQ\RV                  RY                  S\)5      S= 5       rR\RV                  RY                  S\)5      S> 5       rS\RV                  RY                  S\)5      S? 5       rT\RV                  RY                  S\)5      S@ 5       rU\RV                  RY                  S\)5      SA 5       rV\RV                  RY                  S\*5      SB 5       rW\RV                  RY                  S\*5      SC 5       rX\RV                  RY                  S\)5      SD 5       rY\RV                  RY                  S\)5      SE 5       rZ\RV                  RY                  S\*5      SF 5       r[\RV                  RY                  S\)5      SG 5       r\\RV                  RY                  S\*5      SH 5       r]\RV                  RY                  S\*5      SI 5       r^\RV                  RY                  S\)5      SJ 5       r_\RV                  RY                  S\*5      SK 5       r`\RV                  RY                  S\*5      SL 5       ra\RV                  RY                  S\*5      SM 5       rb\RV                  RY                  S\*5      SN 5       rc\RV                  RY                  S\*5      SO 5       rd\RV                  RY                  S\*5      SP 5       re\RV                  RY                  S\)5      SQ 5       rf\RV                  RY                  S\*5      SR 5       rg\RV                  RY                  S\*5      SS 5       rh\RV                  RY                  S\*5      ST 5       ri\RV                  RY                  S\*5      SU 5       rj\RV                  RY                  S\*5      SV 5       rk\RV                  RY                  S\*5      SW 5       rl\RV                  RY                  S\)5      SX 5       rmg)Y    )GROUND_TYPES)ZZQQGFZZ_Isymbols)DMBadInputErrorDMDomainErrorDMNonSquareMatrixErrorDMNonInvertibleMatrixErrorDMShapeError)DMDomainMatrixDDMSDMDFM)raisesskipNc                  	  ^
^^^^ [        S5      [        S5      /[        S5      [        S5      /[        S5      [        S5      //m[        S5      [        S5      S.[        S5      [        S5      S.[        S5      [        S5      S.S.m/ n / n/ / /n0 n0 n0 n[        S5      [        S5      /[        S5      [        S5      /[        S5      [        S5      [        S	5      //m[        S5      [        S5      S.[        S5      [        S5      S.[        S5      [        S5      [        S	5      S.S.m[        /n[        /n[        S
:X  a  UR	                  [
        5        U GH  m
T
" TS[         5      nUR                  S:X  d   eUR                  S:X  d   eUR                  [         :X  d   eUR                  S:X  d   eT
[
        La"  [         R                  " US   S   5      SL d   eO([         R                  " UR                  S   5      SL d   e[        TS[         5      n	T
[
        L a3  U	R                  U:X  d   eU	R                  R                  5       U:w  d   eOo[        S
:X  a3  U	R                  R                  5       U:X  d   eU	R                  U:w  d   eO2U	R                  U:X  d   eU	R                  R                  5       U:X  d   eT
" U S[         5      R                  S:X  d   eT
" US[         5      R                  S:X  d   eT
" US[         5      R                  S:X  d   e[        [        U
U4S j5        [        [        U
U4S j5        [        [        U
U4S j5        GM	     U GH9  m
T
" TS[         5      nUR                  S:X  d   eUR                  S:X  d   eUR                  [         :X  d   eUR                  S:X  d   e[         R                  " US   S   5      SL d   e[        TS[         5      R                  U:X  d   eT
" US[         5      R                  S:X  d   eT
" US[         5      R                  S:X  d   eT
" US[         5      R                  S:X  d   e[        [        U
U4S j5        [        [        U
U4S j5        [        [        U
U4S j5        GM<     [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        g)zTest the DDM, etc constructors.                  r   r   r   r   r      flintr   r   r   Tr   r   r   r   r   r   c                      > T " TS[         5      $ Nr   r   r   XDMlols   [/var/www/auris/envauris/lib/python3.13/site-packages/sympy/polys/matrices/tests/test_xxm.py<lambda>'test_XXM_constructors.<locals>.<lambda>c       C(<    c                      > T " TS[         5      $ Nr    r'   )r)   lol_bads   r+   r,   r-   d       GVR(@r/   c                      > T " TS[         5      $ r1   r'   r)   dods   r+   r,   r-   e   r.   r/   c                      > T " TS[         5      $ r%   r'   r5   s   r+   r,   r-   u   r.   r/   c                      > T " TS[         5      $ r1   r'   r(   s   r+   r,   r-   v   r.   r/   c                      > T " TS[         5      $ r1   r'   )r)   dod_bads   r+   r,   r-   w   r3   r/   c                  &   > [        T S[        5      $ r%   r   r   r*   s   r+   r,   r-   y   s    Lfb$Ar/   c                  &   > [        T S[        5      $ r1   r<   )r2   s   r+   r,   r-   z       L&"$Er/   c                  &   > [        T S[        5      $ r1   r<   )r:   s   r+   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)   r6   r:   r*   r2   s             @@@@@r+   test_XXM_constructorsrS   #   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 < 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! $ ?AB
?EF
?EFr/   c                  (   [        S5      [        S5      /[        S5      [        S5      //n [        S5      [        S5      S.[        S5      [        S5      S.S.n[        S5      [        S5      /[        S5      [        S5      //n[        S5      [        S5      S.[        S5      [        S5      S.S.n[        U S[         5      n[        US[         5      n[        U S[         5      n[        US[         5      n[        US[         5      n[        US[         5      n	[        US[         5      n
[        US[         5      nXEXg/nXX/n[        S:X  aP  [        SS/SS//S[         5      n[        SS/SS//S[         5      nUR                  U5        UR                  U5        [        U5       HK  u  nn[        U5       H6  u  nnUU:X  a  UU:H  S	L d   eUU:g  S
L d   eM"  UU:H  S
L d   eUU:g  S	L a  M6   e   MM     [        U5       HK  u  nn[        U5       H6  u  nnUU:X  a  UU:H  S	L d   eUU:g  S
L d   eM"  UU:H  S
L d   eUU:g  S	L a  M6   e   MM     [        U5       H/  u  nn[        U5       H  u  nnUU:H  S
L d   eUU:g  S	L a  M   e   M1     g)z1Test equality for DDM, SDM, DFM and DomainMatrix.r   r   r   r   r   r   r   r   r   TFN)r   r   r   r   r   r   rA   	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_eqrm   ~   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g/Fg/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                    ^	^
^ [        S5      [        S5      /[        S5      [        S5      //n [        S5      [        S5      S.[        S5      [        S5      S.S.n[        U S[         5      n[        US[         5      n[        U S[         5      n[        US[         5      nX#XE/n[        S:X  a"  [        U S[         5      nUR                  U5        U He  m	T	R                  5       U:X  d   eT	R                  5       U:X  d   e[        S:w  d  M;  [        [        U	4S j5        T	R                  5       U:X  a  Me   e   [        S:X  Ga/  U GH'  m	T	R                  5       W:X  d   e[         [        [        S	5      [        4 H  m[!        T	[
        5      (       a2  [
        R"                  " T5      (       d  [        [        U	U4S
 j5        MJ  T	R%                  T5      m
[
        R"                  " T5      (       a?  UR%                  T5      nT
R                  5       U:X  d   eT
R                  5       U:X  d   eM  [        [        U
4S j5        T
R                  5       UR%                  T5      :X  a  M   e   GM*     gg)z4Test to_ddm etc. for DDM, SDM, DFM and DomainMatrix.r   r   r   r   r   rU   r   c                  $   > T R                  5       $ Nto_dfmrQ   s   r+   r,   test_to_XXM.<locals>.<lambda>   s    
r/   r   c                  &   > T R                  T5      $ rp   )
convert_to)rQ   Ks   r+   r,   rt      s    Qr/   c                  $   > T R                  5       $ rp   rq   )A_Ks   r+   r,   rt      s    CJJLr/   N)r   r   r   r   r   r   rA   rH   to_sdmr   NotImplementedErrorto_dfm_or_ddmrr   r   r   r   
isinstance_supports_domainrv   )r*   r6   A_ddmA_sdmA_dm_dA_dm_sA_allA_dfmA_dfm_KrQ   ry   rw   s            @@@r+   test_to_XXMr      s    qE2a5>BqE2a5>
*CQ%BqE"2a5RU';
<CVR EVR E#vr*F#vr*F6*EwC$UxxzU"""xxzU"""7"&(:;??$---  wA88:&&&"beT*a%%c.B.B1.E.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 +  r/   c                    ^ [        S5      u  p[        S;   a,  / n0 n[        [        [	        S5      [        U    [        X4   /nO[        S:X  ak  SSKn[        [        /n[        UR                  [        UR                  [	        S5      S0n[        U    [        X4   [        R                  " X5      [        /nO S[        -  5       eU HE  m[        R                  " T5      S	L d   eUT   c  M&  [        R                  " T5      UT   :X  a  ME   e   U H2  m[        R                  " T5      SL d   e[        [        U4S
 j5        M4     g)z(Test which domains are supported by DFM.zx, y)pythongmpyr   r   r   NFzUnknown GROUND_TYPES: %sTc                  0   > [         R                  " T 5      $ rp   )r   _get_flint_func)rD   s   r+   r,   "test_DFM_domains.<locals>.<lambda>  s    C,?,?,Gr/   )r   r   r   r   r   r   fmpz_matfmpq_mat
frac_fieldr   r   r~   r   r   r{   )xy	supportedflint_funcsnot_supportedr   rD   s         @r+   test_DFM_domainsr      s/    6?DA))	RA1r!#w7		 H	qE4
 qEqsGMM!
 	@0<??u##F+t333v*&&v.+f2EEEE   ##F+u444"$GH  r/   c                     [        X5      nUS:X  a  UR                  5       $ US:X  a  UR                  5       $ US:X  a%  [        S:w  a  [	        S5        UR                  5       $  SU-  5       e)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   rH   rz   r   r   rr   )r*   typrw   rQ   s       r+   _DMr   
  se    
3
A
e|xxz	xxz	7"89xxz-'#--ur/   c                 "    [        X[        5      $ )z'Make a DM of type typ over ZZ from lol.)r   r   r*   r   s     r+   _DMZr         sr/   c                 "    [        X[        5      $ )z'Make a DM of type typ over QQ from lol.)r   r   r   s     r+   _DMQr     r   r/   c                     [        U SU5      $ )zMake a DDM over K from lol.r   r   r*   rw   s     r+   DM_ddmr   $      sE1r/   c                     [        U SU5      $ )zMake a SDM over K from lol.r   r   r   s     r+   DM_sdmr   )  r   r/   c                     [        U SU5      $ )zMake a DFM over K from lol.r   r   r   s     r+   DM_dfmr   .  r   r/   c                     [        U S5      $ zMake a DDM from lol.r   r   r=   s    r+   DMZ_ddmr   3      Ur/   c                     [        U S5      $ zMake a SDM from lol.r   r   r=   s    r+   DMZ_sdmr   8  r   r/   c                     [        U S5      $ zMake a DFM from lol.r   r   r=   s    r+   DMZ_dfmr   =  r   r/   c                     [        U S5      $ r   r   r=   s    r+   DMQ_ddmr   B  r   r/   c                     [        U S5      $ r   r   r=   s    r+   DMQ_sdmr   G  r   r/   c                     [        U S5      $ r   r   r=   s    r+   DMQ_dfmr   L  r   r/   r   c                 0  ^^^ SS/SS//nU " U5      mTR                   u  p#/ SQnU Hk  mU Hb  mSTs=::  a  U:  a<  O  O9STs=::  a  U:  a,  O  O)TR                  TT5      [        UT   T   5      :X  d   eML  [        [        UUU4S j5        Md     Mm     g)zTest getitem for DDM, etc.r   r   r   )r   r   r   r   c                  (   > T R                  TT5      $ rp   )getitem)rQ   ijs   r+   r,   "test_XDM_getitem.<locals>.<lambda>e  s    199Q?r/   N)rE   r   r   r   
IndexError)r   r*   ri   rg   indicesrQ   r   r   s        @@@r+   test_XDM_getitemr   V  s     q6Aq6
C
3A77DA#GAQ{{rQ{{yyA"SVAY-777z#:;	  r/   c                   ^ U " / SQ/ SQ/5      mTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS	[        S
5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   e[        [        U4S j5        [        [        U4S j5        TR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ SQ/5      :X  d   e[        [        U4S j5        [        [        U4S  j5        TR                  SS	[        S5      5        TU " / SQ/ S!Q/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ S"Q/5      :X  d   eTR                  SS[        S5      5        TU " / SQ/ S#Q/5      :X  d   eTR                  SS[        S5      5        TU " / S$Q/ S#Q/5      :X  d   eTR                  SS[        S5      5        TU " / S%Q/ S#Q/5      :X  d   eTR                  SS[        S5      5        TU " / S%Q/ S#Q/5      :X  d   eTR                  SS[        S5      5        TU " / S#Q/ S#Q/5      :X  d   eTR                  SS[        S5      5        TU " / S&Q/ S#Q/5      :X  d   eg')(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                  <   > T R                  SS[        S5      5      $ )Nr   r      setitemr   rs   s   r+   r,   "test_XDM_setitem.<locals>.<lambda>      qyyAr"v6r/   c                  <   > T R                  SS[        S5      5      $ )Nr      r   rs   s   r+   r,   r     s    qyyB27r/      )r   r   r      )r   r   r      )r   r   r      )r   r   r   c                  <   > T R                  SS[        S5      5      $ )Nr   r      r   rs   s   r+   r,   r     r   r/   c                  <   > T R                  SS[        S5      5      $ )Nr   r      r   rs   s   r+   r,   r     s    qyyQ27r/   )r   r   r   )r   r   r   r   r   r   )r   r   r   )r   r   r   r   r   r   N)r   r   r   r   r   rQ   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                       \ rS rSrS rSrg)_Slicedi  c                     U$ rp    )selfitems     r+   __getitem___Sliced.__getitem__  s    r/   r   N)__name__
__module____qualname____firstlineno__r   __static_attributes__r   r/   r+   r   r     s    r/   r   c                    U " / SQ/ SQ/ SQ/5      nUR                   " [        S S 2S S 24   6 U:X  d   eUR                   " [        SS 2S S 24   6 U " / SQ/ SQ/5      :X  d   eUR                   " [        SS 2SS 24   6 U " SS/SS//5      :X  d   eUR                   " [        SS 2S S	24   6 U " S
S/SS//5      :X  d   eUR                   " [        SS 2S S	S24   6 U " S
/S//5      :X  d   eUR                   " [        S S 2S S S24   6 U " SS/S
S/SS//5      :X  d   eUR                   " [        S S S2S S 24   6 U " / SQ/ SQ/5      :X  d   eUR                   " [        S S S2S S S24   6 U " SS/SS//5      :X  d   eUR                   " [        S S S2S S S24   6 U " SS/SS//5      :X  d   eUR                   " [        S S S2S S S24   6 U " SS/SS//5      :X  d   eUR                   " [        S S S2S S S24   6 U " SS/SS//5      :X  d   eUR                   " [        S S 2S S S	24   6 U " / SQ/ SQ/ SQ/5      :X  d   eUR                   " [        S S S	2S S 24   6 U " / SQ/ SQ/ SQ/5      :X  d   eg )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??F1Q3K(A---??F12a4L)RI0F-GGGG??F12ab5M*b1a&1a&1A.BBBB??F12crc6N+rAq6Aq62B/CCCC??F12er!e8,-aS1#J?????F1SqS5M*b1a&1a&1a&1I.JJJJ??F3Q3q5M*b)Y1G.HHHH??F3Q3ss7O,QFQF3C0DDDD??F3Q3tt8,-aVaV4D1EEEE??F4R4!8,-aVaV4D1EEEE??F4R4"9-."q!fq!f5E2FFFF??F1TrT6N+r9i2S/TTTT??F4R46N+r9i2S/TTTTr/   c                   ^ U " / SQ/ SQ/ SQ/5      mTR                  / SQ/ SQ5      T:X  d   eTR                  SS/SS/5      U " SS/S	S
//5      :X  d   eTR                  SS/SS/5      U " SS/SS	//5      :X  d   eTR                  SS/SS/5      U " SS/SS
//5      :X  d   eTR                  SS/S/5      U " S/S//5      :X  d   eTR                  SS// 5      U " S//5      R                  S[        5      :X  d   eTR                  / / SQ5      U " S//5      R                  S[        5      :X  d   e[        [        U4S j5        [        [        U4S j5        [        [        U4S j5        [        [        U4S j5        U " / SQ/ SQ/ SQ/5      nUR                  SS/SS/5      U " SS/SS//5      :X  d   eg )Nr   r   r   r   r   r   r   r   r   r   r   r   r   r#   )r   r   c                  0   > T R                  SS/SS/5      $ )Nr   r   r   r   extractrs   s   r+   r,   "test_XXM_extract.<locals>.<lambda>      qyy!Q!Q8r/   c                  0   > T R                  SS/SS/5      $ )Nr   r   r   r   r   rs   s   r+   r,   r     s    qyy!Q!R9r/   c                  0   > T R                  SS/SS/5      $ )Nr   r   r   r   rs   s   r+   r,   r     r   r/   c                  0   > T R                  SS/SS/5      $ )Nr   r   r   r   r   rs   s   r+   r,   r     s    qyy"a1a&9r/   r   )r   zerosr   r   r   )r   BrQ   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                     [        / SQ/ SQ/ SQ/S[        5      n [        U 5      S:X  d   e[        U R                  5       5      S:X  d   e[        U R	                  5       5      S:X  d   e[        U 5      S:X  d   e[        U R                  5       5      S:X  d   e[        U R	                  5       5      S	:X  d   e[        [        S
5      [        S5      S.S[        S5      0S.S[        5      n[        U5      S:X  d   e[        UR                  5       5      S:X  d   e[        UR	                  5       5      S:X  d   e[        U5      S:X  d   e[        S:w  a?  [        UR                  5       5      S:X  d   e[        UR	                  5       5      S:X  d   eO>[        UR                  5       5      S:X  d   e[        UR	                  5       5      S:X  d   e[        S:X  a}  [        U R                  5       5      S:X  d   e[        UR                  5       5      S:X  d   e[        U R                  5       5      S:X  d   e[        UR                  5       5      S:X  d   eg g )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   rU   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   strrH   rz   reprr   rr   )rQ   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                   ^^ [        U " S//5      5      m/ SQ/ SQ/n[        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //n[        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      [        S	5      //mTR                  US
[        5      U " U5      :X  d   e[        [        UU4S j5        g )Nr   r   r   r   r   r   r   r   r   r   r   r&   c                  2   > T R                  TS[        5      $ r1   )	from_listr   )T
lol_ZZ_bads   r+   r,   $test_XXM_from_list.<locals>.<lambda>  s    AKK
FB$Gr/   )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                     / SQ/ SQ/nU " U5      R                  5       [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //:X  d   eg 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           	          / SQ/ SQ/nU " U5      R                  5       [        S5      [        S5      [        S5      [        S5      [        S5      [        S5      /:X  d   eg 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                 &  ^^ [        U " S//5      5      m[        S5      [        S5      [        S5      [        S5      [        S5      [        S5      /mTR                  TS[        5      U " / SQ/ S	Q/5      :X  d   e[        [        UU4S
 j5        g )Nr   r   r   r   r   r   r&   r  r   c                  2   > T R                  TS[        5      $ )Nr  )from_list_flatr   )r	  flats   r+   r,   )test_XXM_from_list_flat.<locals>.<lambda>.  s    A$4$4T62$Fr/   )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                     U " / SQ/ SQ/ SQ/5      n[        S5      [        S5      [        S5      /nSnUR                  5       X#UR                  44:X  d   eg )Nr   r   r   r   r   r   r   r   r   r   r!   r   rU   )r   
to_flat_nzrE   )r   Melementsr   s       r+   test_XXM_to_flat_nzr$  1  sP    
Iy),-A1r!ube$H&G<<>h!''(:;;;;r/   c                   ^^^ [        U " S//5      5      m[        S5      [        S5      [        S5      /mSmTS4nU " / SQ/ SQ/ S	Q/5      nTR                  TU[        5      U:X  d   e[        [        UUU4S
 j5        g )Nr   r   r   r   r   r  r  r   r  c                  6   > T R                  TTS4[        5      $ r%   )from_flat_nzr   )r	  r#  r   s   r+   r,   'test_XXM_from_flat_nz.<locals>.<lambda>A  s    ANN8gv=NPR$Sr/   )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                     [        S5      [        S5      S.[        S5      [        S5      [        S5      S.S.nU " / SQ/ S	Q/5      R                  5       U:X  d   eg )
Nr   r   r"   r   r   r   r   r   r   r   r   )r   to_dodr   r6   s     r+   test_XXM_to_dodr0  D  sM    Q%BqE"2a5RUr!u'E
FCy)$%,,.#555r/   c                     [        U " S//5      5      n[        S5      [        S5      S.[        S5      [        S5      [        S5      S.S.nUR                  US	[        5      U " / S
Q/ SQ/5      :X  d   eg )Nr   r   r   r"   r   r   r   r   r&   r-  r   )r  r   from_dodr   r	  r6   s      r+   test_XXM_from_dodr4  J  sb    R!YAQ%BqE"2a5RUr!u'E
FC::c62&"i-C*DDDDr/   c                     [        S5      [        S5      [        S5      [        S5      [        S5      S.nU " / SQ/ SQ/5      R                  5       U:X  d   eg )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                     [        U " S//5      5      n[        S5      [        S5      [        S5      [        S5      [        S5      S.nUR                  US[        5      U " / SQ/ S	Q/5      :X  d   eg )
Nr   r   r   r   r   r6  r&   r-  r   )r  r   from_dokr3  s      r+   test_XXM_from_dokr>  X  s_    R!YAa5"Q%a5"Q%A8C::c62&"i-C*DDDDr/   c                     [        S5      [        S5      [        S5      [        S5      [        S5      /n[        U " / SQ/ SQ/5      R                  5       5      U:X  d   eg )Nr   r   r   r   r-  r   )r   sortediter_values)r   valuess     r+   test_XXM_iter_valuesrC  `  sL    eRUBqE2a5"Q%0F"i+,88:;vEEEr/   c                     S[        S5      4S[        S5      4S[        S5      4S[        S5      4S[        S	5      4/n[        U " / S
Q/ SQ/5      R                  5       5      U:X  d   eg )Nr!   r   r"   r   r7  r8  r   r9  r   r-  r   )r   r@  
iter_items)r   itemss     r+   test_XXM_iter_itemsrG  f  sd    be_vr!uobe_vr!uo1@E"i+,779:eCCCr/   c                     [        U " S//5      5      n[        / SQ/ SQ/S[        5      nUR                  U5      U " / SQ/ SQ/5      :X  d   eg )Nr   r  r   r&   )r  r   r   from_ddm)r   r	  ddms      r+   test_XXM_from_ddmrK  m  sF    R!YA
y)$fb
1C::c?b)Y!78888r/   c                 z    [        U " S//5      5      nUR                  S[        5      U " / SQ/ SQ/5      :X  d   eg )Nr   r&   r   )r  r   r   r   r	  s     r+   test_XXM_zerosrN  t  s6    R!YA7762"i%;"<<<<r/   c                 z    [        U " S//5      5      nUR                  S[        5      U " / SQ/ SQ/5      :X  d   eg )Nr   r&   )r   r   r   )r  onesr   rM  s     r+   test_XXM_onesrQ  z  s6    R!YA66&"Y	$:!;;;;r/   c                     [        U " S//5      5      nUR                  S[        5      U " / SQ/ SQ/ SQ/5      :X  d   eUR                  S[        5      U " SS/SS/SS//5      :X  d   eg )Nr   r   r   r   r   r   r   r   r   r    r   )r  eyer   rM  s     r+   test_XXM_eyerV    sh    R!YA55B<2y)Y?@@@@55QFQFQF#; <<<<r/   c                     [        U " S//5      5      nUR                  / SQ[        5      U " / SQ/ SQ/ SQ/5      :X  d   eg )Nr   r   r   )r   r   r   r  )r  diagr   rM  s     r+   test_XXM_diagrY    s8    R!YA66)R B	9i'H$IIIIr/   c                 j    U " / SQ/ SQ/5      nUR                  5       U " SS/SS/SS//5      :X  d   eg )	Nr   r   r   r   r   r   r   r   )	transposer   s     r+   test_XXM_transposer\    s=    
Iy!"A;;=BAAA78888r/   c                     U " / SQ/ SQ/5      nU " / SQ/ SQ/5      nU " / SQ/ SQ/5      nUR                  U5      U:X  d   eg )Nr   r   r   r   r   r   r   r   )addr   rQ   r   Cs       r+   test_XXM_addrc    sC    
Iy!"A
Iy!"A
I{#$A558q==r/   c                     U " / SQ/ SQ/5      nU " / SQ/ SQ/5      nU " / SQ/ SQ/5      nUR                  U5      U:X  d   eg )Nr   r   r   )subra  s       r+   test_XXM_subrf    sC    
Iy!"A
Iy!"A
Iy!"A558q==r/   c                     U " / SQ/ SQ/5      n[        S5      nUR                  U5      U " / SQ/ SQ/5      :X  d   eUR                  U5      U " / SQ/ SQ/5      :X  d   eg )Nr   r   r   r^  r_  )r   mulrmul)r   rQ   bs      r+   test_XXM_mulrk    sZ    
Iy!"A
1A558r9k2333366!9I{34444r/   c                     U " / SQ/ SQ/5      nU " SS/SS/SS//5      nU " S	S
/SS//5      nUR                  U5      U:X  d   eg )Nr   r   r   r   r   r   r   r         1   @   )matmulra  s       r+   test_XXM_matmulrr    s[    
Iy!"A
QFQFQF#$A
RHr2h A88A;!r/   c                     U " / SQ/ SQ/5      nU " / SQ/ SQ/5      nU " / SQ/ SQ/5      nUR                  U5      U:X  d   eg )Nr   r   )r   r   r   )r      $   )mul_elementwisera  s       r+   test_XXM_mul_elementwiserw    sH    
Iy!"A
Iy!"A
I|$%AQ1$$$r/   c                 h    U " / SQ/ SQ/5      nU " / SQ/ SQ/5      nUR                  5       U:X  d   eg )Nr   r   )r   r   r   )r   i)neg)r   rQ   rb  s      r+   test_XXM_negr{    s2    
Iy!"A
L,'(A557a<<r/   c                     U " / SQ/ SQ/[         5      nU " / SQ/ SQ/[        5      nUR                  [        5      U:X  d   eUR                  [         5      U:X  d   eg )Nr   r   )r   r   rv   r   rQ   r   s      r+   test_XXM_convert_tor~    sR    
Iy!2&A
Iy!2&A<<q   <<q   r/   c           	      x    U " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      nUR                  5       SS/S/S	S
/S//:X  d   eg )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_sccr    sN    
 	A 5571vsQFQC0000r/   c                     U " / SQ/ SQ/5      nU " SS/SS//5      nU " / SQ/ SQ/5      nU " / S	Q/ S
Q/5      nUR                  U5      U:X  d   eUR                  X#5      U:X  d   eg )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   rQ   r   rb  ABCs        r+   test_XXM_hstackr    sy    
Iy!"A
QFQGA
O-./A
,.0 1C88A;!88A>S   r/   c           	          U " / SQ/ SQ/5      nU " / SQ/5      nU " / SQ/ SQ/ SQ/5      nU " / SQ/ SQ/ SQ/ SQ/ SQ/ SQ/5      nUR                  U5      U:X  d   eUR                  X#5      U:X  d   eg )Nr   r   r   )vstackr  s        r+   test_XXM_vstackr    sp    
Iy!"A
I;A
Iy),-A
iIy)YO
PC88A;!88A>S   r/   c                 v    U " / SQ/ SQ/5      nU " / SQ/ SQ/5      nUR                  S [        5      U:X  d   eg )Nr   r   r^  r_  c                     SU -  $ )Nr   r   )r   s    r+   r,   $test_XXM_applyfunc.<locals>.<lambda>  s    1r/   )	applyfuncr   r}  s      r+   test_XXM_applyfuncr    s9    
Iy!"A
I{#$A;;}b)Q...r/   c                     U " / SQ/ SQ/5      R                  5       SL d   eU " / SQ/ SQ/5      R                  5       SL d   eU " / 5      R                  5       SL d   eU " / / /5      R                  5       SL d   eg )Nr   )r   r   r   Tr   F)is_upperr   s    r+   test_XXM_is_upperr    s|    y)$%..0D888y)$%..0E999b6??$$$r2h<  "d***r/   c                     U " / SQ/ SQ/5      R                  5       SL d   eU " / SQ/ SQ/5      R                  5       SL d   eg )Nr   )r   r   r   Tr   r   F)is_lowerr  s    r+   test_XXM_is_lowerr    sD    y)$%..0D888y)$%..0E999r/   c                     U " / SQ/ SQ/5      R                  5       SL d   eU " / SQ/ SQ/5      R                  5       SL d   eg )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                 L    U " / SQ/ SQ/5      R                  5       SS/:X  d   eg )Nr   r  r   r   )diagonalr  s    r+   test_XXM_diagonalr    s'    y)$%..0QF:::r/   c                     U " / SQ/ SQ/5      R                  5       SL d   eU " / SQ/ SQ/5      R                  5       SL d   eg )Nr   Tr   F)is_zero_matrixr  s    r+   test_XXM_is_zero_matrixr    sD    y)$%446$>>>y)$%446%???r/   c                     U " / SQ/ SQ/ SQ/5      R                  5       S:X  d   eU " / SQ/ SQ/ SQ/5      R                  5       S:X  d   eg )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                 `    U " SS/SS//5      nUR                  5       [        SS5      :X  d   eg )Nr9  r&   r   r   r   r   r   r   )r  r   r   dM1s     r+   test_XXM_det_QQr    s3    
uenuen-
.C7792b	!!!r/   c                 :  ^^ U " SS/SS//5      nU " SS/SS//5      nUR                  5       U:X  d   eUR                  U5      U " S	S
/S
S	//5      :X  d   eU " SS/SS//5      m[        [        U4S j5        U " / SQ/ SQ/5      m[        [        U4S j5        g )Nr9  r&   r  r  )ir   )   r   )r   r   )ry  r   r   r   r   r   r   r   c                  $   > T R                  5       $ rp   inv)dM3s   r+   r,   !test_XXM_inv_QQ.<locals>.<lambda>%  s    swwyr/   )r9  r&   r  )r  r  r9  c                  $   > T R                  5       $ rp   r  )dM4s   r+   r,   r  (  s    3779r/   )r  rq  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                 P   ^ U " / SQ/ SQ/ SQ/5      m[        [        U4S j5        g )Nr   r   r  c                  $   > T R                  5       $ rp   r  )r  s   r+   r,   !test_XXM_inv_ZZ.<locals>.<lambda>0  s    #'')r/   r   r
   r  s    @r+   test_XXM_inv_ZZr  +  s!    
iJ/
0C =+,r/   c                 V    U " / SQ/ SQ/ SQ/5      nUR                  5       / SQ:X  d   eg )Nr   r   r  )r   iir   )charpolyr  s     r+   test_XXM_charpoly_ZZr  3  s(    
iJ/
0C<<>----r/   c                     U " SS/SS//5      nUR                  5       [        SS5      [        SS5      [        SS5      /:X  d   eg )	Nr9  r&   r  r  r   ir   r   )r  r   r  s     r+   test_XXM_charpoly_QQr  9  sF    
uenuen-
.C<<>b1gr#bz2b9====r/   c                 v   ^^ U " / SQ/ SQ/ SQ/5      mU " / SQ/ SQ/ SQ/5      m[        [        UU4S j5        g )Nr   r   r  r   rS  rT  c                  &   > T R                  T5      $ rp   lu_solve)r  r  s   r+   r,   &test_XXM_lu_solve_ZZ.<locals>.<lambda>C  s    #,,s"3r/   r  )r   r  r  s    @@r+   test_XXM_lu_solve_ZZr  ?  s0    
iJ/
0C
iI.
/C
=34r/   c                 4  ^^ U " / SQ/ SQ/ SQ/5      nU " / SQ/ SQ/ SQ/5      nU " / SQ/ SQ/ S	Q/5      nUR                  U5      Us=:X  a  UR                  5       :X  d   e   eU " / SQ/ SQ/5      mU " S
S/SS
/SS//5      m[        [        UU4S j5        g )Nr   r   r  r   rS  rT  )r   r   )r   r   r8  )r  )r   r   r   r   )r8  r  r8  r   r   c                  &   > T R                  T5      $ rp   r  )r  dM5s   r+   r,   &test_XXM_lu_solve_QQ.<locals>.<lambda>O  s    c!2r/   )r  r  r   r   )r   r  r  r  r  r  s       @@r+   test_XXM_lu_solve_QQr  F  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                 j    U " / SQ/ SQ/ SQ/5      nUR                  5       U " / SQ/5      S/4:X  d   eg )Nr   r   r   )r   r   r   r   )	nullspacer  s     r+   test_XXM_nullspace_QQr  R  s7    
iI.
/C ==?r:,/!5555r/   c                     U " / SQ/ SQ/5      nU " / SQ/ SQ/5      nU " SS/SS//5      nUR                  5       U:X  d   eUR                  5       X#4:X  d   eUR                  U5      U:X  d   eg )Nr   )r   r   r  )r   ry  r   r   r   ry  )llllll_transformrq  )r   r"  M_lllr	  s       r+   test_XXM_lllr  [  sx    
Iz"#A	;'(E
QFRGA557e??
***88A;%r/   c                 D   [        S5      [        S5      /[        S5      [        S5      //nU " U5      nUR                  5       u  p4UR                  U5      U:X  d   eUR                  5       R                  U5      R                  (       d   eUR
                  (       d   eg )Nr   r   r   r   r   qrrq  r[  r  r  r   r*   rQ   QRs        r+   test_XXM_qr_mixed_signsr  e  s|    qE2b6?RVRUO
,C
3A446DA88A;!KKM  #0000:::r/   c                    [        S5       VVs/ s H*  n[        S5       Vs/ s H  n[        X-   5      PM     snPM,     nnnU " U5      nUR                  5       u  pVUR                  U5      U:X  d   eUR	                  5       R                  U5      R
                  (       d   eUR                  (       d   eg s  snf s  snnf )Nr   )ranger   r  rq  r[  r  r  )r   r   r   r*   rQ   r  r  s          r+   test_XXM_qr_large_matrixr  o  s    389
=9auRy)y!BquIy)9C
=
3A446DA88A;!KKM  #0000::: *
=s   B=B8B=8B=c                 d   [        U " S//5      5      nUR                  S[        5      nUR                  5       u  p4X2:X  d   eXB:X  d   eUR	                  5       R                  U5      R                  (       d   eUR                  (       d   eUR                  S:X  d   eUR                  S:X  d   eg )Nr   r   r  )	r  rU  r   r  r[  rq  r  r  rE   r   r	  rQ   r  r  s        r+   test_XXM_qr_identity_matrixr  y  s    R!YA	aA446DA6M66M6KKM  #0000:::77f77fr/   c                 D   [        S5      [        S5      /[        S5      [        S5      //nU " U5      nUR                  5       u  p4UR                  U5      U:X  d   eUR                  5       R                  U5      R                  (       d   eUR
                  (       d   eg Nr   r   r   r  r  s        r+   test_XXM_qr_square_matrixr    |    qE2a5>BqE2a5>
*C
3A446DA88A;!KKM  #0000:::r/   c                 D   [        S5      [        S5      /[        S5      [        S5      //nU " U5      nUR                  5       u  p4UR                  U5      U:X  d   eUR                  5       R                  U5      R                  (       d   eUR
                  (       d   eg )Nr   r   r   r  r  s        r+   $test_XXM_qr_matrix_with_zero_columnsr    r  r/   c                 D   [        S5      [        S5      /[        S5      [        S5      //nU " U5      nUR                  5       u  p4UR                  U5      U:X  d   eUR                  5       R                  U5      R                  (       d   eUR
                  (       d   eg )Nr   r   r   r  r  s        r+   &test_XXM_qr_linearly_dependent_columnsr    r  r/   c                     [        S5      [        S5      /[        S5      [        S5      //nU " U5      n[        R                  " [        5         UR	                  5         S S S 5        g ! , (       d  f       g = fr  )r   pytestr   r
   r  )r   r*   rQ   s      r+   test_XXM_qr_non_fieldr    sN    qE2a5>BqE2a5>
*C
3A	}	%	 
&	%	%s   A))
A7c                 D   [        S5      [        S5      /[        S5      [        S5      //nU " U5      nUR                  5       u  p4UR                  U5      U:X  d   eUR                  5       R                  U5      R                  (       d   eUR
                  (       d   eg r  r  r  s        r+   test_XXM_qr_fieldr    r  r/   c                 n   [        S5      [        S5      /[        S5      [        S5      /[        S5      [        S5      //nU " U5      nUR                  5       u  p4UR                  U5      U:X  d   eUR                  5       R                  U5      R                  (       d   eUR
                  (       d   eg Nr   r   r   r   r   r   r  r  s        r+   test_XXM_qr_tall_matrixr    s    qE2a5>BqE2a5>BqE2a5>
:C
3A446DA88A;!KKM  #0000:::r/   c                 l   [        S5      [        S5      [        S5      /[        S5      [        S5      [        S5      //nU " U5      nUR                  5       u  p4UR                  U5      U:X  d   eUR                  5       R                  U5      R                  (       d   eUR
                  (       d   eg r  r  r  s        r+   test_XXM_qr_wide_matrixr    s    qE2a5"Q% 2a5"Q%A"7
8C
3A446DA88A;!KKM  #0000:::r/   c                    [        U " S//5      5      nUR                  S[        5      nUR                  5       u  p4UR	                  U5      R
                  UR
                  :X  d   eUR                  5       R	                  U5      R                  (       d   eUR                  (       d   eUR
                  S:X  d   eUR
                  S:X  d   eg )Nr   r!   	r  r   r   r  rq  rE   r[  r  r  r  s        r+   test_XXM_qr_empty_matrix_0x0r        R!YA	A446DA88A;'''KKM  #0000:::77f77fr/   c                    [        U " S//5      5      nUR                  S[        5      nUR                  5       u  p4UR	                  U5      R
                  UR
                  :X  d   eUR                  5       R	                  U5      R                  (       d   eUR                  (       d   eUR
                  S:X  d   eUR
                  S:X  d   eg )Nr   r#   r!   r  r  s        r+   test_XXM_qr_empty_matrix_2x0r    r  r/   c                    [        U " S//5      5      nUR                  S[        5      nUR                  5       u  p4UR	                  U5      R
                  UR
                  :X  d   eUR                  5       R	                  U5      R                  (       d   eUR                  (       d   eUR
                  S:X  d   eUR
                  S:X  d   eg )Nr   r"   r!   r  r  s        r+   test_XXM_qr_empty_matrix_0x2r    r  r/   c                    U " SS/SS//5      nUR                  5       u  p#pEUR                  [        5      nUR                  [        5      nUR                  [        5      nUR                  [        5      n	UR                  [        5      n
UR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eUR                  UR                  :X  d   eX " SS/SS//5      :X  d   eX0" SS/SS//5      :X  d   eX@" SS/SS//5      :X  d   eXP" SS/SS//5      :X  d   eUR	                  U	R                  5       5      R	                  U
5      UR	                  U5      :X  d   eg )Nr   r   r   r   r   r   )fflurv   r   rE   rq  r  )r   rQ   PLDUA_fieldP_fieldL_fieldD_fieldU_fields              r+   test_XXM_fflur    sw   
QFQFAJA!ll2Gll2Gll2Gll2Gll2G77agg77agg77agg77aggQFQF#$$$$QFQG$%%%%QFQG$%%%%QFQG$%%%%>>'++-(//8GNN7<SSSSr/   )n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   r  rS   rm   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+  r0  r4  r;  r>  rC  rG  rK  rN  rQ  rV  rY  r\  rc  rf  rk  rr  rw  r{  r~  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  r  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'  (  w' ( w' ( w'	 (	 w' ( w' ( w' ( w' ( w' ( w' ( w' ( w' ( w' ( w' ( w'T (Tr/   