U
    Ý@·f9¿  ã                   @   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[dd‚„ Z\dƒd„„ Z]d…d†„ Z^d‡dˆ„ Z_d‰dŠ„ Z`d‹dŒ„ ZaddŽ„ Zbdd„ Zcd‘d’„ Zdd“d”„ Zed•d–„ Zfd—d˜„ Zgd™dš„ Zhd›dœ„ Ziddž„ 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rV|j| ksht‚n|j|  ¡ ksht‚|jdksvt‚|jtks„t‚d S )Né   é   é   é   ©r   r   Úflint)	r   r
   r   r   ÚrepÚAssertionErrorÚto_dfmÚshapeÚdomain)ÚddmÚA© r(   úP/tmp/pip-unpacked-wheel-6uje5nh9/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r‚|jˆ ks”t‚n|jˆ  ¡ ks”t‚|jdks¢t‚|j	t ks°t‚t| dt ƒ}|jˆksÊt‚|jdksØt‚|j	t ksæt‚t
t‡ fdd	„ƒ t
t‡fd
d	„ƒ t
tdd	„ ƒ dˆfdˆ ffD ]f\}}|dkrLtdkrL| ¡ }tˆdt |d}|j|kslt‚t| dt |d}|j|ks(t‚q(t
t‡fdd	„ƒ t
tdd	„ ƒ d S )Nr   r   r   r   ©r   r   r   r    c                      s   t ˆ dtƒS ©Nr   ©r   r
   r(   )r&   r(   r)   Ú<lambda>/   ó    z(test_DomainMatrix_init.<locals>.<lambda>c                      s   t ˆ dtƒS 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   r/   ÚsparseÚdense©Úfmtc                      s   t ˆ dtddS )Nr   Úinvalidr4   r-   r(   )Úlolr(   r)   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$   r%   r   Ú	TypeErrorÚ
ValueErrorr   )Zdodr'   r5   r!   r(   )r&   r7   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@t‚ˆ jdksNt‚ˆ jtks\t‚ttdƒtdƒdœtdƒtdƒdœdœdtƒ}t |¡‰ ˆ j|ks¢t‚ˆ jdks°t‚ˆ jtks¾t‚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   r/   z,test_DomainMatrix_from_rep.<locals>.<lambda>)r   r
   r   r<   r!   r"   r$   r%   r   r   r8   )r&   r0   r(   r=   r)   Útest_DomainMatrix_from_rep@   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t¡}tdkrX|j| ksjt‚n|j|  ¡ ksjt‚|jdksxt‚|j	tks†t‚t
dƒ}t |dƒ|dƒg|dƒ|dƒggd|ƒ} t ddgddgg|¡}|j| ksÜt‚|jdksêt‚|j	|ksøt‚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spt‚n|j|  ¡ kspt‚|jdks€t‚|j	tkst‚d S )Nr   r   r   r   r   r    é   é   ©r   r   ©r   r   ©r   r   )r@   r   )r   r
   r   Ú	from_listr   r!   r"   r#   r$   r%   r	   r   )r&   r'   Údomr(   r(   r)   Útest_DomainMatrix_from_listR   s(    ((0
rF   c                  C   sX  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rZ|j| kslt‚n|j|  ¡ kslt‚|jdkszt‚|j	tksˆt‚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s4t‚|jdksDt‚|j	|ksTt‚d S )	Nr   r   r   r   r   r    T©Ú	extension)r   r
   r   Zfrom_list_sympyr   r!   r"   r#   r$   r%   r   Úalgebraic_fieldr   Úconvert)r&   r'   ÚKr(   r(   r)   Ú!test_DomainMatrix_from_list_sympyn   s0    (""ÿü  .þrL   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s`t‚|jdksnt‚|jtks|t‚tj‰ t	t
‡ fdd„ƒ t	t
‡ fd	d„ƒ d S )
Nr   r   r   r   r+   r   c                      s   ˆ ddddt ddƒiiƒS )Nr   r   r   r   ©r   r(   ©Zfdsr(   r)   r.      r/   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>c                      s   ˆ ddddt ddƒiiƒS )Nr   r   r   r   rM   r(   rN   r(   r)   r.   ‘   r/   )r   r   r   r   Zfrom_dict_sympyr!   r"   r$   r%   r   r   )r0   Z
sympy_dictr'   r(   rN   r)   Ú!test_DomainMatrix_from_dict_sympy‡   s    &rO   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sVt‚|jdksdt‚|jtksrt‚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$t‚|jdks4t‚|j|ksDt‚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Út‚n|j| ¡ ksÚt‚|jdksêt‚|jt	ksút‚d S )Nr   r   r+   r   r   r   TrG   r   r3   r4   r    )r   r
   r   Úfrom_Matrixr   r!   r"   r$   r%   r   rI   r   rJ   r   r   r#   )r0   r'   rK   r&   r(   r(   r)   Útest_DomainMatrix_from_Matrix”   s6    .$$ÿü2þ60
rQ   c                  C   s˜   t tdƒtdƒgtdƒtdƒggdtƒ} | | ks4t‚t tdƒtdƒgtdƒtdƒggdtƒ}| |ksht‚tdƒtdƒgtdƒtdƒgg}| |ks”t‚d S ©Nr   r   r   r   r   )r   r
   r"   ©r'   ÚBÚCr(   r(   r)   Útest_DomainMatrix_eq´   s    (( rV   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ksžt‚|  |¡dks°t‚|  |¡dksÂt‚d S )	Nr   r   r   r   r   r1   TF)r   r
   r   Zunify_eqr"   )r'   ZB1ZB2ZB3r(   r(   r)   Útest_DomainMatrix_unify_eq½   s    (((rW   c                  C   s˜   t  ddddg¡\} }|tdƒtdƒtdƒtdƒgks:t‚| tksFt‚t  dddtddƒg¡\} }|tdƒtdƒtdƒtddƒgksˆt‚| tks”t‚d S )Nr   r   r   r   )r   Z
get_domainr
   r"   r   r   )rK   Úitemsr(   r(   r)   Útest_DomainMatrix_get_domainÇ   s    $&rY   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sbt‚d S rR   )r   r
   Ú
convert_tor   r"   ©r'   ÚAqr(   r(   r)   Útest_DomainMatrix_convert_toÑ   s    (
r]   c                  C   sº   ddgddgg} t | tƒ ¡ t | tƒks,t‚t | tƒjddt | tƒksLt‚t | tƒjddt | tƒkslt‚tdƒ}d|g|d |d gg}t |t| ƒjddt |t |¡ƒks¶t‚d S )Nr   r   r   r   T)ÚfieldÚx)r   r   Zchoose_domainr
   r"   r   Z
frac_field)r'   r_   rT   r(   r(   r)   Útest_DomainMatrix_choose_domain×   s      r`   c                  C   s¶   t ddgddggtƒ} | j ¡ }| j ¡ }| ||fD ]|}| ¡ \}}| |||j¡|ks\t‚dd„ |D ƒ}| ||t	¡| 
t	¡ks†t‚dd„ |D ƒ}| |||j¡d| ks4t‚q4d S )Nr   r   r   r   c                 S   s   g | ]}t |ƒ‘qS r(   ©r   ©Ú.0Úer(   r(   r)   Ú
<listcomp>é   s     z0test_DomainMatrix_to_flat_nz.<locals>.<listcomp>c                 S   s   g | ]}d | ‘qS )r   r(   rb   r(   r(   r)   re   ë   s     )r   r
   r!   Úto_ddmÚto_sdmZ
to_flat_nzZfrom_flat_nzr%   r"   r   rZ   )ZAdmÚAddmÚAsdmr'   ÚelemsÚdataZelemsqZelems2r(   r(   r)   Útest_DomainMatrix_to_flat_nzâ   s    

rl   c                  C   sB   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ |  t¡ks>t‚d S rR   )r   r
   Zto_sympyrZ   r   r"   r=   r(   r(   r)   Útest_DomainMatrix_to_sympyï   s    (rm   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s`t‚d S rR   )r   r
   Úto_fieldr   r"   r[   r(   r(   r)   Útest_DomainMatrix_to_fieldô   s    (ro   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sPt‚d S )Nr   r   r   r   r   r+   )r   r
   Ú	to_sparser!   r"   )r'   ZA_sparser(   r(   r)   Útest_DomainMatrix_to_sparseú   s    (rq   c                  C   sl   t dddœdddœdœdtƒ} |  ¡ }tddgddggdtƒ}tdkrV|j|ksht‚n|j| ¡ ksht‚d S )Nr   r   r+   r   r   r   r    )r   r
   Úto_denser   r   r!   r"   r#   )r'   ZA_denser&   r(   r(   r)   Útest_DomainMatrix_to_dense   s    rs   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sft‚|  |¡||fks|t‚| | ¡||fks’t‚| |¡||fks¨t‚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
t‚ˆ  ˆ ¡ˆ ˆ fks"t‚ˆjˆ dd	\}}|jtddgddggdtƒ ¡ ks\t‚|jtddgddggdtƒ ¡ ks„t‚ˆjˆ d
d	\}}|jtddiddidœdtƒks¼t‚|jtdddœdddœdœdtƒksæt‚t	t
‡ ‡fdd„ƒ d S )Nr   r   r   r   r   r   r+   r3   r4   r2   c                      s   ˆj ˆ ddS )Nr6   r4   )Úunifyr(   ©ÚAdÚAsr(   r)   r.      r/   z)test_DomainMatrix_unify.<locals>.<lambda>)r   r
   r   rt   r"   r!   r   Úto_dfm_or_ddmr   r   r9   )ÚAzr\   ZBsZBdr(   ru   r)   Útest_DomainMatrix_unify
  s"    (("(((&*rz   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sLt‚|  ¡  ¡ |ks`t‚|  t¡ ¡ |ksvt‚|  t t	dƒ¡¡ ¡ |ks–t‚d S rR   )
r   r
   r   Z	to_Matrixr"   rp   rZ   r   rI   r   )r'   Z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sTt‚d S rR   )r   r
   Zto_listr"   r=   r(   r(   r)   Útest_DomainMatrix_to_list,  s    (r|   c                  C   sT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgksPt‚d S rR   )r   r
   Úto_list_flatr"   r=   r(   r(   r)   Útest_DomainMatrix_to_list_flat1  s    (r~   c                  C   sT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgksPt‚d S rR   )r   r
   Zflatr"   r=   r(   r(   r)   Útest_DomainMatrix_flat6  s    (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sZt‚t | dt ¡|j ¡ ksvt‚t | dt ¡|j ¡ ks’t‚|| | 	¡ |j
|j¡ks°t‚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   Zfrom_list_flatr"   r   r!   rf   r   rg   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sZt‚t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ dtdƒidtdƒidœks¨t‚d S )Nr   r   r   r   r   r+   r   )r   r
   Zto_dodr"   r=   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sVt‚| | ¡|ksht‚| | t¡| t¡ks‚t‚d S )Nr   r   r+   r   r   r   )	r
   r   r   Zfrom_dodrp   r"   Zfrom_dod_liker   rZ   ©rX   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sRt‚t tdƒtdƒgtdƒtdƒggdtƒ} tdƒtdƒdœ}|  ¡ |ksœt‚|  ¡  ¡ |ks°t‚|  ¡  ¡ |ksÄt‚| j ¡  ¡ |ksÚt‚| j ¡  ¡ |ksðt‚d S )	Nr   r   r   r   r   )©r   r   r+   ©r   r   r1   r   ©r†   r1   )	r   r
   Zto_dokr"   rr   rp   r!   rf   rg   )r'   Z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sBt‚t | dt ¡|j ¡ ks^t‚t	 | dt ¡|j 
¡ kszt‚d S )Nr   r   rˆ   r   r   )r
   r   r   Zfrom_dokrp   r"   r   r!   rf   r   rg   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s8t‚d S )Nr   r   r   r   r   z*DomainMatrix([[1, 2], [3, 4]], (2, 2), ZZ))r   r
   Úreprr"   r=   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s`t‚d S rR   )r   r
   Z	transposer"   )r'   ÚATr(   r(   r)   Útest_DomainMatrix_transposer  s    ((rŽ   c                  C   sH   t tdƒggdtƒ} t tdƒggdtƒ}| jdks6t‚|jdksDt‚d S )Nr   r1   r   FT)r   r
   Zis_zero_matrixr"   ©r'   rT   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ks^t‚|jdkslt‚d S )	Nr   r   r   r   r   r   TF)r   r
   Zis_upperr"   r   r(   r(   r)   Útest_DomainMatrix_is_upper  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ks^t‚|jdkslt‚d S )	Nr   r   r   r   r   r   TF)r   r
   Zis_lowerr"   r   r(   r(   r)   Útest_DomainMatrix_is_lower†  s    ((r’   c                  C   st   t ddgddggtƒ} t ddgddggtƒ}| j|  ¡ j  krHdksNn t‚|j| ¡ j  krjdkspn t‚d S )Nr   r   r   r   r   TF)r   r
   Zis_diagonalrp   r"   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	kslt‚|jd
kszt‚d S )Nr   r   r   r   r   r@   é   ©r   r   TF)r   r
   Z	is_squarer"   r   r(   r(   r)   Útest_DomainMatrix_is_square”  s    (6r–   c                  C   sæ   t ddgddggtƒ} |  ¡ |  ¡  ¡   krBtdƒtdƒgksHn t‚t ddgddgddggtƒ} |  ¡ |  ¡  ¡   krtdƒtdƒgks–n t‚t dddgdddggtƒ} |  ¡ |  ¡  ¡   krÜtdƒtdƒgksân t‚d S )Nr   r   r   r   r@   r”   )r   r
   Zdiagonalrp   r"   r=   r(   r(   r)   Útest_DomainMatrix_diagonal›  s    22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sFt‚d S )Nr   r   r   r   r”   é   r•   )r   r   Zrankr"   r=   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rn| kstn t‚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ðt‚ˆˆ |kst‚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s¦t‚|j	t
ddgddggdtƒ ¡ ksÎt‚|t ddgddggdtƒksðt‚|j	t
ddgddggdtƒ ¡ kst‚tt‡‡fdd	„ƒ d S )Nr   r   r   r   r   r”   r˜   c                      s   ˆ ˆ S r;   r(   r(   ©r'   ÚLr(   r)   r.   °  r/   z'test_DomainMatrix_add.<locals>.<lambda>c                      s   ˆˆ  S r;   r(   r(   rš   r(   r)   r.   ±  r/   rA   c                      s   ˆ ˆ S r;   r(   r(   ©ÚA1ÚA2r(   r)   r.   µ  r/   c                      s   ˆˆ  S r;   r(   r(   rœ   r(   r)   r.   ¶  r/   c                      s
   ˆ   ˆ¡S r;   ©Úaddr(   rœ   r(   r)   r.   ·  r/   c                      s
   ˆ  ˆ ¡S r;   rŸ   r(   rœ   r(   r)   r.   ¸  r/   c                      s
   ˆ  ˆ ¡S r;   rŸ   r(   ©r\   ry   r(   r)   r.   ¿  r/   c                      s
   ˆ   ˆ¡S r;   rŸ   r(   r¡   r(   r)   r.   À  r/   r   r+   r@   c                      s
   ˆ  ˆ ¡S r;   rŸ   r(   ru   r(   r)   r.   Ë  r/   )r   r
   r    r"   r   r8   r   r   r   r!   r   rx   r   )rT   ZAsumÚAsdÚAdsr(   )r'   r   rž   rv   r\   rw   ry   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rn| kstn t‚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ðt‚ˆˆ |kst‚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s¦t‚|j	t
ddgddggdtƒ ¡ ksÎt‚|| ksÞt‚|j	|j	 ksòt‚d S )Nr   r   r   r   r   r   c                      s   ˆ ˆ S r;   r(   r(   rš   r(   r)   r.   Õ  r/   z'test_DomainMatrix_sub.<locals>.<lambda>c                      s   ˆˆ  S r;   r(   r(   rš   r(   r)   r.   Ö  r/   rA   c                      s   ˆ ˆ S r;   r(   r(   rœ   r(   r)   r.   Ú  r/   c                      s   ˆˆ  S r;   r(   r(   rœ   r(   r)   r.   Û  r/   c                      s
   ˆ   ˆ¡S r;   ©Úsubr(   rœ   r(   r)   r.   Ü  r/   c                      s
   ˆ  ˆ ¡S r;   r¥   r(   rœ   r(   r)   r.   Ý  r/   c                      s
   ˆ  ˆ ¡S r;   r¥   r(   r¡   r(   r)   r.   ä  r/   c                      s
   ˆ   ˆ¡S r;   r¥   r(   r¡   r(   r)   r.   å  r/   r+   éÿÿÿÿéüÿÿÿ)r   r
   r¦   r"   r   r8   r   r   r   r!   r   rx   )rT   ZAdiffrw   rv   r¢   r£   r(   )r'   r   rž   r\   ry   r›   r)   Útest_DomainMatrix_subÎ  s8    (($((((("("(r©   c                  C   st   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rj|kspn t‚d S )
Nr   r   r   r   r   r§   éþÿÿÿéýÿÿÿr¨   )r   r
   Únegr"   )r'   Z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rn| kstn t‚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^t‚ˆˆ |kspt‚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(n t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t  	dt¡}tdƒ}ˆ | |ˆ    kršˆ  |¡ 
¡   krš|ks n t‚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t‚|jtddgddggdtƒ ¡ ksDt‚|t ddgddggdtƒksft‚|jtddgddggdtƒ ¡ ksŽt‚d S )Nr   r   r   r   r   r?   é
   é   é   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                      s
   ˆ  ˆ ¡S r;   ©Úmatmulr(   r¡   r(   r)   r.     r/   c                      s
   ˆ   ˆ¡S r;   r±   r(   r¡   r(   r)   r.     r/   r”   r˜   r   r+   )r   r
   r²   r"   r   r8   r   r   ÚmulÚzerosrp   r!   r   rx   )rž   ZAprodZAAr_   rw   rv   r¢   r£   r(   )r'   r\   ry   r›   r)   Útest_DomainMatrix_mulø  s<    (($((((((8(<"("("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sŠt‚| | ¡|ksœt‚d S )Nr   r   r   r   r   r˜   )r   r
   Zmul_elementwiser"   rS   r(   r(   r)   Ú!test_DomainMatrix_mul_elementwise  s
    (((r¶   c                     sp  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r¢| ks¨n t‚ˆ d ˆ  d¡  krÆˆ ksÌn t‚ˆ d ˆ  d¡  krê|ksðn t‚ˆ d ˆ  d¡  kr|ksn t‚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   r?   r®   r¯   r°   é%   é6   éQ   év   r   c                      s   ˆ t ddƒ S ©Nr   r   rM   r(   r=   r(   r)   r.   1  r/   z'test_DomainMatrix_pow.<locals>.<lambda>c                      s   ˆ d S ©Nr§   r(   r(   r=   r(   r)   r.   2  r/   c                      s
   ˆ   d¡S r¼   )Úpowr(   r=   r(   r)   r.   3  r/   ©r   r   c                      s   ˆ d S ©Nr   r(   r(   r=   r(   r)   r.   6  r/   )
r   Úeyer
   r½   r"   r   r8   ÚNotImplementedErrorr´   r   )rÀ   rž   ZA3r(   r=   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sXt‚| jd
d||fkspt‚| | |ks€t‚| || kst‚d S )NrA   ©r   r   rC   ©r   r@   é<   é   é   r¯   é   T©rJ   )r   r   r   r
   rZ   Zclear_denomsr"   ©r'   Zden_ZZAnum_ZZAnum_Qr(   r(   r)   Útest_DomainMatrix_clear_denoms9  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d	gd
dggtƒ}t dd	gd
dggtƒ}|  ¡ ||fkspt‚| jdd||fksˆt‚||  |ks˜t‚| | ¡  ¡ | ks°t‚t ddddgddddgddddggtƒ} t dddgdddgdddggtƒ ¡ }t dd	ddgddddgddddggtƒ}| t¡}|  ¡ ||fksFt‚| jdd||fks`t‚||  |ksrt‚| | ¡  ¡ | ksŒt‚d S )NrA   rÃ   rC   rÄ   r”   r   rÇ   r   r   r@   r   TrÉ   )r   r”   )r   r?   r   i¤  éi   éT   éF   rÅ   )	r   r   r
   rp   Zclear_denoms_rowwiser"   rn   ÚinvrZ   rÊ   r(   r(   r)   Ú&test_DomainMatrix_clear_denoms_rowwiseF  s     (&(
rÐ   c                      sR  t ddgddggtƒ‰ ˆ  tdƒ¡t ddgddggtƒtdƒfksFt‚ˆ  tdƒ¡t ddgddggtƒtdƒfksvt‚ˆ  tdƒ¡t ddgddggtƒtdƒfks¦t‚t ddgddggtƒ‰ ˆ  tdƒ¡ˆ tdƒfksÚt‚ˆ  tdƒ¡ˆ  tdƒfksút‚t ddgddggtƒ‰ ˆ  tddƒ¡tdd	ƒˆ  tdƒfks<t‚tt‡ fd
d„ƒ d S )Nr   r   r”   r˜   r   r   rª   r   r§   c                      s   ˆ   tdƒ¡S ©Nr   )Úcancel_denomr
   r(   r=   r(   r)   r.   k  r/   z0test_DomainMatrix_cancel_denom.<locals>.<lambda>)r   r
   rÒ   r"   r   r   ÚZeroDivisionErrorr(   r(   r=   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sFt‚|t ddgddggtƒksdt‚ˆ  tdƒ¡\} }| t ddgddggtƒks”t‚|t ddgddggtƒks²t‚tt‡ fdd„ƒ d S )	Nr   r   r”   r˜   r   r   c                      s   ˆ   tdƒ¡S rÑ   )Úcancel_denom_elementwiser
   r(   r=   r(   r)   r.   w  r/   z<test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>)r   r
   rÕ   r"   r   rÓ   )ZnumersZdenomsr(   r=   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sDt‚|  ¡ ||fksXt‚d S )Nr   r   r”   r˜   r   r   )r   r
   Úcontentr"   Z	primitive)r'   ZA_primitiveZ	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sht‚qht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   ˆ   ¡ S r;   )Úsccr(   r=   r(   r)   r.     r/   z'test_DomainMatrix_scc.<locals>.<lambda>)	r   r
   rp   r!   rÚ   r"   r   r   r   )rv   rw   rh   ri   r(   r=   r)   Útest_DomainMatrix_scc‚  s    þ þrÛ   c                     sì  t g dtƒ} |  ¡ | dfks t‚t tdƒggdtƒ} |  ¡ | dfksHt‚t tdƒggdtƒ} |  ¡ | dfkspt‚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Ôt‚|dksà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sFt‚|dksTt‚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ºt‚|dksÈ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.t‚|dks<t‚d}t tdƒtdƒgtdƒtd	ƒggd
tƒ‰ |D ]V}ˆ j|d\}}|t tdƒtdƒgtdƒtdƒggd
tƒks²t‚|dkslt‚qltt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr+   r(   r   r1   )r   r   r   r   r   r   )r   )ÚautoZGJr	   ZCDZGJ_denseZFF_denseZCD_dense©Úmethodc                      s   ˆ j ddS ©NZfoorÝ   )Úrrefr(   ©ry   r(   r)   r.   ¶  r/   z(test_DomainMatrix_rref.<locals>.<lambda>c                      s   ˆ j ddS rß   )Úrref_denr(   rá   r(   r)   r.   ·  r/   )r   r   rà   r"   r
   r   r9   )r'   ZArÚpivotsÚmethodsrÞ   r(   rá   r)   Útest_DomainMatrix_rref  s<    (0(2(2(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slt‚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*t‚d S )Nr   r§   r   rª   r   r€   r   c                      s   ˆ   ¡ S r;   )Úcolumnspacer(   rá   r(   r)   r.   À  r/   z/test_DomainMatrix_columnspace.<locals>.<lambda>r2   r4   r+   )r   r   ræ   r"   r
   r   r   )r'   ZAcolr(   rá   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sDt‚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sÒt‚d S )Nr   r§   r   rª   r   r€   c                      s   ˆ   ¡ S r;   )Úrowspacer(   rá   r(   r)   r.   Ì  r/   z,test_DomainMatrix_rowspace.<locals>.<lambda>r2   r4   )r   r   rè   r"   r
   r   r   r=   r(   rá   r)   Útest_DomainMatrix_rowspaceÇ  s    448ré   c                     sx  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒggdtƒ} ˆ  ¡ | ksRt‚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¤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dƒkst‚| ¡ | ks*t‚| |¡| ks>t‚| 	¡  ¡ |  	¡ ksXt‚| 	¡  |¡|  	¡ kstt‚d S )	Nr   r   r§   rA   c                      s   ˆ j ddS )NT)Zdivide_last)Ú	nullspacer(   r=   r(   r)   r.   Û  r/   z-test_DomainMatrix_nullspace.<locals>.<lambda>r   rª   )
r   r   rê   r"   r
   r   r   râ   Znullspace_from_rrefrp   )ZAnullZArrefÚdenrã   r(   r=   r)   Útest_DomainMatrix_nullspaceÒ  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 ddggdtƒ}t ddggdtƒ}ˆ  | ¡||fks~t‚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   rA   rª   rB   c                      s
   ˆ   ˆ¡S r;   ©Ú_solver(   )r'   Úb3r(   r)   r.   ñ  r/   z)test_DomainMatrix_solve.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r;   rí   r(   )r'   Úbzr(   r)   r.   ô  r/   )r   r   rî   r"   r   r   r
   r   )ÚbZ
particularrê   r(   )r'   rï   rð   r)   Útest_DomainMatrix_solveè  s    ($rò   c                     s$  t g dtƒ} |  ¡ | kst‚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€t‚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                      s   ˆ   ¡ S r;   ©rÏ   r(   rá   r(   r)   r.      r/   z'test_DomainMatrix_inv.<locals>.<lambda>rA   c                      s   ˆ   ¡ S r;   ró   r(   ©ÚAnsr(   r)   r.     r/   r”   c                      s   ˆ   ¡ S r;   ró   r(   )ÚAninvr(   r)   r.     r/   )	r   r   rÏ   r"   r
   r   r   r   r   )r'   ZAinvr(   )rö   rõ   ry   r)   Útest_DomainMatrix_inv÷  s    (,((r÷   c                     s   t g dtƒ} |  ¡ dkst‚t dggdtƒ} |  ¡ dks<t‚t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒksxt‚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Ô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dƒks2t‚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œt‚d S )Nr†   r   r1   r   r   r   r   rª   r@   rÙ   r§   r   rA   c                      s   ˆ   ¡ S r;   )Údetr(   rô   r(   r)   r.     r/   z'test_DomainMatrix_det.<locals>.<lambda>)r   r
   rø   r"   r   r   r   r=   r(   rô   r)   Útest_DomainMatrix_det	  s    (HH(rù   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r¨|d
 | d  |d |   |d | d
   ks®n t‚|  g ¡|  | j| j¡ksÌt‚|  tdƒg¡d|  d| j¡ ksòt‚t tdƒtdƒggdtƒ‰ tt	‡ fdd„ƒ d S )Nr   r   r   r   r   rÈ   é   é   é!   r   rA   c                      s   ˆ   tdƒg¡S r¿   )Ú	eval_polyr
   r(   ©ÚdM2r(   r)   r.   )  r/   z-test_DomainMatrix_eval_poly.<locals>.<lambda>)
r   r
   rý   r"   r´   r$   r%   rÀ   r   r   )ÚdMÚpÚresultr(   rþ   r)   Útest_DomainMatrix_eval_poly   s    ((H&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dƒtdƒtdƒg}t tdƒgtdƒggdtƒ}|  |ˆ ¡|  kr¾|d	 | d  ˆ  |d |  ˆ   |d ˆ   ksÄn t‚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                      s   ˆ  tdƒgˆ ¡S r¿   ©Úeval_poly_mulr
   r(   )rñ   ÚdM1r(   r)   r.   5  r/   z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>rA   c                      s   ˆ  tdƒgˆ ¡S r¿   r  r(   )Úb1r   r(   r)   r.   7  r/   c                      s   ˆ  tdƒgˆ ¡S r¿   r  r(   )Úbqr   r(   r)   r.   9  r/   )	r   r
   r  r"   r   r   r   r   r   )r'   r  r  r(   )rñ   r	  r
  r   r  r)   Útest_DomainMatrix_eval_poly_mul,  s    (N(r  c                    s  | |ˆf}|   ¡ |  ¡ ˆ  ¡ f}||fD ]Ø\‰ }}ˆ | || ksFt‚||f| | fg}ˆ  ˆ¡|kslt‚ˆ jˆdd|ks‚t‚ˆ  ˆ¡|ks”t‚ˆ j\}	}
|	|
krØˆ j|dd||fksÀt‚ˆ  |¡||fksÖt‚q(tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ q(d S )Nrà   rÝ   Úcharpolyc                      s
   ˆ   ˆ¡S r;   ©Úsolve_den_charpolyr(   ©ZAirñ   r(   r)   r.   T  r/   z"_check_solve_den.<locals>.<lambda>c                      s   ˆ j ˆddS )Nr  rÝ   ©Ú	solve_denr(   r  r(   r)   r.   U  r/   )rp   r"   r  Úsolve_den_rrefr$   r  r   r   )r'   rñ   ZxnumZxdenZcase1Zcase2Zxnum_iZb_iZanswersÚmÚnr(   r  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ª   r@   rÙ   rB   r1   )r   r
   r  )r'   rñ   r  rë   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¾   rA   c                      s
   ˆ   ˆ¡S r;   r  r(   )r   rñ   r(   r)   r.   s  r/   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r;   r  r(   ©r'   r	  r(   r)   r.   u  r/   c                      s
   ˆ   ˆ¡S r;   r  r(   )r'   r
  r(   r)   r.   w  r/   )r   r
   r   r   r   r   r   r(   r(   )r'   r   rñ   r	  r
  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sˆt‚ˆ jˆd
d| tdƒfks¦t‚d S )Nr   r   r   r   r   r¾   c                      s
   ˆ   ˆ¡S r;   r  r(   ©r'   rñ   r(   r)   r.   ~  r/   z<test_DomainMatrix_solve_den_charpoly_check.<locals>.<lambda>rª   F)Úcheckr   )r   r
   r   r   Úadjugater"   r  )Z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   rA   r¾   c                      s
   ˆ   ˆ¡S r;   r  r(   r  r(   r)   r.   ‡  r/   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r;   ©r  r(   r  r(   r)   r.   ˆ  r/   c                      s
   ˆ   ˆ¡S r;   r  r(   r  r(   r)   r.   Œ  r/   c                      s
   ˆ   ˆ¡S r;   r  r(   r  r(   r)   r.     r/   r   r   r   c                      s
   ˆ   ˆ¡S r;   r  r(   r  r(   r)   r.   ‘  r/   r1   c                      s   ˆ j ˆddS )Nr6   rÝ   r  r(   r  r(   r)   r.   •  r/   c                      s
   ˆ   ˆ¡S r;   r  r(   r  r(   r)   r.   ™  r/   )r   r
   r   r   r   r   r(   r(   )r'   rñ   r	  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                      s
   ˆ   ˆ¡S r;   r  r(   r  r(   r)   r.   Ÿ  r/   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r;   r  r(   r  r(   r)   r.      r/   )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spt‚ˆ  ¡ | d ˆ d  | d ˆ d   | d ˆ d     krºˆ  | ¡ksÀn t‚ˆ  ¡ |ksÐt‚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   r@   r”   r?   r˜   é	   éñÿÿÿéîÿÿÿr   c                      s   ˆ   ¡ S r;   )Úadj_poly_detr(   r=   r(   r)   r.   ®  r/   z0test_DomainMatrix_adj_poly_det.<locals>.<lambda>)	r   r
   r#  r"   r  rý   rø   r   r   )r  ZdetAr(   r=   r)   Útest_DomainMatrix_adj_poly_det£  s     þþPÿÿ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slt‚d S ©Nr   r   r   r   r   rª   r«   )r   r
   Zinv_denr"   )r'   rë   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s`t‚d S r%  )r   r
   r  r"   )r'   r  r(   r(   r)   Útest_DomainMatrix_adjugate¸  s    ((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sht‚d S r%  )r   r
   Zadj_detr"   )r'   ZadjAr(   r(   r)   Útest_DomainMatrix_adj_det¾  s    ((r(  c                     s  t g dtƒ‰ ˆ  ¡ ˆ ˆ g fks"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ƒ}g }ˆ  ¡ | ||fks´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	g}ˆ  ¡ | ||fksJt‚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Þ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ƒ}g }ˆ  ¡ | ||fksrt‚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t‚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ît‚ddddgddddgddddgddddgg‰ ddddgddddgddddgddddgg} ddddgddddgddddgddddgg}dd„ }t |ˆ tƒdtƒ‰ t || tƒdtƒ} t ||tƒdtƒ}ˆ  ¡ | |g fksÈt‚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+   r@   r”   r€   r«   iúÿÿÿ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(   rb   ©rE   r(   r)   re   ò  s     zEtest_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r(   )rc   Úrowr)  r(   r)   re   ò  s     z:test_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>r(   )ÚrowsrE   r(   r)  r)   r.   ò  r/   z&test_DomainMatrix_lu.<locals>.<lambda>)r   r   c                      s   ˆ   ¡ S r;   )Úlur(   r=   r(   r)   r.   ù  r/   )r   r   r,  r"   r
   r   r   )r›   ÚUZswapsZto_domr(   r=   r)   Útest_DomainMatrix_luÄ  sb    ((((((((((((4(46ý ý6,,,(r.  c                     sV  t g dtƒ ‰  ‰} ˆ  ˆ¡| ks&t‚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št‚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t‚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ôt‚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                      s
   ˆ   ˆ¡S r;   ©Úlu_solver(   r  r(   r)   r.     r/   z,test_DomainMatrix_lu_solve.<locals>.<lambda>r@   r”   r•   rB   c                      s
   ˆ   ˆ¡S r;   r/  r(   r  r(   r)   r.     r/   rA   r1   c                      s
   ˆ   ˆ¡S r;   r/  r(   r  r(   r)   r.      r/   c                      s
   ˆ   ˆ¡S r;   r/  r(   r  r(   r)   r.   %  r/   c                      s
   ˆ   ˆ¡S r;   r/  r(   r  r(   r)   r.   *  r/   )
r   r   r0  r"   r   r   rÁ   r
   r   r   ©r_   r(   r  r)   Útest_DomainMatrix_lu_solveü  s:    (((6$6$((r2  c                     sV  t g dtƒ} tdƒg}|  ¡ |ks&t‚|  ¡  ¡ |ks:t‚t dggdtƒ} tdƒtdƒg}|  ¡ |ksjt‚|  ¡  ¡ |ks~t‚t tdƒtdƒgtdƒtdƒggdtƒ} tdƒtd	ƒtd
ƒg}|  ¡ |ksÌt‚|  ¡  ¡ |ksà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dƒtdƒtdƒtdƒg}|  ¡ |ksVt‚|  ¡  ¡ |kslt‚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ât‚|  ¡  ¡ |ksøt‚tddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
ddddddddddg
g
tƒ} t dddddddddddg¡}|  ¡ |kst‚|  ¡  ¡ |ks&t‚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ª   r@   r”   r?   r˜   r   rÙ   r!  r"  r   é   rÆ   éE   éV   é   é   é    r·   éC   iïÿÿÿiê÷ÿÿi¤:ôÿrA   c                      s   ˆ   ¡ S r;   )r  r(   rô   r(   r)   r.   X  r/   z,test_DomainMatrix_charpoly.<locals>.<lambda>)
r   r
   r  r"   rp   r   Úmapr   r   r   )r'   r  r(   rô   r)   Útest_DomainMatrix_charpoly-  sX    
(Hþ þ÷	÷
 r<  c                  C   sê   t g dtƒ} |  ¡ g kst‚tdggtƒ} |  ¡ tdƒtdƒgdfgksLt‚tddgddggtƒ} |  ¡ tdƒtdƒtdƒgdfgksŠt‚tddd	gddd	gd	d	dggtƒ} |  ¡ tdƒtdƒgdftdƒtdƒtdƒgdfgksæt‚d S )
Nr†   r   r§   r   r   r   r3  rª   r   )r   r
   Zcharpoly_factor_listr"   r   r=   r(   r(   r)   Ú&test_DomainMatrix_charpoly_factor_list[  s    ÿ
ÿ
"þr=  c                  C   sB   t  dt¡} | jt dt¡ks"t‚| jdks0t‚| jtks>t‚d S )Nr   rÙ   )r   rÀ   r   r!   r   r"   r$   r%   r=   r(   r(   r)   Útest_DomainMatrix_eyep  s    r>  c                  C   sB   t  dt¡} | jt dt¡ks"t‚| jdks0t‚| jtks>t‚d S )NrA   )r   r´   r   r!   r   r"   r$   r%   r=   r(   r(   r)   Útest_DomainMatrix_zerosw  s    r?  c                  C   sf   t  dt¡} tdkr,| jt dt¡ksFt‚n| jt dt¡ ¡ ksFt‚| j	dksTt‚| j
tksbt‚d S )Nr€   r    )r   Zonesr   r   r!   r   r"   r   r#   r$   r%   r=   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sBt‚t dtdƒidtdƒidœdtƒ} t  tdƒtdƒgtd¡| ks†t‚d S )Nr   r   r   r   r+   r   )r   r   )r   r
   Zdiagr"   r=   r(   r(   r)   Útest_DomainMatrix_diagˆ  s    " "rA  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$t‚|  ||¡|ks:t‚d S )Nr   r   r   r   r   r@   r”   r?   r˜   r   r®   é   rÈ   ©r   r   )r   r”   )r   r
   Zhstackr"   ©r'   rT   rU   ZABÚABCr(   r(   r)   Útest_DomainMatrix_hstack  s&    (((þ þ&&þ þrF  c               	   C   sJ  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s0t‚|  ||¡|ksFt‚d S )Nr   r   r   r   r   r@   r”   r?   r˜   r   r®   rB  rÈ   )r   r   )r”   r   )r   r
   Zvstackr"   rD  r(   r(   r)   Útest_DomainMatrix_vstackŸ  s2    (((ü üú úrG  c                  C   sN   t tdƒtdƒggdtƒ} t tdƒtdƒggdtƒ}|  dd„ ¡|ksJt‚d S )Nr   r   rA   r   c                 S   s   d|  S )Nr   r(   r1  r(   r(   r)   r.   ·  r/   z-test_DomainMatrix_applyfunc.<locals>.<lambda>)r   r
   Z	applyfuncr"   r   r(   r(   r)   Útest_DomainMatrix_applyfunc´  s    rH  c                     s4  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svt‚ˆ d t tdƒtdƒgtdƒtdƒggdtƒksªt‚dˆ  t tdƒtdƒgtdƒtdƒggdtƒksÞt‚ˆ ttd	ƒtƒ t i dtƒkst‚ˆ ttdƒtƒ ˆ kst‚tt‡ fd
d„ƒ d S )Nr   r   r   r   r   r   r”   r˜   r   c                      s   ˆ d S ©Ng      ø?r(   r(   r=   r(   r)   r.   Ã  r/   z-test_DomainMatrix_scalarmul.<locals>.<lambda>)r   r
   r   r   r"   r   r8   )Úlamdar(   r=   r)   Útest_DomainMatrix_scalarmulº  s    (844$rK  c                     sP  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spt‚ttdƒtƒ}ˆ | t tdƒtdƒdœtdƒtdƒdœdœdtƒks¸t‚ˆ d t tdƒtdƒdœtdƒtdƒdœdœdtƒksòt‚ˆ d t tddƒtdƒdœtddƒtdƒdœdœdtƒks2t‚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Ît‚ˆ d t tddƒtdƒgtddƒtdƒggdtƒkst‚ˆ  
¡ tddƒ t tddƒtdƒgtddƒtdƒggdtƒksLt‚d S )Nr   r   r   r   r+   r˜   r   c                      s   ˆ d S rÑ   r(   r(   r=   r(   r)   r.   Ð  r/   z+test_DomainMatrix_truediv.<locals>.<lambda>c                      s   ˆ d S rI  r(   r(   r=   r(   r)   r.   Ñ  r/   c                      s   ˆ t tdƒtƒ S rÑ   )r   r
   r(   r=   r(   r)   r.   Ò  r/   r   r”   )r   rP   r   r   r   r"   r
   r   rÓ   r8   rn   )rJ  rñ   r(   r=   r)   Útest_DomainMatrix_truedivÆ  s    @::@(>:rL  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|t‚ˆ dd d…f t tdƒggdtƒks¤t‚ˆ d d…d d…f t tdƒggdtƒksÐt‚ˆ d d…dd…f t tdƒtdƒgtdƒtdƒggdtƒkst‚ˆ d d …df t tdƒgtdƒgtd	ƒggdtƒksLt‚ˆ dd d …f t tdƒtdƒtd	ƒggdtƒks‚t‚ˆ 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æt‚tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ d ttdƒtƒks&t‚ˆ d ttdƒtƒksBt‚ˆ d ttdƒtƒks^t‚ˆ d ttdƒtƒkszt‚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sät‚ˆ d ttdƒtƒks t‚t dddiidtƒ‰ ˆ dd …df t dddiidtƒks>t‚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˜t‚ˆ dd …dd …f t ddiddid"œd
tƒksÌt‚ˆ dd …dd …f t dddiidtƒksút‚ˆ dd …dd …f t i d#tƒks t‚d S )$Nr   r   r   r   r@   r”   r?   r˜   r   rÙ   rª   r¾   r1   r§   r   r   rB   rÃ   c                      s   ˆ dd d…f S )Nr   rª   r(   r(   ©r   r(   r)   r.   ë  r/   z+test_DomainMatrix_getitem.<locals>.<lambda>c                      s   ˆ d d…df S )Nrª   r   r(   r(   rM  r(   r)   r.   ì  r/   rA   )rª   r   )r   rª   )r§   r«   c                      s   ˆ d S )NrÙ   r(   r(   rM  r(   r)   r.   ó  r/   c                      s   ˆ d S )NrC   r(   r(   rM  r(   r)   r.   ô  r/   c                      s   ˆ d S )N)r§   r¨   r(   r(   rM  r(   r)   r.   õ  r/   )r®   r®   ©r@   r@   r†   c                      s   ˆ d S )N©r   r   r(   r(   rM  r(   r)   r.   ý  r/   rC  )r   r   rO  )r   r
   r"   r   Ú
IndexErrorr   r(   r(   rM  r)   Útest_DomainMatrix_getitemÚ  sT    ý ý4(,B:6ý ý*"&4.rQ  c                  C   sb   t dtdƒidtdƒidœdtƒ} |  dd¡}|tjks<t‚|  dd¡}|dkrZt|tƒs^t‚d S )Nr   r   r   rC  rN  r   )r   r
   Zgetitem_sympyr   ZZeror"   Ú
isinstancer   )r   Zval1Zval2r(   r(   r)   Útest_DomainMatrix_getitem_sympy  s
    "rS  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sŒt‚|  ¡  ddgddg¡| ¡ ks°t‚|  ddgddg¡|ksÌt‚|  ¡  ddgddg¡| ¡ ksð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ƒ}|  dddgdddg¡|ksZt‚|  ¡  dddgdddg¡| ¡ ks„t‚g g dfdgg dfg dgdfg}|D ]P\‰‰ }|  ˆˆ ¡t  |t¡ ¡ ksÔt‚|  ¡  ˆˆ ¡t  |t¡ks¨t‚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 ]6\‰‰ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ qRd S )Nr   r   r   r   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;   )rp   rT  r(   rU  r(   r)   r.   /  r/   )	r   r
   rT  r"   rp   r´   rr   r   rP  )r  rÿ   ZdM3ÚemptyÚsizeZbad_indicesr(   rU  r)   Útest_DomainMatrix_extract  sR    ý ýþ þ$$ý ý"*

ý"&(,rY  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sXt‚‡ fdd„‰tt‡fd	d
„ƒ tt‡fdd
„ƒ d S )Nr   r   r   rC  rN  r   c                    s   |ˆ | |f< d S r;   r(   )ÚiÚjÚvalrM  r(   r)   Úsetitem6  s    z*test_DomainMatrix_setitem.<locals>.setitemc                      s   ˆ ddt ddƒƒS )Nr   r   ra   r(   ©r]  r(   r)   r.   8  r/   z+test_DomainMatrix_setitem.<locals>.<lambda>c                      s   ˆ t ddƒdtdƒƒS r»   )Úslicer
   r(   r^  r(   r)   r.   9  r/   )r   r
   r"   r   r8   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sBt‚ttdƒtdƒgtdƒtdƒggdtƒ}|  |  |¡¡|ks‚t‚d S )	Nr   r   r   r   rC  rN  r   r   )Úpickler   r
   ÚloadsÚdumpsr"   )ra  r   r(   r(   r)   Útest_DomainMatrix_pickling<  s
    "(rd  N)uZsympy.external.gmpyr   Zsympyr   r   r   r   r   r   r	   r
   r   r   r   Z!sympy.polys.matrices.domainmatrixr   r   r   Zsympy.polys.matrices.exceptionsr   r   r   r   r   r   r   Zsympy.polys.matrices.ddmr   Zsympy.polys.matrices.sdmr   Zsympy.testing.pytestr   r*   r:   r>   rF   rL   rO   rQ   rV   rW   rY   r]   r`   rl   rm   ro   rq   rs   rz   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  r  r  r  r  r  r  r  r$  r&  r'  r(  r.  r2  r<  r=  r>  r?  r@  rA  rF  rG  rH  rK  rL  rQ  rS  rY  r`  rd  r(   r(   r(   r)   Ú<module>   s¸    $$ 	


		%$'*
81.
,$
