o
    şĽg9ż  ă                   @   sP  d dl mZ d dlmZ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 d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlm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/d)d* Z0d+d, Z1d-d. Z2d/d0 Z3d1d2 Z4d3d4 Z5d5d6 Z6d7d8 Z7d9d: Z8d;d< Z9d=d> Z:d?d@ Z;dAdB Z<dCdD Z=dEdF Z>dGdH Z?dIdJ Z@dKdL ZAdMdN ZBdOdP ZCdQdR ZDdSdT ZEdUdV ZFdWdX ZGdYdZ ZHd[d\ ZId]d^ ZJd_d` ZKdadb ZLdcdd ZMdedf ZNdgdh ZOdidj ZPdkdl ZQdmdn ZRdodp ZSdqdr ZTdsdt ZUdudv ZVdwdx ZWdydz ZXd{d| ZYd}d~ ZZdd Z[dd Z\dd Z]dd Z^dd Z_dd Z`dd Zadd Zbdd Zcdd Zddd Zedd Zfdd Zgdd Zhdd Zidd Zjdd  ZkdĄd˘ ZldŁd¤ ZmdĽdŚ Znd§d¨ ZodŠdŞ ZpdŤdŹ Zqd­dŽ ZrdŻd° Zsdąd˛ ZtdłS )´é    )ÚGROUND_TYPES)ÚIntegerÚRationalÚSÚsqrtÚMatrixÚsymbols)ÚFFÚZZÚQQÚQQ_IÚEXRAW)ÚDomainMatrixÚDomainScalarÚDM)ÚDMBadInputErrorÚDMDomainErrorÚDMShapeErrorÚDMFormatErrorÚDMNotAFieldÚDMNonSquareMatrixErrorÚDMNonInvertibleMatrixError)ÚDDM)ÚSDM)Úraisesc                  C   s   t tdtdgtdtdggdt} tddgddggt}tdkr+|j| ks*J n	|j|  Ą ks4J |jdks;J |jtksBJ d S )Né   é   é   é   Šr   r   Úflint)r   r
   r   r   ÚrepÚto_dfmÚshapeÚdomain)ÚddmÚAŠ r'   úc/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_domainmatrix.pyÚtest_DM   s   (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krA|j ks@J n	|j  Ą ksJJ |jdksQJ |jt ksXJ t| dt }|jkseJ |jdkslJ |jt kssJ t	t
 fdd	 t	t
fd
d	 t	t
dd	  dfd ffD ].\}}|dkr¤tdkr¤| Ą }tdt |d}|j|ksłJ t| dt |d}|j|ksÂJ qt	tfdd	 t	tdd	  d S )Nr   r   r   r   Šr   r   r   r    c                      ó   t  dtS ŠNr   Šr   r
   r'   )r%   r'   r(   Ú<lambda>/   ó    z(test_DomainMatrix_init.<locals>.<lambda>c                      r+   r,   r-   r'   )Úsdmr'   r(   r.   0   r/   c                   S   s   t tdggdtS )Nr   Šr   r   )r   r   r
   r'   r'   r'   r(   r.   1   ó    ÚsparseÚdenseŠÚfmtc                      s   t  dtddS )Nr   Úinvalidr5   r-   r'   )Úlolr'   r(   r.   ;   ó    c                   S   s   t tdtdggdtS )Nr   r   r   r-   r'   r'   r'   r(   r.   =   ó    )r
   r   r   r   r   r!   r"   r#   r$   r   Ú	TypeErrorÚ
ValueErrorr   )Údodr&   r6   r!   r'   )r%   r8   r0   r(   Útest_DomainMatrix_init   s4    &r>   c                     sč   t tdtdgtdtdggdt} t | Ą  j| ks J  jdks'J  jtks.J ttdtddtdtddddt}t |Ą  j|ksQJ  jdksXJ  jtks_J ttdggdt tt	 fdd	 d S )
Nr   r   r   r   r   r*   r1   c                      s
   t   ĄS ŠN)r   Úfrom_repr'   Šr&   r'   r(   r.   O   ó   
 z,test_DomainMatrix_from_rep.<locals>.<lambda>)
r   r
   r   r@   r!   r#   r$   r   r   r;   )r%   r0   r'   rA   r(   Útest_DomainMatrix_from_rep@   s   (
.
rC   c                  C   s  t tdtdgtdtdggdt} t ddgddggtĄ}tdkr,|j| ks+J n	|j|  Ą ks5J |jdks<J |jtksCJ t	d}t |d|dg|d|dggd|} t ddgddgg|Ą}|j| ksnJ |jdksuJ |j|ks|J t t
ddt
ddgt
ddt
ddggdt
} t d	d
gddggt
Ą}tdkrŹ|j| ksŤJ n	|j|  Ą ksľJ |jdksźJ |jt
ksĂJ d S )Nr   r   r   r   r   r    é   é   Šr   r   Šr   r   Šr   r   )rE   r   )r   r
   r   Ú	from_listr   r!   r"   r#   r$   r	   r   )r%   r&   Údomr'   r'   r(   Útest_DomainMatrix_from_listR   s(   ((0rK   c                  C   sR  t tdtdgtdtdggdt} t ddddgddggĄ}tdkr-|j| ks,J n	|j|  Ą ks6J |jdks=J |jtksDJ t	 
tdĄ}t | dtd Ą| dtd Ąg| dtd Ą| dtd Ąggd|} tjdddtd dtd gdtd dtd ggdd}|j| ksJ |jdks J |j|ks§J d S )	Nr   r   r   r   r   r    TŠÚ	extension)r   r
   r   Úfrom_list_sympyr   r!   r"   r#   r$   r   Úalgebraic_fieldr   Úconvert)r%   r&   ÚKr'   r'   r(   Ú!test_DomainMatrix_from_list_sympyn   s,   (""˙ü2ţrR   c                     sŞ   t dtddidtddiddt} dtddidtddid}t dd|Ą}|j| ks0J |jdks7J |jtks>J tj tt	 fdd tt	 fd	d d S )
Nr   r   r   r   r*   r   c                      ó    ddddt ddiiS )Nr   r   r   r   Šr   r'   ŠÚfdsr'   r(   r.      r:   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>c                      rS   )Nr   r   r   r   rT   r'   rU   r'   r(   r.      r:   )
r   r   r   r   Úfrom_dict_sympyr!   r#   r$   r   r   )r0   Ú
sympy_dictr&   r'   rU   r(   Ú!test_DomainMatrix_from_dict_sympy   s   &rY   c                  C   sî  t tdtddtdtddddt} t tddgddggĄ}|j| ks+J |jdks2J |jtks9J t 	t
dĄ}t | dt
d Ą| dt
d Ąd| dt
d Ą| dt
d Ąddd|} tjtdt
d dt
d gdt
d dt
d ggdd}|j| ksJ |jdksJ |j|ksJ tjttddtddgtd	dtd	dggd
d}ttddtddgtd	dtd	dggdt}tdkrŢ|j|ksÝJ n	|j| Ą ksçJ |jdksîJ |jtksőJ d S )Nr   r   r*   r   r   r   TrL   r   r4   r5   r    )r   r
   r   Úfrom_Matrixr   r!   r#   r$   r   rO   r   rP   r   r   r"   )r0   r&   rQ   r%   r'   r'   r(   Útest_DomainMatrix_from_Matrix   s6   .$$˙ü2ţ60r[   c                  C   s   t tdtdgtdtdggdt} | | ksJ t tdtdgtdtdggdt}| |ks4J tdtdgtdtdgg}| |ksJJ d S ŠNr   r   r   r   r   r-   Šr&   ÚBÚCr'   r'   r(   Útest_DomainMatrix_eq´   s   (( r`   c                  C   sĆ   t tdtdgtdtdggdt} t tdtdgtdtdggdt}t tdtdgtdtdggdt}t tdggdt}|  |Ądu sOJ |  |Ądu sXJ |  |Ądu saJ d S )	Nr   r   r   r   r   r1   TF)r   r
   r   Úunify_eq)r&   ÚB1ÚB2ÚB3r'   r'   r(   Útest_DomainMatrix_unify_eq˝   s   (((re   c                  C   s   t  g d˘Ą\} }|tdtdtdtdgksJ | tks!J t  dddtddgĄ\} }|tdtdtdtddgksBJ | tksHJ d S )N)r   r   r   r   r   r   r   r   )r   Ú
get_domainr
   r   r   )rQ   Úitemsr'   r'   r(   Útest_DomainMatrix_get_domainÇ   s   $&rh   c                  C   sf   t tdtdgtdtdggdt} |  tĄ}|t tdtdgtdtdggdtks1J d S r\   )r   r
   Ú
convert_tor   Šr&   ÚAqr'   r'   r(   Útest_DomainMatrix_convert_toŃ   s   (
4rl   c                  C   sş   ddgddgg} t | t Ą t | tksJ t | tjddt | tks&J t | tjddt | tks6J td}d|g|d |d gg}t |t| jddt |t |Ąks[J d S )Nr   r   r   r   T)ÚfieldÚx)r   r   Úchoose_domainr
   r   Ú
frac_field)r&   rn   r^   r'   r'   r(   Útest_DomainMatrix_choose_domain×   s     .rq   c                  C   sś   t ddgddggt} | j Ą }| j Ą }| ||fD ]>}| Ą \}}| |||jĄ|ks.J dd |D }| ||tĄ| 	tĄksCJ dd |D }| |||jĄd| ksXJ qd S )Nr   r   r   r   c                 S   s   g | ]}t |qS r'   Šr   ŠÚ.0Úer'   r'   r(   Ú
<listcomp>é   r2   z0test_DomainMatrix_to_flat_nz.<locals>.<listcomp>c                 S   s   g | ]}d | qS )r   r'   rs   r'   r'   r(   rv   ë   r2   )
r   r
   r!   Úto_ddmÚto_sdmÚ
to_flat_nzÚfrom_flat_nzr$   r   ri   )ÚAdmÚAddmÚAsdmr&   ÚelemsÚdataÚelemsqÚelems2r'   r'   r(   Útest_DomainMatrix_to_flat_nzâ   s   

úr   c                  C   sB   t tdtdgtdtdggdt} |  Ą |  tĄksJ d S r\   )r   r
   Úto_sympyri   r   rA   r'   r'   r(   Útest_DomainMatrix_to_sympyď   s   (r   c                  C   sd   t tdtdgtdtdggdt} |  Ą }|t tdtdgtdtdggdtks0J d S r\   )r   r
   Úto_fieldr   rj   r'   r'   r(   Útest_DomainMatrix_to_fieldô   s   (4r   c                  C   sT   t tdtdgtdtdggdt} |  Ą }|jdddddddks(J d S )Nr   r   r   r   r   r*   )r   r
   Ú	to_sparser!   )r&   ÚA_sparser'   r'   r(   Útest_DomainMatrix_to_sparseú   s   ($r   c                  C   sn   t ddddddddt} |  Ą }tddgddggdt}tdkr,|j|ks*J d S |j| Ą ks5J d S )Nr   r   r*   r   r   r   r    )r   r
   Úto_denser   r   r!   r"   )r&   ÚA_denser%   r'   r'   r(   Útest_DomainMatrix_to_dense   s   r   c                     sň  t tdtdgtdtdggdt} t tdtdgtdtdggdt}|  | Ą| | fks3J |  |Ą||fks>J | | Ą||fksIJ | |Ą||fksTJ t dtdidtdiddtt tdtdgtdtdggdt  ĄfksJ    Ą  fksJ j dd	\}}|jtddgddggdt Ą ksŤJ |jtddgddggdt Ą ksžJ j d
d	\}}|jtddiddiddtksŮJ |jtddddddddtksíJ tt	 fdd d S )Nr   r   r   r   r   r   r*   r4   r5   r3   c                      s   j  ddS )Nr7   r5   )Úunifyr'   ŠÚAdÚAsr'   r(   r.      ó    z)test_DomainMatrix_unify.<locals>.<lambda>)
r   r
   r   r   r!   r   Úto_dfm_or_ddmr   r   r<   )ÚAzrk   ÚBsÚBdr'   r   r(   Útest_DomainMatrix_unify
  s"   (("(&&$(r   c                  C   s   t tdtdgtdtdggdt} tddgddgg}|  Ą |ks&J |  Ą  Ą |ks0J |  tĄ Ą |ks;J |  t tdĄĄ Ą |ksKJ d S r\   )	r   r
   r   Ú	to_Matrixr   ri   r   rO   r   )r&   ÚA_Matrixr'   r'   r(   Útest_DomainMatrix_to_Matrix#  s   ($r   c                  C   sX   t tdtdgtdtdggdt} |  Ą tdtdgtdtdggks*J d S r\   )r   r
   Úto_listrA   r'   r'   r(   Útest_DomainMatrix_to_list,  s   (0r   c                  C   óT   t tdtdgtdtdggdt} |  Ą tdtdtdtdgks(J d S r\   )r   r
   Úto_list_flatrA   r'   r'   r(   Útest_DomainMatrix_to_list_flat1  ó   (,r   c                  C   r   r\   )r   r
   ÚflatrA   r'   r'   r(   Útest_DomainMatrix_flat6  r   rĄ   c                  C   sę   t dt dt dt dg} tt dt dgt dt dggdt }t | dt Ą|ks-J t | dt Ą|j Ą ks;J t | dt Ą|j Ą ksIJ || | Ą |j	|j
ĄksXJ tttj| dt  tttj| dt  tttj| dt  d S )Nr   r   r   r   r   Šr   r   )r
   r   Úfrom_list_flatr   r!   rw   r   rx   r   r#   r$   r   r   )Únumsr&   r'   r'   r(   Ú test_DomainMatrix_from_list_flat;  s   (rĽ   c                  C   sŹ   t tdtdgtdtdggdt} |  Ą tdtddtdtdddks-J t tdtdgtdtdggdt} |  Ą dtdidtdidksTJ d S )Nr   r   r   r   r   r*   r   )r   r
   Úto_dodrA   r'   r'   r(   Útest_DomainMatrix_to_dodJ  s   (2(*r§   c                  C   s   t dt ddt dt ddd} tddgddggt }t | dt Ą| Ą ks+J | | Ą|ks4J | | tĄ| tĄksAJ d S )Nr   r   r*   r   r   r   )r
   r   r   Úfrom_dodr   Úfrom_dod_liker   ri   Šrg   r&   r'   r'   r(   Útest_DomainMatrix_from_dodQ  s
   &rŤ   c                  C   sô   t tdtdgtdtdggdt} |  Ą tdtdtdtddks)J t tdtdgtdtdggdt} tdtdd}|  Ą |ksNJ |  Ą  Ą |ksXJ |  Ą  Ą |ksbJ | j Ą  Ą |ksmJ | j Ą  Ą |ksxJ d S )	Nr   r   r   r   r   )Šr   r   r*   Šr   r   r1   r   ŠrŹ   r1   )r   r
   Úto_dokr   r   r!   rw   rx   )r&   Údokr'   r'   r(   Útest_DomainMatrix_to_dokY  s   (*(rą   c                  C   s~   t dt dd} tddgddggt }t | dt Ą| Ą ks!J t | dt Ą|j Ą ks/J t | dt Ą|j 	Ą ks=J d S )Nr   r   rŽ   r   r   )
r
   r   r   Úfrom_dokr   r   r!   rw   r   rx   rŞ   r'   r'   r(   Útest_DomainMatrix_from_doke  s
    rł   c                  C   s<   t tdtdgtdtdggdt} t| dksJ d S )Nr   r   r   r   r   z*DomainMatrix([[1, 2], [3, 4]], (2, 2), ZZ))r   r
   ÚreprrA   r'   r'   r(   Útest_DomainMatrix_reprm  s   (rľ   c                  C   sd   t tdtdgtdtdggdt} t tdtdgtdtdggdt}|  Ą |ks0J d S r\   )r   r
   Ú	transpose)r&   ÚATr'   r'   r(   Útest_DomainMatrix_transposer  ó   ((r¸   c                  C   sH   t tdggdt} t tdggdt}| jdu sJ |jdu s"J d S )Nr   r1   r   FT)r   r
   Úis_zero_matrixŠr&   r^   r'   r'   r(   Ú test_DomainMatrix_is_zero_matrixx  s   rź   c                  C   sp   t tdtdgtdtdggdt} t tdtdgtdtdggdt}| jdu s/J |jdu s6J d S )	Nr   r   r   r   r   r   TF)r   r
   Úis_upperrť   r'   r'   r(   Útest_DomainMatrix_is_upper  ó   ((rž   c                  C   sp   t tdtdgtdtdggdt} t tdtdgtdtdggdt}| jdu s/J |jdu s6J d S )	Nr   r   r   r   r   r   TF)r   r
   Úis_lowerrť   r'   r'   r(   Útest_DomainMatrix_is_lower  rż   rÁ   c                  C   sx   t ddgddggt} t ddgddggt}| j|  Ą j  u r%du s(J  J |j| Ą j  u r7du s:J  J d S )Nr   r   r   r   r   TF)r   r
   Úis_diagonalr   rť   r'   r'   r(   Útest_DomainMatrix_is_diagonal  s   $(rĂ   c                  C   s~   t tdtdgtdtdggdt} t tdtdgtdtdgtdtdggdt}| jd	u s6J |jd
u s=J d S )Nr   r   r   r   r   rE   é   Šr   r   TF)r   r
   Ú	is_squarerť   r'   r'   r(   Útest_DomainMatrix_is_square  s   (6rÇ   c                  C   sč   t ddgddggt} |  Ą |  Ą  Ą   kr"tdtdgks%J  J t ddgddgddggt} |  Ą |  Ą  Ą   krJtdtdgksMJ  J t g d˘g d˘gt} |  Ą |  Ą  Ą   krotdtdgksrJ  J d S )	Nr   r   r   r   rE   rÄ   )r   r   r   )r   rE   rÄ   )r   r
   Údiagonalr   rA   r'   r'   r(   Útest_DomainMatrix_diagonal  s   448rÉ   c                  C   sJ   t tdtdgtdtdgtdtdggdt} |  Ą dks#J d S )Nr   r   r   r   rÄ   é   rĹ   )r   r   ÚrankrA   r'   r'   r(   Útest_DomainMatrix_rank¤  s   6rĚ   c                     s0  t tdtdgtdtdggdt t tdtdgtdtdggdt}       Ą  kr8| ks;J  J t tdtdgtdtdggdt ddgddggtt fdd	 tt fd
d	 t tdtdgtdtdggdtt tdtdggdtttfdd	 ttfdd	 ttfdd	 ttfdd	 t tdtdgtdtdggdtt tdtdgtdtdggdtt tdtdgtdtdggdt} |ksřJ  |ksJ ttfdd	 ttfdd	 t dtdidtdiddtt tdtdgtdtdggdt } }|t ddgddggdtksSJ |jt	ddgddggdt 
Ą ksgJ |t ddgddggdtksxJ |jt	ddgddggdt 
Ą ksJ ttfdd	 d S )Nr   r   r   r   r   rÄ   rĘ   c                      ó     S r?   r'   r'   Šr&   ÚLr'   r(   r.   °  ó    z'test_DomainMatrix_add.<locals>.<lambda>c                      ó     S r?   r'   r'   rÎ   r'   r(   r.   ą  rĐ   rF   c                      rÍ   r?   r'   r'   ŠÚA1ÚA2r'   r(   r.   ľ  rĐ   c                      rŃ   r?   r'   r'   rŇ   r'   r(   r.   ś  rĐ   c                      ó
      ĄS r?   ŠÚaddr'   rŇ   r'   r(   r.   ˇ  rB   c                      ó
      ĄS r?   rÖ   r'   rŇ   r'   r(   r.   ¸  rB   c                      rŘ   r?   rÖ   r'   Šrk   r   r'   r(   r.   ż  rB   c                      rŐ   r?   rÖ   r'   rŮ   r'   r(   r.   Ŕ  rB   r   r*   rE   c                      rŘ   r?   rÖ   r'   r   r'   r(   r.   Ë  rB   )r   r
   r×   r   r;   r   r   r   r!   r   r   r   )r^   ÚAsumÚAsdÚAdsr'   )r&   rÓ   rÔ   r   rk   r   r   rĎ   r(   Útest_DomainMatrix_addŠ  s:   ((&((((("("("(rÝ   c                     sö  t tdtdgtdtdggdt t tdtdgtdtdggdt}       Ą  kr8| ks;J  J t tdtdgtdtdggdt ddgddggtt fdd tt fd	d t tdtdgtdtdggdtt tdtdggd
tttfdd ttfdd ttfdd ttfdd t tdtdgtdtdggdtt tdtdgtdtdggdtt tdtdgtdtdggdt} |ksřJ  |ksJ ttfdd ttfdd t dtdidtdiddt}t tdtdgtdtdggdt}|| }|| }|t ddgddggdtksSJ |jt	ddgddggdt 
Ą ksgJ || ksoJ |j|j ksyJ d S )Nr   r   r   r   r   r   c                      ó     S r?   r'   r'   rÎ   r'   r(   r.   Ő  rĐ   z'test_DomainMatrix_sub.<locals>.<lambda>c                      ó     S r?   r'   r'   rÎ   r'   r(   r.   Ö  rĐ   rF   c                      rŢ   r?   r'   r'   rŇ   r'   r(   r.   Ú  rĐ   c                      rß   r?   r'   r'   rŇ   r'   r(   r.   Ű  rĐ   c                      rŐ   r?   ŠÚsubr'   rŇ   r'   r(   r.   Ü  rB   c                      rŘ   r?   rŕ   r'   rŇ   r'   r(   r.   Ý  rB   c                      rŘ   r?   rŕ   r'   rŮ   r'   r(   r.   ä  rB   c                      rŐ   r?   rŕ   r'   rŮ   r'   r(   r.   ĺ  rB   r*   é˙˙˙˙éü˙˙˙)r   r
   rá   r   r;   r   r   r   r!   r   r   )r^   ÚAdiffr   r   rŰ   rÜ   r'   )r&   rÓ   rÔ   rk   r   rĎ   r(   Útest_DomainMatrix_subÎ  s8   ((&((((("("(rĺ   c                  C   sv   t tdtdgtdtdggdt} t tdtdgtdtd	ggdt}|  |  Ą   kr6|ks9J  J d S )
Nr   r   r   r   r   râ   éţ˙˙˙éý˙˙˙ră   )r   r
   Úneg)r&   ÚAnegr'   r'   r(   Útest_DomainMatrix_negň  s   ((&rę   c                     s  t tdtdgtdtdggdt t tdtdgtdtd	ggdt}       Ą  kr8| ks;J  J t tdtdgtdtdggdt ddgddggtt fd
d tt fdd t tdtdgtdtdggdtt tdtdgtdtdggdtt tdtdgtdtd	ggdt} |ksŻJ  |ksˇJ ttfdd ttfdd t tdtdgtdtdggdt t tdtdgtdtdggdt}td} | |    kr  |Ą  kr|ksJ  J t tdtdgtdtdggdt t  dtĄ}td} | |    krN  |Ą 	Ą   krN|ksQJ  J t dtdidtdiddt}t tdtdgtdtdggdt}|| }|| }|t ddgddggdtksJ |j
tddgddggdt Ą ksŁJ |t ddgddggdtks´J |j
tddgddggdt Ą ksČJ d S )Nr   r   r   r   r   rD   é
   é   é   c                      s     S r?   r'   r'   rÎ   r'   r(   r.   ˙  rĐ   z'test_DomainMatrix_mul.<locals>.<lambda>c                      s     S r?   r'   r'   rÎ   r'   r(   r.      rĐ   c                      rŘ   r?   ŠÚmatmulr'   rŮ   r'   r(   r.     rB   c                      rŐ   r?   rî   r'   rŮ   r'   r(   r.     rB   rÄ   rĘ   r   r*   )r   r
   rď   r   r;   r   r   ÚmulÚzerosr   r!   r   r   )rÔ   ÚAprodÚAArn   r   r   rŰ   rÜ   r'   )r&   rk   r   rĎ   r(   Útest_DomainMatrix_mulř  s<   ((&((((((:(>"("(",rô   c                  C   s    t tdtdgtdtdggdt} t tdtdgtdtdggdt}t tdtdgtdtdggdt}|  |Ą|ksEJ | | Ą|ksNJ d S )Nr   r   r   r   r   rĘ   )r   r
   Úmul_elementwiser]   r'   r'   r(   Ú!test_DomainMatrix_mul_elementwise  s
   (((rö   c                     st  t  dtĄ} t tdtdgtdtdggdt t tdtdgtdtd	ggdt}t td
tdgtdtdggdt} d   dĄ  krR| ksUJ  J  d   dĄ  kre kshJ  J  d   dĄ  krx|ks{J  J  d   dĄ  kr|ksJ  J tt fdd tt fdd tt fdd t  dtĄ tt fdd d S )Nr   r   r   r   r   rD   rë   rě   rí   é%   é6   éQ   év   r   c                      s    t dd S ŠNr   r   rT   r'   rA   r'   r(   r.   1  r   z'test_DomainMatrix_pow.<locals>.<lambda>c                      ó    d S ŠNrâ   r'   r'   rA   r'   r(   r.   2  rĐ   c                      s
      dĄS rý   )Úpowr'   rA   r'   r(   r.   3  rB   Šr   r   c                      rü   ŠNr   r'   r'   rA   r'   r(   r.   6  rĐ   )	r   Úeyer
   rţ   r   r;   ÚNotImplementedErrorrń   r   )r  rÔ   ÚA3r'   rA   r(   Útest_DomainMatrix_pow'  s   (((&&&&r  c                  C   s   t ddgddggt} ttdt}t ddgdd	ggt}| tĄ}|  Ą ||fks,J | jd
d||fks8J | | |ks@J | || ksHJ d S )NrF   Šr   r   rH   Šr   rE   é<   é   é   rě   é   TŠrP   )r   r   r   r
   ri   Úclear_denomsŠr&   Úden_ZÚAnum_ZÚAnum_Qr'   r'   r(   Útest_DomainMatrix_clear_denoms9  s   
r  c                  C   sj  t ddgddggt} t ddgddggt Ą }t dd	gd
dggt}t dd	gd
dggt}|  Ą ||fks8J | jdd||fksDJ ||  |ksLJ | | Ą  Ą | ksXJ t g d˘g d˘g d˘gt} t g d˘g d˘g d˘gt Ą }t g d˘g d˘g d˘gt}| tĄ}|  Ą ||fksJ | jdd||fksJ ||  |ks§J | | Ą  Ą | ksłJ d S )NrF   r  rH   r  rÄ   r   r	  r   r   rE   r   Tr  )rF   r  r   r   Šr   r   r   r   )rH   r  )r   rÄ   )r   rD   )rÄ   r   r   )r   r   r   )r   r   i¤  )r   r   r   r   )éi   éT   éF   r  )r   r   r
   r   Úclear_denoms_rowwiser   Úinvri   r  r'   r'   r(   Ú&test_DomainMatrix_clear_denoms_rowwiseF  s     
r  c                      sP  t ddgddggt   tdĄt ddgddggttdfks#J   tdĄt ddgddggttdfks;J   tdĄt ddgddggttdfksSJ t ddgddggt   tdĄ tdfksmJ   tdĄ  tdfks}J t ddgddggt   tddĄtdd	  tdfksJ tt fd
d d S )Nr   r   rÄ   rĘ   r   r   rć   r   râ   c                      ó      tdĄS ŠNr   )Úcancel_denomr
   r'   rA   r'   r(   r.   k  r   z0test_DomainMatrix_cancel_denom.<locals>.<lambda>)r   r
   r  r   r   ÚZeroDivisionErrorr'   r'   rA   r(   Útest_DomainMatrix_cancel_denom]  s   000 *r  c                     sČ   t ddgddggt   tdĄ\} }| t ddgddggtks#J |t ddgddggtks2J   tdĄ\} }| t ddgddggtksJJ |t ddgddggtksYJ tt fdd d S )	Nr   r   rÄ   rĘ   r   r   c                      r  r  )Úcancel_denom_elementwiser
   r'   rA   r'   r(   r.   w  r   z<test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>)r   r
   r  r   r  )ÚnumersÚdenomsr'   rA   r(   Ú*test_DomainMatrix_cancel_denom_elementwisen  s   r!  c                  C   s\   t ddgddggt} t ddgddggt}td}|  Ą |ks"J |  Ą ||fks,J d S )Nr   r   rÄ   rĘ   r   r   )r   r
   ÚcontentÚ	primitive)r&   ÚA_primitiveÚ	A_contentr'   r'   r(   Ú#test_DomainMatrix_content_primitivez  s
   r&  c                     sź   t tdtdtdgtdtdtdgtdtdtdggdt} |  Ą }| j}|j}| |||fD ] |  Ą dgddggksCJ q4ttdtdtdggt tt fdd d S )	Nr   r   r   r   r   Šr   r   c                      ó      Ą S r?   )Úsccr'   rA   r'   r(   r.     rĐ   z'test_DomainMatrix_scc.<locals>.<lambda>)r   r
   r   r!   r)  r   r   r   )r   r   r|   r}   r'   rA   r(   Útest_DomainMatrix_scc  s   ţţr*  c                     sä  t g dt} |  Ą | dfksJ t tdggdt} |  Ą | dfks$J t tdggdt} |  Ą | dfks8J t tdtdgtdtd	ggd
t} |  Ą \}}|t tdtdgtdtdggd
tksjJ |dkspJ t tdtdgtdtd	ggd
t} |  Ą \}}|t tdtdgtdtdggd
tks˘J |dks¨J t tdtdgtdtd	ggd
t} |  Ą \}}|t tdtdgtdtdggd
tksÚJ |dksŕJ t tdtdgtdtd	ggd
t   Ą \}}|t tdtdgtdtdggd
tksJ |dksJ d}t tdtdgtdtd	ggd
t |D ]+} j|d\}}|t tdtdgtdtdggd
tksUJ |dks\J q2tt fdd tt fdd d S )Nr*   r'   r   r1   )r   r   r   r   r   r   )r   )ÚautoÚGJr	   ÚCDÚGJ_denseÚFF_denseÚCD_denseŠÚmethodc                      ó    j ddS ŠNÚfoor1  )Úrrefr'   Šr   r'   r(   r.   ś  r/   z(test_DomainMatrix_rref.<locals>.<lambda>c                      r3  r4  )Úrref_denr'   r7  r'   r(   r.   ˇ  r/   )r   r   r6  r
   r   r<   )r&   ÚArÚpivotsÚmethodsr2  r'   r7  r(   Útest_DomainMatrix_rref  s<   (0(0(0(2(2r<  c                     s,  t tdtdtdgtdtdtdggdt} t tdtdgtdtdggdt}|  Ą |ks6J t tdtdtdgtdtdtdggdt tt fdd	 t tdtdtdgtdtdtdggdtd
d} t tdtddtdtddddt}|  Ą |ksJ d S )Nr   râ   r   rć   r   r˘   r   c                      r(  r?   )Úcolumnspacer'   r7  r'   r(   r.   Ŕ  rĐ   z/test_DomainMatrix_columnspace.<locals>.<lambda>r3   r5   r*   )r   r   r=  r
   r   r   )r&   ÚAcolr'   r7  r(   Útest_DomainMatrix_columnspaceş  s   4(48.r?  c                     sÖ   t tdtdtdgtdtdtdggdt} |  Ą | ks"J t tdtdtdgtdtdtdggdt tt fdd t tdtdtdgtdtdtdggdtd	d
} |  Ą | ksiJ d S )Nr   râ   r   rć   r   r˘   c                      r(  r?   )Úrowspacer'   r7  r'   r(   r.   Ě  rĐ   z,test_DomainMatrix_rowspace.<locals>.<lambda>r3   r5   )r   r   r@  r
   r   r   rA   r'   r7  r(   Útest_DomainMatrix_rowspaceÇ  s   448rA  c                     sn  t tdtdgtdtdggdt t tdtdggdt}   Ą | ks)J t tdtdgtdtdggdt t tdtdggdt}   Ą | ksRJ tt fdd t tdtdgtdtdggdt t tdtdggdt}   Ą \}}}|tdksJ | Ą | ksJ | |Ą| ksJ | Ą  Ą |  Ą ks¨J | Ą  |Ą|  Ą ksľJ d S )	Nr   r   râ   rF   c                      r3  )NT)Údivide_last)Ú	nullspacer'   rA   r'   r(   r.   Ű  r/   z-test_DomainMatrix_nullspace.<locals>.<lambda>r   rć   )	r   r   rC  r
   r   r   r8  Únullspace_from_rrefr   )ÚAnullÚArrefÚdenr:  r'   rA   r(   Útest_DomainMatrix_nullspaceŇ  s   (((rH  c                     sę   t tdtdgtdtdggdt t tdgtdggdt} t ddggdt}t ddggdt}  | Ą||fks?J t tdgtdgtdggd	ttt fd
d t tdgtdggdttt fdd d S )Nr   r   r   r   r˙   r   rF   rć   rG   c                      rŐ   r?   ŠÚ_solver'   )r&   Úb3r'   r(   r.   ń  rB   z)test_DomainMatrix_solve.<locals>.<lambda>c                      rŐ   r?   rI  r'   )r&   Úbzr'   r(   r.   ô  rB   )r   r   rJ  r   r   r
   r   )ÚbÚ
particularrC  r'   )r&   rK  rL  r(   Útest_DomainMatrix_solveč  s   ($rO  c                     s$  t g dt} |  Ą | ksJ t tdtdgtdtdggdt} t tdtdgtddtddggdt}|  Ą |ks@J t tdtdgtdtdggdtttfd	d
 t tdtdggdtttfdd
 t tdtdgtdtdggdt tt fdd
 d S )NrŹ   r   r   r   r   r   rć   râ   c                      r(  r?   Šr  r'   r7  r'   r(   r.      rĐ   z'test_DomainMatrix_inv.<locals>.<lambda>rF   c                      r(  r?   rP  r'   ŠÚAnsr'   r(   r.     rĐ   rÄ   c                      r(  r?   rP  r'   )ÚAninvr'   r(   r.     rĐ   )r   r   r  r
   r   r   r   r   )r&   ÚAinvr'   )rS  rR  r   r(   Útest_DomainMatrix_inv÷  s   (,((rU  c                     s  t g dt} |  Ą dksJ t dggdt} |  Ą dksJ t tdtdgtdtdggdt} |  Ą tdks<J t tdtdtdgtdtdtdgtdtdtd	ggd
t} |  Ą tdksjJ t tdtdtdgtdtdtdgtdtdtd	ggd
t} |  Ą tdksJ t tdtdggdt tt fdd t tdtdgtdtdggdt} |  Ą tdksĚJ d S )NrŹ   r   r1   r   r   r   r   rć   rE   r'  râ   r   rF   c                      r(  r?   )Údetr'   rQ  r'   r(   r.     rĐ   z'test_DomainMatrix_det.<locals>.<lambda>)r   r
   rV  r   r   r   rA   r'   rQ  r(   Útest_DomainMatrix_det	  s   (HH(rW  c                     s$  t tdtdgtdtdggdt} tdtdtdg}t tdtdgtdtd	ggdt}|  |Ą|  krU|d
 | d  |d |   |d | d
   ksXJ  J |  g Ą|  | j| jĄksgJ |  tdgĄd|  d| jĄ kszJ t tdtdggdt tt fdd d S )Nr   r   r   r   r   r
  é   é   é!   r   rF   c                      s      tdgĄS r   )Ú	eval_polyr
   r'   ŠÚdM2r'   r(   r.   )  r9   z-test_DomainMatrix_eval_poly.<locals>.<lambda>)	r   r
   r[  rń   r#   r$   r  r   r   )ÚdMÚpÚresultr'   r\  r(   Útest_DomainMatrix_eval_poly   s   ((J&ra  c                     s  t tdtdgtdtdggdt} t tdgtdggdt tdtdtdg}t tdgtdggdt}|  | Ą|  kr`|d	 | d    |d |     |d    kscJ  J t tdtdgtdtdggdtt tdgtdggdttt fd
d t tdtdggdtttfdd t tdgtdggdtttfdd d S )Nr   r   r   r   r   r˙   é(   éW   r   c                      ó     tdg ĄS r   ŠÚeval_poly_mulr
   r'   )rM  ÚdM1r'   r(   r.   5  ó    z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>rF   c                      rd  r   re  r'   )Úb1r^  r'   r(   r.   7  rh  c                      rd  r   re  r'   )Úbqr^  r'   r(   r.   9  rh  )r   r
   rf  r   r   r   r   r   )r&   r_  r`  r'   )rM  ri  rj  r^  rg  r(   Útest_DomainMatrix_eval_poly_mul,  s   (P(rk  c                    s  | |f}|   Ą |  Ą   Ą f}||fD ]l\ }} | || ks#J ||f| | fg}  Ą|v s6J  jdd|v sAJ   Ą|v sJJ  j\}	}
|	|
krl j|dd||fks`J   |Ą||fkskJ qtt fdd tt fdd qd S )Nr6  r1  Úcharpolyc                      rŐ   r?   ŠÚsolve_den_charpolyr'   ŠÚAirM  r'   r(   r.   T  rB   z"_check_solve_den.<locals>.<lambda>c                      ó    j ddS )Nrl  r1  ŠÚ	solve_denr'   ro  r'   r(   r.   U  r   )r   rs  Úsolve_den_rrefr#   rn  r   r   )r&   rM  ÚxnumÚxdenÚcase1Úcase2Úxnum_iÚb_iÚanswersÚmÚnr'   ro  r(   Ú_check_solve_den<  s   

îr~  c                  C   s  t tdtdgtdtdggdt} t tdgtdggdt}t tdgtdggdt}td	}t| ||| t tdtdtdgtdtdtdgtdtdtd
ggdt} t tdgtdgtdggdt}t tdgtdgtdggdt}td}t| ||| t tdgtdggdt} t tdgtdggdt}t tdggdt}td}t| ||| d S )Nr   r   r   r   r   r˙   r   râ   rć   rE   r'  rG   r1   )r   r
   r~  )r&   rM  r`  rG  r'   r'   r(   Útest_DomainMatrix_solve_denX  s*   (ýý$$r  c                      sÔ   t tdtdgtdtdggdt t tdgtdggdtt tdtdggdtttfdd	 t tdtdggdttt fd
d	 t tdgtdggdttt fdd	 d S )Nr   r   r   r   r   r˙   rF   c                      rŐ   r?   rm  r'   )rÓ   rM  r'   r(   r.   s  rB   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>c                      rŐ   r?   rm  r'   Šr&   ri  r'   r(   r.   u  rB   c                      rŐ   r?   rm  r'   )r&   rj  r'   r(   r.   w  rB   )r   r
   r   r   r   r   r   r'   r'   )r&   rÓ   rM  ri  rj  r(   Ú$test_DomainMatrix_solve_den_charpolyo  s   (r  c                     sŞ   t tdtdgtdtdggdt t tdgtdggdttt fdd t td	gtdggdt}   Ą  | ksDJ  jd
d| tdfksSJ d S )Nr   r   r   r   r   r˙   c                      rŐ   r?   rm  r'   Šr&   rM  r'   r(   r.   ~  rB   z<test_DomainMatrix_solve_den_charpoly_check.<locals>.<lambda>rć   F)Úcheckr   )r   r
   r   r   Úadjugatern  )ÚadjAbr'   r  r(   Ú*test_DomainMatrix_solve_den_charpoly_checkz  s   ("r  c                      s  t tdtdggdt t tdgtdggdttt fdd tt fdd t tdtdggdt t tdtdggdttt fdd tt fd	d t tdtdgtd
tdggdt t tdtdggdttt fdd t tdggdt t tdggdttt fdd t tdgtdggdt t tdgtdggdttt fdd d S )Nr   r   rF   r˙   c                      rŐ   r?   rr  r'   r  r'   r(   r.     rB   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>c                      rŐ   r?   Šrt  r'   r  r'   r(   r.     rB   c                      rŐ   r?   rr  r'   r  r'   r(   r.     rB   c                      rŐ   r?   r  r'   r  r'   r(   r.     rB   r   r   r   c                      rŐ   r?   rr  r'   r  r'   r(   r.     rB   r1   c                      rq  )Nr7   r1  rr  r'   r  r'   r(   r.     r   c                      rŐ   r?   rm  r'   r  r'   r(   r.     rB   )r   r
   r   r   r   r   r'   r'   )r&   rM  ri  r(   Ú"test_DomainMatrix_solve_den_errors  s"   (r  c                      sp   t tdtdgtdtdggdt t tdgtdggdttt fdd tt fdd d S )Nr   r   r   r˙   c                      rŐ   r?   rr  r'   r  r'   r(   r.     rB   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>c                      rŐ   r?   r  r'   r  r'   r(   r.      rB   )r   r
   r   r   r'   r'   r  r(   Ú0test_DomainMatrix_solve_den_rref_underdetermined  s   (r  c                     s  t tdtdtdgtdtdtdgtdtdtd	ggt   Ą \} }| tdtd
tdgks8J   Ą | d  d  | d  d   | d  d     kr^  | ĄksaJ  J   Ą |ksiJ t tdtdtdgtdtdtd	ggt tt fdd d S )Nr   r   r   r   rE   rÄ   rD   rĘ   é	   éń˙˙˙éî˙˙˙r   c                      r(  r?   )Úadj_poly_detr'   rA   r'   r(   r.   Ž  rĐ   z0test_DomainMatrix_adj_poly_det.<locals>.<lambda>)r   r
   r  r  r[  rV  r   r   )r_  ÚdetAr'   rA   r(   Útest_DomainMatrix_adj_poly_detŁ  s    ţţR˙˙r  c                  C   sp   t tdtdgtdtdggdt} td}t tdtdgtdtdggdt}|  Ą ||fks6J d S ŠNr   r   r   r   r   rć   rç   )r   r
   Úinv_den)r&   rG  r`  r'   r'   r(   Útest_DomainMatrix_inv_deną  s   ((r  c                  C   sd   t tdtdgtdtdggdt} t tdtdgtdtdggdt}|  Ą |ks0J d S r  )r   r
   r  )r&   r`  r'   r'   r(   Útest_DomainMatrix_adjugate¸  rš   r  c                  C   sl   t tdtdgtdtdggdt} t tdtdgtdtdggdt}|  Ą |tdfks4J d S r  )r   r
   Úadj_det)r&   ÚadjAr'   r'   r(   Útest_DomainMatrix_adj_detž  s   ((r  c                     sŇ  t g dt   Ą   g fksJ t tdtdgtdtdggdt t tdtdgtdtdggdt} t tdtdgtdtdggdt}g }  Ą | ||fksZJ t tdtdgtdtdggdt t tdtdgtdtdggdt} t tdtdgtdtdggdt}d	g}  Ą | ||fks¤J t tdtdgtdtdggdt t tdtdgtdtdggdt} t tdtdgtdtdggdt}g }  Ą | ||fksíJ t tdtdgtdtdggdt t tdtdgtdtdggdt} t tdtdgtdtdggdt}g }  Ą | ||fks7J t tdtdtdgtdtd
tdggdt t tdtdgtdtdggdt} t tdtdtdgtdtdtdggdt}g }  Ą | ||fksJ t tdtdgtdtdgtd
tdggdt t tdtdtdgtdtdtdgtd
tdtdggdt} t tdtdgtdtdgtdtdggdt}g }  Ą | ||fksőJ g d˘g d˘g d˘g d˘g g d˘g d˘g d˘g d˘g} g d˘g d˘g d˘g d˘g}dd }t | tdt t || tdt} t ||tdt}  Ą | |g fksJJ t tdtdgtdtdggdt tt fdd d S )NrŹ   r   r   r   r   r   r   rć   r*   rE   rÄ   r˘   rç   iú˙˙˙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                    s    fdd| D S )Nc                    s   g | ]} fd d|D qS )c                    s   g | ]} |qS r'   r'   rs   ŠrJ   r'   r(   rv   ň  r2   zEtest_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r'   )rt   Úrowr  r'   r(   rv   ň  s    z:test_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>r'   )ÚrowsrJ   r'   r  r(   r.   ň  rh  z&test_DomainMatrix_lu.<locals>.<lambda>)r   r   c                      r(  r?   )Úlur'   rA   r'   r(   r.   ů  rĐ   )r   r   r  r
   r   r   )rĎ   ÚUÚswapsÚto_domr'   rA   r(   Útest_DomainMatrix_luÄ  s`   ((((((((((((4(46ýý6(r  c                     sR  t g dt   }   Ą| ksJ t tdtdgtdtdggdt t tdgtdggdtt tdgtddggdt}   Ą| ksMJ t tdtdgtdtdggdt t tdgtdggdtt tdgtddggdt}   Ą| ksJ t tdtdgtdtdggdt t tdgtdggdttt fd	d
 t tdtdgtdtdgtdtdggdt t tdgtdgtdggdtt tdgtddggdt}   Ą| ksřJ t tdtdgtdtdgtdtdggdt t tdgtdgtdggdttt fdd
 t tdtdggdt t tdggdttt fdd
 t tdtdgtdtdggdt t tdgtdggdttt fdd
 t tdtdgtdtdggdt t tdtdggdttt fdd
 d S )NrŹ   r   r   r   r   r   r˙   r   c                      rŐ   r?   ŠÚlu_solver'   r  r'   r(   r.     rB   z,test_DomainMatrix_lu_solve.<locals>.<lambda>rE   rÄ   rĹ   rG   c                      rŐ   r?   r  r'   r  r'   r(   r.     rB   rF   r1   c                      rŐ   r?   r  r'   r  r'   r(   r.      rB   c                      rŐ   r?   r  r'   r  r'   r(   r.   %  rB   c                      rŐ   r?   r  r'   r  r'   r(   r.   *  rB   )	r   r   r   r   r   r  r
   r   r   Šrn   r'   r  r(   Útest_DomainMatrix_lu_solveü  s:   (((6$6$((r˘  c                     s  t g dt} tdg}|  Ą |ksJ |  Ą  Ą |ksJ t dggdt} tdtdg}|  Ą |ks5J |  Ą  Ą |ks?J t tdtdgtdtdggdt} tdtd	td
g}|  Ą |ksfJ |  Ą  Ą |kspJ t tdtdtdgtdtdtdgtdtdtdggdt} tdtdtdtdg}|  Ą |ksŞJ |  Ą  Ą |ks´J t tdtdtdgtdtdtdgtdtdtdggdt} tdtdtd
tdg}|  Ą |ksîJ |  Ą  Ą |ksřJ tg d˘g d˘g d˘g d˘g d˘g d˘g d˘g d˘g d˘g d˘g
t} t g d˘Ą}|  Ą |ks+J |  Ą  Ą |ks6J t tdtdggdt tt fdd d S )NrŹ   r   r1   râ   r   r   r   r   éű˙˙˙rć   rE   rÄ   rD   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   )
éE   r   r   r   r   éV   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÷   éC   r   r   r   r   )r   iď˙˙˙ię÷˙˙r   i¤:ô˙r   r   r   r   r   r   rF   c                      r(  r?   )rl  r'   rQ  r'   r(   r.   X  rĐ   z,test_DomainMatrix_charpoly.<locals>.<lambda>)	r   r
   rl  r   r   Úmapr   r   r   )r&   r_  r'   rQ  r(   Útest_DomainMatrix_charpoly-  sV   
(Hţţ÷	÷
rŹ  c                  C   sä   t g dt} |  Ą g ksJ tdggt} |  Ą tdtdgdfgks&J tddgddggt} |  Ą tdtdtdgdfgksEJ tg d	˘g d
˘g d˘gt} |  Ą tdtdgdftdtdtdgdfgkspJ d S )NrŹ   r   râ   r   r   r   rŁ  rć   )r   r   r   )r   r   r   )r   r   r   )r   r
   Úcharpoly_factor_listr   rA   r'   r'   r(   Ú&test_DomainMatrix_charpoly_factor_list[  s   
˙
˙ţrŽ  c                  C   sB   t  dtĄ} | jt dtĄksJ | jdksJ | jtksJ d S )Nr   r'  )r   r  r   r!   r   r#   r$   rA   r'   r'   r(   Útest_DomainMatrix_eyep  ó   rŻ  c                  C   sB   t  dtĄ} | jt dtĄksJ | jdksJ | jtksJ d S )NrF   )r   rń   r   r!   r   r#   r$   rA   r'   r'   r(   Útest_DomainMatrix_zerosw  r°  rą  c                  C   sf   t  dtĄ} tdkr| jt dtĄksJ n| jt dtĄ Ą ks#J | jdks*J | j	tks1J d S )Nr˘   r    )
r   Úonesr   r   r!   r   r   r"   r#   r$   rA   r'   r'   r(   Útest_DomainMatrix_ones~  s   rł  c                  C   s   t dtdidtdiddt} t  tdtdgtĄ| ks!J t dtdidtdiddt} t  tdtdgtdĄ| ksCJ d S )Nr   r   r   r   r*   r   )r   r   )r   r
   ÚdiagrA   r'   r'   r(   Útest_DomainMatrix_diag  s   " "&rľ  c               	   C   s:  t tdtdgtdtdggdt} t tdtdgtdtd	ggdt}t td
tdgtdtdggdt}t tdtdtdtdgtdtdtdtd	ggdt}t tdtdtdtdtd
tdgtdtdtdtd	tdtdggdt}|  |Ą|ksJ |  ||Ą|ksJ d S )Nr   r   r   r   r   rE   rÄ   rD   rĘ   r  rë   é   r
  Šr   r   )r   rÄ   )r   r
   ÚhstackŠr&   r^   r_   ÚABÚABCr'   r'   r(   Útest_DomainMatrix_hstack  s"   (((ţţ&&ţţrź  c               	   C   sF  t tdtdgtdtdggdt} t tdtdgtdtd	ggdt}t td
tdgtdtdggdt}t tdtdgtdtdgtdtdgtdtd	ggdt}t tdtdgtdtdgtdtdgtdtd	gtd
tdgtdtdggdt}|  |Ą|ksJ |  ||Ą|ksĄJ d S )Nr   r   r   r   r   rE   rÄ   rD   rĘ   r  rë   rś  r
  )r   r   )rÄ   r   )r   r
   Úvstackrš  r'   r'   r(   Útest_DomainMatrix_vstack  s.   (((üüúúrž  c                  C   sN   t tdtdggdt} t tdtdggdt}|  dd Ą|ks%J d S )Nr   r   rF   r   c                 S   s   d|  S )Nr   r'   rĄ  r'   r'   r(   r.   ˇ  rĐ   z-test_DomainMatrix_applyfunc.<locals>.<lambda>)r   r
   Ú	applyfuncrť   r'   r'   r(   Útest_DomainMatrix_applyfunc´  s   rŔ  c                     s0  t tdtdgtdtdggdt ttdtd t}  |  t tddtdgtddtdggdtks;J  d t tdtdgtdtdggdtksUJ d  t tdtdgtdtdggdtksoJ  ttd	t t i dtksJ  ttdt  ksJ tt fd
d d S )Nr   r   r   r   r   r  rÄ   rĘ   r   c                      s    d S ŠNg      ř?r'   r'   rA   r'   r(   r.   Ă  rĐ   z-test_DomainMatrix_scalarmul.<locals>.<lambda>)r   r
   r   r   r   r;   )Úlamdar'   rA   r(   Útest_DomainMatrix_scalarmulş  s   (844"rĂ  c                     sL  t  tddgddggĄ ttdtd t}  |  t tddtdddtdtdddddtks8J ttdt} | t tdtddtdtddddtks\J  d t tdtddtdtddddtksyJ  d t tddtddtddtddddtksJ tt fdd	 tt fd
d	 tt fdd	 t tdtdgtdtdggdt   	Ą d t tddtdgtddtdggdtksĺJ  d t tddtdgtddtdggdtksJ   	Ą tdd t tddtdgtddtdggdtks$J d S )Nr   r   r   r   r*   rĘ   r   c                      ó    d S r  r'   r'   rA   r'   r(   r.   Đ  rĐ   z+test_DomainMatrix_truediv.<locals>.<lambda>c                      rÄ  rÁ  r'   r'   rA   r'   r(   r.   Ń  rĐ   c                      s    t tdt S r  )r   r
   r'   rA   r'   r(   r.   Ň  rh  r  rÄ   )
r   rZ   r   r   r   r
   r   r  r;   r   )rÂ  rM  r'   rA   r(   Útest_DomainMatrix_truedivĆ  s   @::>(<:HrĹ  c                      s  t tdtdtdgtdtdtdgtdtdtd	ggd
t  dd d df t tdgtdggdtks>J  dd df t tdggdtksRJ  d dd df t tdggdtkshJ  d dddf t tdtdgtdtdggdtksJ  d d df t tdgtdgtd	ggdtks¤J  dd d f t tdtdtd	ggdtksžJ  d d dd d f t tdtdtd	gtdtdtdgtdtdtdggd
tksďJ tt fdd tt fdd  d ttdtksJ  d ttdtksJ  d ttdtks+J  d ttdtks9J tt fdd tt fdd tt fdd t ddtdiidt  d ttdtksnJ  d ttdtks|J t dddiidt  dd df t dddiidtksJ tt fd d t dtdidtdid!dt  d dd df t i dtksČJ  dd dd f t ddiddid"d
tksâJ  dd dd f t dddiidtksůJ  dd dd f t i d#tksJ d S )$Nr   r   r   r   rE   rÄ   rD   rĘ   r  r'  rć   r˙   r1   râ   r   r   rG   r  c                      s    dd df S )Nr   rć   r'   r'   Šr^  r'   r(   r.   ë  r9   z+test_DomainMatrix_getitem.<locals>.<lambda>c                      s    d ddf S )Nrć   r   r'   r'   rĆ  r'   r(   r.   ě  r9   rF   )rć   r   )r   rć   )râ   rç   c                      ó    d S )Nr'  r'   r'   rĆ  r'   r(   r.   ó  rĐ   c                      rÇ  )NrH   r'   r'   rĆ  r'   r(   r.   ô  rĐ   c                      rÇ  )N)râ   ră   r'   r'   rĆ  r'   r(   r.   ő  rĐ   )rë   rë   ŠrE   rE   rŹ   c                      rÇ  )NŠr   r   r'   r'   rĆ  r'   r(   r.   ý  rĐ   rˇ  )r   r   rÉ  )r   r
   r   Ú
IndexErrorr   r'   r'   rĆ  r(   Útest_DomainMatrix_getitemÚ  sP   ýý4(,@84ý
ý*"&4.*rË  c                  C   sb   t dtdidtdiddt} |  ddĄ}|tju sJ |  ddĄ}|dkr-t|ts/J d S )Nr   r   r   rˇ  rČ  r   )r   r
   Úgetitem_sympyr   ÚZeroÚ
isinstancer   )r^  Úval1Úval2r'   r'   r(   Útest_DomainMatrix_getitem_sympy  s
   "rŃ  c                     s|  t tdtdtdgtdtdtdgtdtdtd	ggd
t} t tdtdgtdtd	ggdt}|  ddgddgĄ|ksFJ |  Ą  ddgddgĄ| Ą ksXJ |  ddgddgĄ|ksfJ |  Ą  ddgddgĄ| Ą ksxJ t tdtdtdgtdtdtdgtdtdtdggd
t}|  g d˘g d˘Ą|ksŞJ |  Ą  g d˘g d˘Ą| Ą ksźJ g g dfdgg dfg dgdfg}|D ]%\ }|   Ąt  |tĄ Ą ksăJ |  Ą   Ąt  |tĄksóJ qÎt tdtdgtdtdggdtdgdgfdgdgfdgdgfdgdgfg}|D ]\ tt fdd tt fdd q d S )Nr   r   r   r   rE   rÄ   rD   rĘ   r  r'  r   r   râ   )r   r   r   rŹ   r­   r*   rç   c                      s      ĄS r?   )Úextractr'   ŠÚcolsr^  r  r'   r(   r.   .  r/   z+test_DomainMatrix_extract.<locals>.<lambda>c                      s     Ą   ĄS r?   )r   rŇ  r'   rÓ  r'   r(   r.   /  r9   )r   r
   rŇ  r   rń   r   r   rĘ  )rg  r]  ÚdM3ÚemptyÚsizeÚbad_indicesr'   rÓ  r(   Útest_DomainMatrix_extract  sN   ýýţţ$$ýý$

ý "(,ţrŮ  c                      s   t dtdidtdiddt td d<  t dtdidtdiddtks,J  fddttfd	d
 ttfdd
 d S )Nr   r   r   rˇ  rČ  r   c                    s   | | |f< d S r?   r'   )ÚiÚjÚvalrĆ  r'   r(   Úsetitem6  s   z*test_DomainMatrix_setitem.<locals>.setitemc                      s    ddt ddS )Nr   r   rr   r'   ŠrÝ  r'   r(   r.   8  rh  z+test_DomainMatrix_setitem.<locals>.<lambda>c                      s    t dddtdS rű   )Úslicer
   r'   rŢ  r'   r(   r.   9  s    )r   r
   r   r;   r  r'   r'   )r^  rÝ  r(   Útest_DomainMatrix_setitem2  s   "*rŕ  c                  C   s   dd l } tdtdidtdiddt}|  |  |ĄĄ|ks!J ttdtdgtdtdggdt}|  |  |ĄĄ|ksAJ d S )	Nr   r   r   r   rˇ  rČ  r   r   )Úpickler   r
   ÚloadsÚdumps)rá  r^  r'   r'   r(   Útest_DomainMatrix_pickling<  s
   "(rä  N)uÚsympy.external.gmpyr   Úsympyr   r   r   r   r   r   r	   r
   r   r   r   Ú!sympy.polys.matrices.domainmatrixr   r   r   Úsympy.polys.matrices.exceptionsr   r   r   r   r   r   r   Úsympy.polys.matrices.ddmr   Úsympy.polys.matrices.sdmr   Úsympy.testing.pytestr   r)   r>   rC   rK   rR   rY   r[   r`   re   rh   rl   rq   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?  rA  rH  rO  rU  rW  ra  rk  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>   sş     $$ 	


		%$'*
81.
,$
