U
    L?h9¿  ã                   @   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(   ú^/var/www/html/venv/lib/python3.8/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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'   ZelemsÚdataZelemsqZelems2r(   r(   r)   Útest_DomainMatrix_to_flat_nzâ   s    

rk   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    (rl   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    (rn   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    (rp   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    rr   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   rs   r"   r!   r   Úto_dfm_or_ddmr   r   r9   )ÚAzr\   ZBsZBdr(   rt   r)   Útest_DomainMatrix_unify
  s"    (("(((&*ry   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"   ro   rZ   r   rI   r   )r'   ZA_Matrixr(   r(   r)   Útest_DomainMatrix_to_Matrix#  s    (rz   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   )Z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_dodro   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"   rq   ro   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_dokro   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_diagonalro   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diagonalro   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\   rx   r(   r)   r.   ¿  r/   c                      s
   ˆ   ˆ¡S r;   r   r(   rŸ   r(   r)   r.   À  r/   r   r+   r@   c                      s
   ˆ  ˆ ¡S r;   r   r(   rt   r(   r)   r.   Ë  r/   )r   r
   rž   r"   r   r8   r   r   r   r!   r   rw   r   )rT   ZAsumÚAsdÚAdsr(   )r'   r›   rœ   ru   r\   rv   rx   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   rw   )rT   ZAdiffrv   ru   r    r¡   r(   )r'   r›   rœ   r\   rx   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Úzerosro   r!   r   rw   )rœ   ZAprodZAAr_   rv   ru   r    r¡   r(   )r'   r\   rx   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
   ro   Zclear_denoms_rowwiser"   rm   Ú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
   ro   r!   rØ   r"   r   r   r   )ru   rv   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(   ©rx   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_rrefro   )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ó   rx   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/   )ro   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   r.  r"   r   r   r¿   r
   r   r   ©r_   r(   r  r)   Útest_DomainMatrix_lu_solveü  s:    (((6$6$((r0  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"   ro   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   r1  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    " "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$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&    (((þ þ&&þ þrD  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¬   r@  rÆ   )r   r   )r’   r   )r   r
   Zvstackr"   rB  r(   r(   r)   Útest_DomainMatrix_vstackŸ  s2    (((ü üú úrE  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(   r/  r(   r(   r)   r.   ·  r/   z-test_DomainMatrix_applyfunc.<locals>.<lambda>)r   r
   Z	applyfuncr"   r   r(   r(   r)   Útest_DomainMatrix_applyfunc´  s    rF  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$rI  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 rG  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   rm   )rH  rï   r(   r=   r)   Útest_DomainMatrix_truedivÆ  s    @::@(>:rJ  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(   rK  r(   r)   r.   ì  r/   rA   )r¨   r   )r   r¨   )r¥   r©   c                      s   ˆ d S )Nr×   r(   r(   rK  r(   r)   r.   ó  r/   c                      s   ˆ d S )NrC   r(   r(   rK  r(   r)   r.   ô  r/   c                      s   ˆ d S )N)r¥   r¦   r(   r(   rK  r(   r)   r.   õ  r/   )r¬   r¬   ©r@   r@   r„   c                      s   ˆ d S )N©r   r   r(   r(   rK  r(   r)   r.   ý  r/   rA  )r   r   rM  )r   r
   r"   r   Ú
IndexErrorr   r(   r(   rK  r)   Útest_DomainMatrix_getitemÚ  sT    ý ý4(,B:6ý ý*"&4.rO  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   rA  rL  r   )r   r
   Zgetitem_sympyr   ZZeror"   Ú
isinstancer   )rþ   Zval1Zval2r(   r(   r)   Útest_DomainMatrix_getitem_sympy  s
    "rQ  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;   )ro   rR  r(   rS  r(   r)   r.   /  r/   )	r   r
   rR  r"   ro   r²   rq   r   rN  )r  rý   ZdM3ÚemptyÚsizeZbad_indicesr(   rS  r)   Útest_DomainMatrix_extract  sR    ý ýþ þ$$ý ý"*

ý"&(,rW  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   rA  rL  r   c                    s   |ˆ | |f< d S r;   r(   )ÚiÚjÚvalrK  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   rA  rL  r   r   )Úpickler   r
   ÚloadsÚdumpsr"   )r_  rþ   r(   r(   r)   Útest_DomainMatrix_pickling<  s
    "(rb  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`   rk   rl   rn   rp   rr   ry   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,  r0  r:  r;  r<  r=  r>  r?  rD  rE  rF  rI  rJ  rO  rQ  rW  r^  rb  r(   r(   r(   r)   Ú<module>   s¸    $$ 	


		%$'*
81.
,$
