
    MZd                     t    d dl mZ 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 d dlmZmZ d dlmZmZ d Zd Zy	)
    )raises)Symbol)invariant_factorssmith_normal_formhermite_normal_form_hermite_normal_form_hermite_normal_form_modulo_D)ZZQQ)DomainMatrixDM)DMDomainErrorDMShapeErrorc                     t        g dg dg dg dgt              } t        g dg dg dg dgt              }t        |       j                         |k(  sJ t	        d	      t        d
z
  d
dgddgddggt
                 } | j                  j                  d   }t        |       d
|d
z
  |dz  d
z
  fk(  sJ t        g dt              }t        g g gdt              }t        |      j                         |k(  sJ t        |      j                         |k(  sJ t        t        ddggt                    j                         t        ddggt              k(  sJ t        t        ddggt                    j                         t        ddggt              k(  sJ t        t        dgdggt                    j                         t        dgdggt              k(  sJ t        g dg dg dgt              } t        g dg dg dgt              }t        |       j                         |k(  sJ t        t        fd       y )N)            )   	   r   r   )            )   
   r   r   )   r   r   r   )r   r   r   r   )r   r   ir   )r   r   r   r   xr   r   r   )r   r   )r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                  @    t        t        dggt                        S Nr   )r   r   r
   )r   s   M/usr/lib/python3/dist-packages/sympy/polys/matrices/tests/test_normalforms.py<lambda>z#test_smith_normal.<locals>.<lambda>&   s    0aSE2a51AB     )r   r
   r   to_denser   r   domaingensr   r   r   
ValueError)msmfdxzrzcsnfr   s         @r#   test_smith_normalr0      s   
M=/;KLbQA
lM><H"
MCQ((*c111sA
QqS1bM1bM"qMqE	#A 
q	BQAr!tRU1W#5555	b&"	%B	r2h	+BR ))+r111R ))+r111R!Q"-.779R!Q"=MMMMR!R	2./88:b2q'B>OOOOR!rdR01::<RD1#;PR@SSSS
lL,7
<A
lL,7
<CQ((*c111
:BCr%   c                     t        g dg dg dgt              t        g dg dg dgt              } t              | k(  sJ t        t        d            | k(  sJ t        t        d      d	
      | k(  sJ j                         t        g dg dg dg dg dgt              } t              | k(  sJ t	        t
        fd       t	        t        fd       t        g dg dg dgt              t        g dg dg dgt              } t              | k(  sJ t        t        d            | k(  sJ t        t        d      d	
      | k(  sJ t        g dg dg dgt              t        ddgddgddggt              } t              | k(  sJ t        ddgddgddggt              t        dgdgdggt              } t              | k(  sJ t        ddgddggt              t        ddgddggt              } t              | k(  sJ t        t        d      ggdt              t	        t        fd       t	        t        fd       t	        t        fd       y ) N)r            )   )r            +   )         %   /   )r   r   r   )r   r   r   )r   r   r   r   )DT)r?   
check_rank)r=   r   r7   )   iq   )0   r      c                  .    t         t        d            S N`   r	   r
   r*   s   r#   r$   z%test_hermite_normal.<locals>.<lambda>3   s    !>q"R&!I r%   c                  .    t         t        d            S rF   )r	   r   rI   s   r#   r$   z%test_hermite_normal.<locals>.<lambda>4   s    "?2b6"J r%   )r   r   D   t      )r   r   r   r   )r   r   r      r   )-   $         r   )r:   r   r   r   r      r   r   r   r2   r    )r   r   c                      t               S N)r   rI   s   r#   r$   z%test_hermite_normal.<locals>.<lambda>I   s    "5a"8 r%   c                      t               S rU   )r   rI   s   r#   r$   z%test_hermite_normal.<locals>.<lambda>J   s    "6q"9 r%   c                  .    t         t        d            S r"   rH   rI   s   r#   r$   z%test_hermite_normal.<locals>.<lambda>K   s    "?2a5"I r%   )	r   r
   r   	transposer   r   r   r   r   )hnfr*   s    @r#   test_hermite_normalrZ   )   s;   
 35HI2NA
iI.
3Cq!S(((qBqE*c111qBqEd;sBBB	A
k>;	9Mr
RCq!S(((
<IJ
=JK
!#68KLbQA
iI.
3Cq!S(((qBqE*c111qBqEd;sBBB
2ODbIA
r1g1v1v&
+Cq!S(((
QFQFQF#R(A
qcA3_b
!Cq!S(((
RGaVb!A
q!fq!fr
"Cq!S(((r!ugY+A
=89
=9:
=IJr%   N)sympy.testing.pytestr   sympy.core.symbolr    sympy.polys.matrices.normalformsr   r   r   r   r	   sympy.polys.domainsr
   r   sympy.polys.matricesr   r   sympy.polys.matrices.exceptionsr   r   r0   rZ    r%   r#   <module>rb      s.    ' $N N ' 1 GD:"Kr%   