U
    @f~e                  U   @   s"  d dl mZmZmZ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 d dlmZmZmZ d dlZed\ZZZZe
dd	d
ddddddddgdddddddddddgddd d!d"d#d$d%d&d'd(gd)d*d+d,d-d.d/d0d1d2d3gd4d5d6d7d8d9d:d;d<d=d>gd?d@dAdBdCdDdEdFdGdHdIgdJdKdLdMdNdOdPdQdRdSdTgdUdVdWdXdYdZd[d\d]d^d_gd`dadbdcdddedfdgdhdidjgdkdldmdndodpdqdrdsdtdugdvdwdxdydzd{d|d}d~ddggeZedd ede  Zde
dddggee
dddggeedfdeg deeg deedfde
ddgddggee
dd gd dggeedfde
dd gddggee
dd gd dggeedfde
d dgddggee
dd gd dggeedfde
dddgdddgdddggee
dd dgd ddgd d d ggeedfde
d d d gd d d gdd d ggee
dd d gd d d gd d d ggeedfde
d d d gd d d gd d d ggee
d d d gd d d gd d d ggeedfde
ddd gd d dgd d d ggee
ddd gd d dgd d d ggeedfde
ddd gd d dgd d d ggee
ddd gd d dgd d d ggeedfde
ddd gd ddgd d dggee
dd d gd dd gd d dggeedfde
dddgdddgdddgdddggee
dd dgd ddgd d d gd d d ggeedfde
dddgdddgdddgdddggee
dd d gd dd gd d dgd d d ggeedfde
ddddgddddgddddggee
dd d dgd dddgd d d d ggeedfde
ddddgddddgddddggee
dd d dgd dd dgd d dd ggeedfde
ddd dgdddd ggee
dd ddgd dddggeedfde
dddgdddggee
dd d gd ddggeedfde
ddd dd gdd d d d gddddd gd d ddd gdd dd d ggee
dd d d d gd dd d d gd d dd d gd d d dd gd d d d d ggeedfde
dddgdddggee
dd dgd ddggeedfde
d d d d d gd d d d d gd d d d dggee
d d d d dgd d d d d gd d d d d ggeedfde
d d d d d dd d d d g
dd d d d d dd d d g
d dd d d d d dd d g
d d d dd d d d dd g
d d d d dd d d d dg
gee
dd d d d d dd d d g
d dd d d d d dd d g
d d d dd d d d dd g
d d d d dd d d d dg
d d d d d dd d d d g
geedfde
dddd dgddd dd gdd dd dgddd dd gdd d d d ggee
dd d d d gd dd d d gd d dd dgd d d dd gd d d d d ggeedfde
d d d dd d dd d d d d d dd d d d d d gd d d d d dd dddd dd d d d dd d d gdddd d dd d d d d d dd dd d dd d gd d d dd d d d d d d d ddd d dd dd gd dd d d d d d d d d d d d d dd d d dgd d d d d d d d d d d d d d d dd dd d gd d d d d ddd d d d dd d d d d dd d gdd d d d d dd d d d d d d d d d d d dgd dddddd d ddd d dd d d d d d dgd d d d dd dd d d d d d dd d d d dd gd d d d d d d d dd d d ddd dd d d d gd d d dd d d dd d d d d dd d d d ddgd dddd d d d d d d d d dd d d dd d gd d d dddd d d d d d d d d d d dd d gd dd d d dddddd d d d dd dddd gdd dddddd dd dd d d d d d d d d gd d d dd dd d d dd d d d d dd d dd gd d dd dd d d d d dd dd d d dd d d gd d d d ddd d d d d d d d d d d d d dgd dd d d d d d d d ddd d d d dd d d ggee
dd d d d d d d d d d d d d d d d d d d gd dd d d d d d d d d d d d d d d d d d gd d dd d d d d d d d d d d d d d d d d gd d d dd d d d d d d d d d d d d d d d gd d d d dd d d d d d d d d d d d d d d gd d d d d dd d d d d d d d d d d d d d gd d d d d d dd d d d d d d d d d d d d gd d d d d d d dd d d d d d d d d d d d gd d d d d d d d dd d d d d d d d d d d gd d d d d d d d d dd d d d d d d d d d gd d d d d d d d d d dd d d d d d d d d gd d d d d d d d d d d dd d d d d d d d gd d d d d d d d d d d d dd d d d d d d gd d d d d d d d d d d d d dd d d d d d gd d d d d d d d d d d d d d dd d d d d gd d d d d d d d d d d d d d d dd d d d gd d d d d d d d d d d d d d d d dd d d gd d d d d d d d d d d d d d d d d dd d gd d d d d d d d d d d d d d d d d d dd gd d d d d d d d d d d d d d d d d d d dggeedfde
d d d d dd ddd ddd d ddddd d dgd ddd dd d d dd d d d ddd ddd dgd d dd dddd dd dd d d dd d d ddgd ddd ddd ddd d d ddd d dd d d gdd d d ddd d dd dd ddddddd dgd d d d d dd dd ddd d ddd dddd gd ddddd d d d d d ddd d d d dd d gd dd d d dd d dd d d d dd d dd ddgddd dd d dd dddddd d dddd d gdd dd d ddd d dd d d dddd dd dgddd dd dd ddd dd d d d dd dddgd dd dd dd ddd d dd dd dd d d dgd d dd dddddddddddd ddd d gdddd d d dd d dd d d d d d d dddgdddd dddd ddd d d dddd dd dgdd d dd d dd d dddd d d ddd d dgdd dddd d dd d ddddd dd dd dgd d ddddd d dddd d d d d d dd d gdd d d d ddd ddd d d d dddddd gddd ddd dd d dd d dd ddd d ddggee
dd d d d d d d d d d d d d d d d d d d gd dd d d d d d d d d d d d d d d d d d gd d dd d d d d d d d d d d d d d d d d gd d d dd d d d d d d d d d d d d d d d gd d d d dd d d d d d d d d d d d d d d gd d d d d dd d d d d d d d d d d d d d gd d d d d d dd d d d d d d d d d d d d gd d d d d d d dd d d d d d d d d d d d gd d d d d d d d dd d d d d d d d d d d gd d d d d d d d d dd d d d d d d d d d gd d d d d d d d d d dd d d d d d d d d gd d d d d d d d d d d dd d d d d d d d gd d d d d d d d d d d d dd d d d d d d gd d d d d d d d d d d d d dd d d d d d gd d d d d d d d d d d d d d dd d d d d gd d d d d d d d d d d d d d d dd d d d gd d d d d d d d d d d d d d d d dd d d gd d d d d d d d d d d d d d d d d dd d gd d d d d d d d d d d d d d d d d d dd gd d d d d d d d d d d d d d d d d d d dggeedfde
ddddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgddddd ddddddddddddddd dddddddddϐd gdddddddddddddddddddddddddddd ddgddddddddddΐd dd dd dddddddddddddddgdddddddddddddȐdddȐddאdddd dddd	d
dddgddddddddddddddddddddddddddddddgdddddddddddddddddddddddddd ddddgddd d ddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgdddddddddddddddddddd ddddddddddgddddddd dddddddddddddddddddddddgddddddddddddddddddddddddddddddgdddddddddddddddddddddddddddݐd ddgdddddddddddddddddddd ddddddddddgddddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgddddddd ddddddddddddddddՐdddddddgddddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgdddddddddddddddddd ddddddddddddgddddddddddddddddddddddddddddddgdddddddddddѐd ddd dd ddddːd ddddddddgddddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddgdd ddddddddddddddddddddddddddddgddddddddddddddddddddddddddddddggeeedd edddddddddddddddddddd d!d"d#d$d%d&d'd(d)ggeddeddgg  edfd*e
dd gd dggee
dd gd dggeedfd+e
d dgddggee
dd gd dggeedfd,e
dddgdddggee
dd dgd ddggeedfd-e
dddgdddggee
dd dgd ddggeedfd.e
dd gddgd dggee
dd gd dgd d ggeedfd/e
dd dgdd dggee
dd d gd d dggeedfd0eede edfd1eede edfd2e
d dgd dgdd ggee
dd gd dgd d ggeedfd3e
d4ddgdddggee
dd d gd ddggeedfd5e
eedgeedggee
ee ee  d e e gd ee ee  ee ggeeee ee  fg$Zd6d7 Zd8d9 Z d:d; Z!d<d= Z"ej#$d>ed?d@ Z%ej#$d>edAdB Z&ej#$d>edCdD Z'ej#$d>edEdF Z(ej#$d>edGdH Z)ej#$d>edIdJ Z*ej#$d>edKdL Z+ej#$d>edMdN Z,ej#$d>edOdP Z-ej#$d>edQdR Z.ej#$d>edSdT Z/ej#$d>edUdV Z0ej#$d>edWdX Z1ej#$d>edYdZ Z2ej#$d>ed[d\ Z3ej#$d>ed]d^ Z4dS (_      )ZZQQZZ_IEXMatrixeyezerossymbols)DMDomainMatrix)ddm_irref_den	ddm_irref)DDM)SDM	sdm_irrefsdm_rref_denNz
a, b, c, d)      )r      )r      )r      )r      )r      )r      )r      )r      )r      )r      )r   %   )r   )   )r   +   )r   /   )r   5   )r   ;   )r   =   )r   C   )r   G   )r   I   )r   O   )r   S   )r   Y   )r   a   )r   e   )r   g   )r   k   )r   m   )r   q   )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   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i%  )r   i3  )r   i7  )r   i9  )r   i=  )r   iK  )r   iQ  )r   i[  )r   i]  )r   ia  )r   ig  )r   io  )r   iu  )r   i{  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i	  )r   i  )r   i  )r   i#  )r   i-  )r   i3  )r   i9  )r   i;  )r   iA  )r   iK  )r   iQ  )r   iW  )r   iY  )r   i_  )r   ie  )r   ii  )r   ik  )r   iw  )r   i  )r   i  )r   i  )r   i  )r   i  )r   i  
   d   r   Zzz_1r   r   r   Zzz_2)r   r   Zzz_3   Zzz_4Zzz_5Zzz_6r      r      	   Zzz_7Zzz_8Zzz_9Zzz_10Zzz_11Zzz_12   Zzz_13r   Zzz_14   Zzz_15r   Zzz_16   iZzz_17Zzz_18^         r(   U   r&   Q   H   M      "   Zzz_19iZzz_20Zzz_21Zzz_22Z
zz_large_1K   V   \   6   r*      3   `   0   r       F   <   r   r    &   [      E   7   1   X   #   W   r   (   2   b      r"   _   $   r'   r   A      Z   '   ,   c   T   !   4   D   R   r+   r%   *   ]   r!   Z
zz_large_2>   9   r      J      @   r#   r)   :   8   L   ?   r$   -   r      Z
zz_large_3P   B   .            r:   N   r-   {      f      p      l   }#"
<Tvl;(CVW+l   )'K	
)!08c9mJ"~(
l   [OvNeM"by;qyX-s/n l   r9O/]/GWm49lxil   0"M'Y#h	v)Bl   mRC.NR%y?^j<l   Go+5;#)%PFK.a l8`w!ZYg"TWMcW_CX#l   6I5A QF~t,U;'9fl   1x ?Q?fNBzL	lyJT{n'WQ8
%(9*v
l]|FlqUlz>jV% )tl   u, bvC*\lc]\.l(WlnGO~rZ^
l   ~Q71Gty4=GrrY l   	LR'"[ph]dQUS|l   x`w'hY|h/XSOl]: [Z68:?{oLhc	lS/dblR6	w(MBT:`TlthBB^{|69>(l-SEk{L?]6*u#5[(l   /3N?2	GKtsl   I4[,JtQ&9/Qrd^lTjeD0nv
AO@;uM6F~Ol%df8xh6wOiVl"B'[A(2g4,Un!FQl   vg,VvJENjiflD_zR#s%0[eRK*olT^ZH<UF*d7,jqCLlelGz;VGCm"2Y#?5,`+z	Zqq_1Zqq_2Zqq_3Zqq_4Zqq_5Zqq_6
qq_large_1
qq_large_2Zqq_7Zzz_i_1)r   r   ZEX_1c                 C   s   t | tr|  S t | tr,| |j S t| dr@t| dsP|j|j }}n| j| j }}t | tt	frtt	| || S t | t
tfrtt| || S dstdS )z#Convert the answer to DomainMatrix.shapedomainFN)
isinstancer   to_denser   to_DMr   hasattrr   r   listr   dictAssertionError)AZansr   r    r   H/tmp/pip-unpacked-wheel-6uje5nh9/sympy/polys/matrices/tests/test_rref.py_to_DME  s    

r   c                 C   s   t ttt|   S )z%Return the pivots from the rref of A.)tuplesortedmapminto_sdmvalues)A_rrefr   r   r   _pivotsY  s    r   c                 C   sx   | \}}}t |ttttfr4t|tks,tt|}t||}|	|\}}||ksXt||ksdt|t
|ksttdS )zCheck the cancelled result.N)r   r   r   r   r   typer   r   r   Zcancel_denomr   )resultrref_ansden_ansrrefdenpivotsZrref2Zden2r   r   r   _check_cancel^  s    

r   c                 C   sh   | \}}t |ttttfr2t|tks*tt|}| | }t	||}||ksTtt
||ksdtdS )zCheck the divided result.N)r   r   r   r   r   r   r   r   to_fieldr   r   )r   r   r   r   r   r   r   r   _check_dividek  s    
r   zname, A, A_rref, denc                 C   s<   |j }| }| \}}|jr(| }t||f|| d S N)r   Z	to_Matrixr   Zis_EXexpandr   )namer   r   r   KZA_rref_foundr   r   r   r   test_Matrix_rrefw  s    r   c                 C   s   |  }t| || d S r   )r   r   r   r   r   r   r   r   r   r   test_dm_dense_rref  s    r   c                 C   s   t | || d S r   )r   rref_denr   r   r   r   test_dm_dense_rref_den  s    r   c                 C   s    |   }t| || d S r   )r   	to_sparser   r   r   r   r   r   test_dm_sparse_rref  s    r   c                 C   s   |  }t| || d S r   )r   r   r   r   r   r   r   test_dm_sparse_rref_den  s    r   c                 C   s:   |  }|jdd\}}}| | }t||f|| d S )NF)keep_domainr   r   r   r   r   r   r   r   ZA_rref_fZden_fZpivots_fr   r   r   #test_dm_sparse_rref_den_keep_domain  s    r   c                 C   s<   |  }|jddd\}}}| | }t||f|| d S )NFZCDr   methodr   r   r   r   r   &test_dm_sparse_rref_den_keep_domain_CD  s    r   c                 C   s<   |  }|jddd\}}}| | }t||f|| d S )NFZGJr   r   r   r   r   r   &test_dm_sparse_rref_den_keep_domain_GJ  s    r   c                 C   s   |  }t| || d S r   )to_ddmr   r   r   r   r   r   test_ddm_rref_den  s    r   c                 C   s   |  }t| || d S r   )r   r   r   r   r   r   r   test_sdm_rref_den  s    r   c                 C   s    |   }t| || d S r   )r   r   r   r   r   r   r   r   test_ddm_rref  s    r   c                 C   s    |   }t| || d S r   )r   r   r   r   r   r   r   r   test_sdm_rref  s    r   c                 C   s,   |    }t|}t||f|| d S r   )r   r   copyr   r   )r   r   r   r   pivots_foundr   r   r   test_ddm_irref  s    r   c                 C   s6   |   }t||j\}}|||f}t||| d S r   )r   r   r   r   r   )r   r   r   r   Z	den_foundr   r   r   r   r   test_ddm_irref_den  s    
r   c                 C   s(   |   }tt|d d || d S )Nr   )r   r   r   r   r   r   r   r   test_sparse_sdm_rref  s    r   c                 C   s(   |   }|j}tt|||| d S r   )r   r   r   r   r   )r   r   r   r   r   r   r   r   test_sparse_sdm_rref_den  s    r   )5Zsympyr   r   r   r   r   r   r   r	   Zsympy.polys.matricesr
   r   Zsympy.polys.matrices.denser   r   Zsympy.polys.matrices.ddmr   Zsympy.polys.matrices.sdmr   r   r   Zpytestabcdr   r   r   r   ZRREF_EXAMPLESr   r   r   r   markZparametrizer   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   <module>   sL  (



































********************,*******************0****************************************2>>B@@Z>>@>>>@>@>>>@>>@>>B>>>>> "I	






        	