o
    ÜÓhVÃ  ã                   @   sX  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³d´„ ZudµS )¶é    )ÚGROUND_TYPES)ÚIntegerÚRationalÚSÚsqrtÚMatrixÚsymbols)ÚFFÚZZÚQQÚQQ_IÚEXRAW)ÚDomainMatrixÚDomainScalarÚDM)ÚDMBadInputErrorÚDMDomainErrorÚDMShapeErrorÚDMFormatErrorÚDMNotAFieldÚDMNonSquareMatrixErrorÚDMNonInvertibleMatrixError)ÚDDM)ÚSDM)Úraisesc                  C   sˆ   t tdƒtdƒgtdƒtdƒggdtƒ} tddgddggtƒ}tdkr+|j| ks*J ‚n	|j|  ¡ ks4J ‚|jdks;J ‚|jtksBJ ‚d S )Né   é   é   é   ©r   r   Úflint)r   r
   r   r   ÚrepÚto_dfmÚshapeÚdomain)ÚddmÚA© r'   úb/var/www/html/ai/venv/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_domainmatrix.pyÚtest_DM   s   (r)   c                     sÐ  t dƒt dƒgt dƒt dƒgg‰t dƒt dƒdœt dƒt dƒdœdœ} tˆdt ƒ‰ t| dt ƒ‰tˆdt ƒ}tdkrA|jˆ ks@J ‚n	|jˆ  ¡ ksJJ ‚|jdksQJ ‚|jt ksXJ ‚t| dt ƒ}|jˆkseJ ‚|jdkslJ ‚|jt kssJ ‚t	t
‡ fdd	„ƒ t	t
‡fd
d	„ƒ t	t
dd	„ ƒ dˆfdˆ ffD ].\}}|dkr¤tdkr¤| ¡ }tˆdt |d}|j|ks³J ‚t| dt |d}|j|ksÂJ ‚q”t	t‡fdd	„ƒ t	tdd	„ ƒ dd„ ˆD ƒ}t dƒ|d< |ˆksæJ ‚d S )Nr   r   r   r   ©r   r   r   r    c                      ó   t ˆ dtƒS ©Nr   ©r   r
   r'   )r%   r'   r(   Ú<lambda>/   ó    z(test_DomainMatrix_init.<locals>.<lambda>c                      r+   r,   r-   r'   )Úsdmr'   r(   r.   0   r/   c                   S   s   t tdggƒdtƒS )Nr   ©r   r   )r   r   r
   r'   r'   r'   r(   r.   1   ó    ÚsparseÚdense©Úfmtc                      s   t ˆ dtddS )Nr   Úinvalidr5   r-   r'   )Úlolr'   r(   r.   ;   ó    c                   S   s   t tdƒtdƒggdtƒS )Nr   r   r   r-   r'   r'   r'   r(   r.   =   ó    c                 S   s   g | ]}|  ¡ ‘qS r'   )Úcopy)Ú.0Úir'   r'   r(   Ú
<listcomp>@   r2   z*test_DomainMatrix_init.<locals>.<listcomp>é*   ©r   r   )r
   r   r   r   r   r!   r"   r#   r$   r   Ú	TypeErrorÚ
ValueErrorr   )Údodr&   r6   r!   Úwasr'   )r%   r8   r0   r(   Útest_DomainMatrix_init   s:    &rE   c                     sè   t tdƒtdƒgtdƒtdƒggdtƒ} t | ¡‰ ˆ j| ks J ‚ˆ jdks'J ‚ˆ jtks.J ‚ttdƒtdƒdœtdƒtdƒdœdœdtƒ}t |¡‰ ˆ j|ksQJ ‚ˆ jdksXJ ‚ˆ jtks_J ‚ttdƒggdtƒ‰ tt	‡ fdd	„ƒ d S )
Nr   r   r   r   r   r*   r1   c                      s
   t  ˆ ¡S ©N)r   Úfrom_repr'   ©r&   r'   r(   r.   T   ó   
 z,test_DomainMatrix_from_rep.<locals>.<lambda>)
r   r
   r   rG   r!   r#   r$   r   r   rA   )r%   r0   r'   rH   r(   Útest_DomainMatrix_from_repE   s   (
.
rJ   c                  C   sF  t tdƒtdƒgtdƒtdƒggdtƒ} t ddgddggt¡}tdkr,|j| ks+J ‚n	|j|  ¡ ks5J ‚|jdks<J ‚|jtksCJ ‚t	dƒ}t |dƒ|dƒg|dƒ|dƒggd|ƒ} t ddgddgg|¡}tdkrs|j| ksrJ ‚n	|j|  ¡ ks|J ‚|jdksƒJ ‚|j|ksŠJ ‚t	dd d ƒ}t |dƒ|dƒg|dƒ|dƒggd|ƒ} t ddgddgg|¡}tdkr¾|j| ks½J ‚n	|j|  ¡ ksÇJ ‚|jdksÎJ ‚|j|ksÕJ ‚t t
ddƒt
ddƒgt
ddƒt
d	dƒggdt
ƒ} t d
dgddggt
¡}tdkr|j| ksJ ‚n
|j|  ¡ ksJ ‚|jdksJ ‚|jt
ks!J ‚d S )Nr   r   r   r   r   r    é   é   é   ©r   r   ©r   r   ©r   r   )rM   r   )r   r
   r   Ú	from_listr   r!   r"   r#   r$   r	   r   )r%   r&   Údomr'   r'   r(   Útest_DomainMatrix_from_listW   s<   (((0
rS   c                  C   sR  t tdƒtdƒgtdƒtdƒggdtƒ} t ddddgddgg¡}tdkr-|j| ks,J ‚n	|j|  ¡ ks6J ‚|jdks=J ‚|jtksDJ ‚t	 
tdƒ¡}t | dtdƒ ¡| dtdƒ ¡g| dtdƒ ¡| dtdƒ ¡ggd|ƒ} tjdddtdƒ dtdƒ gdtdƒ dtdƒ ggdd}|j| ks™J ‚|jdks J ‚|j|ks§J ‚d S )	Nr   r   r   r   r   r    T©Ú	extension)r   r
   r   Úfrom_list_sympyr   r!   r"   r#   r$   r   Úalgebraic_fieldr   Úconvert)r%   r&   ÚKr'   r'   r(   Ú!test_DomainMatrix_from_list_sympy   s,   (""ÿü2þrZ   c                     sª   t dtddƒidtddƒidœdtƒ} dtddƒidtddƒidœ}t dd|¡}|j| ks0J ‚|jdks7J ‚|jtks>J ‚tj‰ tt	‡ fdd„ƒ tt	‡ fd	d„ƒ d S )
Nr   r   r   r   r*   r   c                      ó   ˆ ddddt ddƒiiƒS )Nr   r   r   r   ©r   r'   ©Úfdsr'   r(   r.   ¡   r:   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>c                      r[   )Nr   r   r   r   r\   r'   r]   r'   r(   r.   ¢   r:   )
r   r   r   r   Úfrom_dict_sympyr!   r#   r$   r   r   )r0   Ú
sympy_dictr&   r'   r]   r(   Ú!test_DomainMatrix_from_dict_sympy˜   s   &ra   c                  C   sî  t tdƒtdƒdœtdƒtdƒdœdœdtƒ} t tddgddggƒ¡}|j| ks+J ‚|jdks2J ‚|jtks9J ‚t 	t
dƒ¡}t | dt
dƒ ¡| dt
dƒ ¡dœ| dt
dƒ ¡| dt
dƒ ¡dœdœd|ƒ} tjtdt
dƒ dt
dƒ gdt
dƒ dt
dƒ ggƒdd}|j| ks‘J ‚|jdks˜J ‚|j|ksŸJ ‚tjttddƒtddƒgtd	dƒtd	dƒggƒd
d}ttddƒtddƒgtd	dƒtd	dƒggdtƒ}tdkrÞ|j|ksÝJ ‚n	|j| ¡ ksçJ ‚|jdksîJ ‚|jtksõJ ‚d S )Nr   r   r*   r   r   r   TrT   r   r4   r5   r    )r   r
   r   Úfrom_Matrixr   r!   r#   r$   r   rW   r   rX   r   r   r"   )r0   r&   rY   r%   r'   r'   r(   Útest_DomainMatrix_from_Matrix¥   s6   .$$ÿü2þ60rc   c                  C   s˜   t tdƒtdƒgtdƒtdƒggdtƒ} | | ksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ}| |ks4J ‚tdƒtdƒgtdƒtdƒgg}| |ksJJ ‚d S ©Nr   r   r   r   r   r-   ©r&   ÚBÚCr'   r'   r(   Útest_DomainMatrix_eqÅ   s   (( rh   c                  C   sÆ   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒggdtƒ}|  |¡du sOJ ‚|  |¡du sXJ ‚|  |¡du saJ ‚d S )	Nr   r   r   r   r   r1   TF)r   r
   r   Úunify_eq)r&   ÚB1ÚB2ÚB3r'   r'   r(   Útest_DomainMatrix_unify_eqÎ   s   (((rm   c                  C   s”   t  g d¢¡\} }|tdƒtdƒtdƒtdƒgksJ ‚| tks!J ‚t  dddtddƒg¡\} }|tdƒtdƒtdƒtddƒgksBJ ‚| tksHJ ‚d S )N)r   r   r   r   r   r   r   r   )r   Ú
get_domainr
   r   r   )rY   Úitemsr'   r'   r(   Útest_DomainMatrix_get_domainØ   s   $&rp   c                  C   sf   t tdƒtdƒgtdƒtdƒggdtƒ} |  t¡}|t tdƒtdƒgtdƒtdƒggdtƒks1J ‚d S rd   )r   r
   Ú
convert_tor   ©r&   ÚAqr'   r'   r(   Útest_DomainMatrix_convert_toâ   s   (
4rt   c                  C   sº   ddgddgg} t | tƒ ¡ t | tƒksJ ‚t | tƒjddt | tƒks&J ‚t | tƒjddt | tƒks6J ‚tdƒ}d|g|d |d gg}t |t| ƒjddt |t |¡ƒks[J ‚d S )Nr   r   r   r   T)ÚfieldÚx)r   r   Úchoose_domainr
   r   Ú
frac_field)r&   rv   rf   r'   r'   r(   Útest_DomainMatrix_choose_domainè   s     .ry   c                  C   s¶   t ddgddggtƒ} | j ¡ }| j ¡ }| ||fD ]>}| ¡ \}}| |||j¡|ks.J ‚dd„ |D ƒ}| ||t¡| 	t¡ksCJ ‚dd„ |D ƒ}| |||j¡d| ksXJ ‚qd S )Nr   r   r   r   c                 S   s   g | ]}t |ƒ‘qS r'   ©r   ©r<   Úer'   r'   r(   r>   ú   r2   z0test_DomainMatrix_to_flat_nz.<locals>.<listcomp>c                 S   s   g | ]}d | ‘qS )r   r'   r{   r'   r'   r(   r>   ü   r2   )
r   r
   r!   Úto_ddmÚto_sdmÚ
to_flat_nzÚfrom_flat_nzr$   r   rq   )ÚAdmÚAddmÚAsdmr&   ÚelemsÚdataÚelemsqÚelems2r'   r'   r(   Útest_DomainMatrix_to_flat_nzó   s   

úrˆ   c                  C   sB   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ |  t¡ksJ ‚d S rd   )r   r
   Úto_sympyrq   r   rH   r'   r'   r(   Útest_DomainMatrix_to_sympy   s   (rŠ   c                  C   sd   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ }|t tdƒtdƒgtdƒtdƒggdtƒks0J ‚d S rd   )r   r
   Úto_fieldr   rr   r'   r'   r(   Útest_DomainMatrix_to_field  s   (4rŒ   c                  C   sT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ }|jdddœdddœdœks(J ‚d S )Nr   r   r   r   r   r*   )r   r
   Ú	to_sparser!   )r&   ÚA_sparser'   r'   r(   Útest_DomainMatrix_to_sparse  s   ($r   c                  C   sn   t dddœdddœdœdtƒ} |  ¡ }tddgddggdtƒ}tdkr,|j|ks*J ‚d S |j| ¡ ks5J ‚d S )Nr   r   r*   r   r   r   r    )r   r
   Úto_denser   r   r!   r"   )r&   ÚA_denser%   r'   r'   r(   Útest_DomainMatrix_to_dense  s   r’   c                     sò  t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}|  | ¡| | fks3J ‚|  |¡||fks>J ‚| | ¡||fksIJ ‚| |¡||fksTJ ‚t dtdƒidtdƒidœdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ ˆ¡ˆˆfks„J ‚ˆ  ˆ ¡ˆ ˆ fksJ ‚ˆjˆ dd	\}}|jtddgddggdtƒ ¡ ks«J ‚|jtddgddggdtƒ ¡ ks¾J ‚ˆjˆ d
d	\}}|jtddiddidœdtƒksÙJ ‚|jtdddœdddœdœdtƒksíJ ‚tt	‡ ‡fdd„ƒ d S )Nr   r   r   r   r   r   r*   r4   r5   r3   c                      s   ˆj ˆ ddS )Nr7   r5   )Úunifyr'   ©ÚAdÚAsr'   r(   r.   1  ó    z)test_DomainMatrix_unify.<locals>.<lambda>)
r   r
   r   r“   r!   r   Úto_dfm_or_ddmr   r   rB   )ÚAzrs   ÚBsÚBdr'   r”   r(   Útest_DomainMatrix_unify  s"   (("(&&$(rœ   c                  C   sš   t tdƒtdƒgtdƒtdƒggdtƒ} tddgddggƒ}|  ¡ |ks&J ‚|  ¡  ¡ |ks0J ‚|  t¡ ¡ |ks;J ‚|  t tdƒ¡¡ ¡ |ksKJ ‚d S rd   )	r   r
   r   Ú	to_Matrixr   rq   r   rW   r   )r&   ÚA_Matrixr'   r'   r(   Útest_DomainMatrix_to_Matrix4  s   ($rŸ   c                  C   sX   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒgtdƒtdƒggks*J ‚d S rd   )r   r
   Úto_listrH   r'   r'   r(   Útest_DomainMatrix_to_list=  s   (0r¡   c                  C   óT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgks(J ‚d S rd   )r   r
   Úto_list_flatrH   r'   r'   r(   Útest_DomainMatrix_to_list_flatB  ó   (,r¤   c                  C   r¢   rd   )r   r
   ÚflatrH   r'   r'   r(   Útest_DomainMatrix_flatG  r¥   r§   c                  C   sê   t dƒt dƒt dƒt dƒg} tt dƒt dƒgt dƒt dƒggdt ƒ}t | dt ¡|ks-J ‚t | dt ¡|j ¡ ks;J ‚t | dt ¡|j ¡ ksIJ ‚|| | ¡ |j	|j
¡ksXJ ‚tttj| dt ƒ tttj| dt ƒ tttj| dt ƒ d S )Nr   r   r   r   r   ©r   r   )r
   r   Úfrom_list_flatr   r!   r}   r   r~   r£   r#   r$   r   r   )Únumsr&   r'   r'   r(   Ú test_DomainMatrix_from_list_flatL  s   (r«   c                  C   s¬   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒdœtdƒtdƒdœdœks-J ‚t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ dtdƒidtdƒidœksTJ ‚d S )Nr   r   r   r   r   r*   r   )r   r
   Úto_dodrH   r'   r'   r(   Útest_DomainMatrix_to_dod[  s   (2(*r­   c                  C   s†   t dƒt dƒdœt dƒt dƒdœdœ} tddgddggt ƒ}t | dt ¡| ¡ ks+J ‚| | ¡|ks4J ‚| | t¡| t¡ksAJ ‚d S )Nr   r   r*   r   r   r   )r
   r   r   Úfrom_dodr   Úfrom_dod_liker   rq   ©ro   r&   r'   r'   r(   Útest_DomainMatrix_from_dodb  s
   &r±   c                  C   sô   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒdœks)J ‚t tdƒtdƒgtdƒtdƒggdtƒ} tdƒtdƒdœ}|  ¡ |ksNJ ‚|  ¡  ¡ |ksXJ ‚|  ¡  ¡ |ksbJ ‚| j ¡  ¡ |ksmJ ‚| j ¡  ¡ |ksxJ ‚d S )	Nr   r   r   r   r   )r@   r*   ©r   r   r1   r   ©r@   r1   )r   r
   Úto_dokr   r   r!   r}   r~   )r&   Údokr'   r'   r(   Útest_DomainMatrix_to_dokj  s   (*(r¶   c                  C   s~   t dƒt dƒdœ} tddgddggt ƒ}t | dt ¡| ¡ ks!J ‚t | dt ¡|j ¡ ks/J ‚t | dt ¡|j 	¡ ks=J ‚d S )Nr   r   r³   r   r   )
r
   r   r   Úfrom_dokr   r   r!   r}   r   r~   r°   r'   r'   r(   Útest_DomainMatrix_from_dokv  s
    r¸   c                  C   s<   t tdƒtdƒgtdƒtdƒggdtƒ} t| ƒdksJ ‚d S )Nr   r   r   r   r   z*DomainMatrix([[1, 2], [3, 4]], (2, 2), ZZ))r   r
   ÚreprrH   r'   r'   r(   Útest_DomainMatrix_repr~  s   (rº   c                  C   sd   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}|  ¡ |ks0J ‚d S rd   )r   r
   Ú	transpose)r&   ÚATr'   r'   r(   Útest_DomainMatrix_transposeƒ  ó   ((r½   c                  C   sH   t tdƒggdtƒ} t tdƒggdtƒ}| jdu sJ ‚|jdu s"J ‚d S )Nr   r1   r   FT)r   r
   Úis_zero_matrix©r&   rf   r'   r'   r(   Ú test_DomainMatrix_is_zero_matrix‰  s   rÁ   c                  C   sp   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}| jdu s/J ‚|jdu s6J ‚d S )	Nr   r   r   r   r   r   TF)r   r
   Úis_upperrÀ   r'   r'   r(   Útest_DomainMatrix_is_upper  ó   ((rÃ   c                  C   sp   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}| jdu s/J ‚|jdu s6J ‚d S )	Nr   r   r   r   r   r   TF)r   r
   Úis_lowerrÀ   r'   r'   r(   Útest_DomainMatrix_is_lower—  rÄ   rÆ   c                  C   sx   t ddgddggtƒ} t ddgddggtƒ}| j|  ¡ j  u r%du s(J ‚ J ‚|j| ¡ j  u r7du s:J ‚ J ‚d S )Nr   r   r   r   r   TF)r   r
   Úis_diagonalr   rÀ   r'   r'   r(   Útest_DomainMatrix_is_diagonalž  s   $(rÈ   c                  C   s~   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ}| jd	u s6J ‚|jd
u s=J ‚d S )Nr   r   r   r   r   rM   é   ©r   r   TF)r   r
   Ú	is_squarerÀ   r'   r'   r(   Útest_DomainMatrix_is_square¥  s   (6rÌ   c                  C   sè   t ddgddggtƒ} |  ¡ |  ¡  ¡   kr"tdƒtdƒgks%J ‚ J ‚t ddgddgddggtƒ} |  ¡ |  ¡  ¡   krJtdƒtdƒgksMJ ‚ J ‚t g d¢g d¢gtƒ} |  ¡ |  ¡  ¡   krotdƒtdƒgksrJ ‚ J ‚d S )	Nr   r   r   r   rM   rÉ   )r   r   r   )r   rM   rÉ   )r   r
   Údiagonalr   rH   r'   r'   r(   Útest_DomainMatrix_diagonal¬  s   448rÎ   c                  C   sJ   t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ} |  ¡ dks#J ‚d S )Nr   r   r   r   rÉ   é   rÊ   )r   r   ÚrankrH   r'   r'   r(   Útest_DomainMatrix_rankµ  s   6rÑ   c                     s0  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} ˆ ˆ  ˆ  ˆ ¡  kr8| ks;J ‚ J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ddgddgg‰tt‡ ‡fdd	„ƒ tt‡ ‡fd
d	„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒggdtƒ‰tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ}ˆˆ |ksøJ ‚ˆˆ |ksJ ‚tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ t dtdƒidtdƒidœdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰ˆˆ }ˆˆ }|t ddgddggdtƒksSJ ‚|jt	ddgddggdtƒ 
¡ ksgJ ‚|t ddgddggdtƒksxJ ‚|jt	ddgddggdtƒ 
¡ ksŒJ ‚tt‡‡fdd	„ƒ d S )Nr   r   r   r   r   rÉ   rÏ   c                      ó   ˆ ˆ S rF   r'   r'   ©r&   ÚLr'   r(   r.   Á  ó    z'test_DomainMatrix_add.<locals>.<lambda>c                      ó   ˆˆ  S rF   r'   r'   rÓ   r'   r(   r.   Â  rÕ   rN   c                      rÒ   rF   r'   r'   ©ÚA1ÚA2r'   r(   r.   Æ  rÕ   c                      rÖ   rF   r'   r'   r×   r'   r(   r.   Ç  rÕ   c                      ó
   ˆ   ˆ¡S rF   ©Úaddr'   r×   r'   r(   r.   È  rI   c                      ó
   ˆ  ˆ ¡S rF   rÛ   r'   r×   r'   r(   r.   É  rI   c                      rÝ   rF   rÛ   r'   ©rs   r™   r'   r(   r.   Ð  rI   c                      rÚ   rF   rÛ   r'   rÞ   r'   r(   r.   Ñ  rI   r   r*   rM   c                      rÝ   rF   rÛ   r'   r”   r'   r(   r.   Ü  rI   )r   r
   rÜ   r   rA   r   r   r   r!   r   r˜   r   )rf   ÚAsumÚAsdÚAdsr'   )r&   rØ   rÙ   r•   rs   r–   r™   rÔ   r(   Útest_DomainMatrix_addº  s:   ((&((((("("("(râ   c                     sö  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} ˆ ˆ  ˆ  ˆ ¡  kr8| ks;J ‚ J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ddgddgg‰tt‡ ‡fdd„ƒ tt‡ ‡fd	d„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒggd
tƒ‰tt‡‡fdd„ƒ tt‡‡fdd„ƒ tt‡‡fdd„ƒ tt‡‡fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ}ˆˆ |ksøJ ‚ˆˆ |ksJ ‚tt‡‡fdd„ƒ tt‡‡fdd„ƒ t dtdƒidtdƒidœdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}|| }|| }|t ddgddggdtƒksSJ ‚|jt	ddgddggdtƒ 
¡ ksgJ ‚|| ksoJ ‚|j|j ksyJ ‚d S )Nr   r   r   r   r   r   c                      ó   ˆ ˆ S rF   r'   r'   rÓ   r'   r(   r.   æ  rÕ   z'test_DomainMatrix_sub.<locals>.<lambda>c                      ó   ˆˆ  S rF   r'   r'   rÓ   r'   r(   r.   ç  rÕ   rN   c                      rã   rF   r'   r'   r×   r'   r(   r.   ë  rÕ   c                      rä   rF   r'   r'   r×   r'   r(   r.   ì  rÕ   c                      rÚ   rF   ©Úsubr'   r×   r'   r(   r.   í  rI   c                      rÝ   rF   rå   r'   r×   r'   r(   r.   î  rI   c                      rÝ   rF   rå   r'   rÞ   r'   r(   r.   õ  rI   c                      rÚ   rF   rå   r'   rÞ   r'   r(   r.   ö  rI   r*   éÿÿÿÿéüÿÿÿ)r   r
   ræ   r   rA   r   r   r   r!   r   r˜   )rf   ÚAdiffr–   r•   rà   rá   r'   )r&   rØ   rÙ   rs   r™   rÔ   r(   Útest_DomainMatrix_subß  s8   ((&((((("("(rê   c                  C   sv   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}|  |  ¡   kr6|ks9J ‚ J ‚d S )
Nr   r   r   r   r   rç   éþÿÿÿéýÿÿÿrè   )r   r
   Úneg)r&   ÚAnegr'   r'   r(   Útest_DomainMatrix_neg  s   ((&rï   c                     s”  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtd	ƒggdtƒ} ˆ ˆ  ˆ  ˆ ¡  kr8| ks;J ‚ J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ddgddgg‰tt‡ ‡fd
d„ƒ tt‡ ‡fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtd	ƒggdtƒ}ˆˆ |ks¯J ‚ˆˆ |ks·J ‚tt‡‡fdd„ƒ tt‡‡fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ}tdƒ}ˆ | |ˆ    krˆ  |¡  kr|ksJ ‚ J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t  dt¡}tdƒ}ˆ | |ˆ    krNˆ  |¡ 	¡   krN|ksQJ ‚ J ‚t dtdƒidtdƒidœdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}|| }|| }|t ddgddggdtƒksJ ‚|j
tddgddggdtƒ ¡ ks£J ‚|t ddgddggdtƒks´J ‚|j
tddgddggdtƒ ¡ ksÈJ ‚d S )Nr   r   r   r   r   rK   é
   é   é   c                      s   ˆ ˆ S rF   r'   r'   rÓ   r'   r(   r.     rÕ   z'test_DomainMatrix_mul.<locals>.<lambda>c                      s   ˆˆ  S rF   r'   r'   rÓ   r'   r(   r.     rÕ   c                      rÝ   rF   ©Úmatmulr'   rÞ   r'   r(   r.     rI   c                      rÚ   rF   ró   r'   rÞ   r'   r(   r.     rI   rÉ   rÏ   r   r*   )r   r
   rô   r   rA   r   r   ÚmulÚzerosr   r!   r   r˜   )rÙ   ÚAprodÚAArv   r–   r•   rà   rá   r'   )r&   rs   r™   rÔ   r(   Útest_DomainMatrix_mul	  s<   ((&((((((:(>"("(",rù   c                  C   s    t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}|  |¡|ksEJ ‚| | ¡|ksNJ ‚d S )Nr   r   r   r   r   rÏ   )r   r
   Úmul_elementwisere   r'   r'   r(   Ú!test_DomainMatrix_mul_elementwise0  s
   (((rû   c                     st  t  dt¡} t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtd	ƒggdtƒ}t td
ƒtdƒgtdƒtdƒggdtƒ}ˆ d ˆ  d¡  krR| ksUJ ‚ J ‚ˆ d ˆ  d¡  kreˆ kshJ ‚ J ‚ˆ d ˆ  d¡  krx|ks{J ‚ J ‚ˆ d ˆ  d¡  kr‹|ksŽJ ‚ J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t  dt¡‰ tt‡ fdd„ƒ d S )Nr   r   r   r   r   rK   rð   rñ   rò   é%   é6   éQ   év   r   c                      s   ˆ t ddƒ S ©Nr   r   r\   r'   rH   r'   r(   r.   B  r—   z'test_DomainMatrix_pow.<locals>.<lambda>c                      ó   ˆ d S ©Nrç   r'   r'   rH   r'   r(   r.   C  rÕ   c                      s
   ˆ   d¡S r  )Úpowr'   rH   r'   r(   r.   D  rI   ©r   r   c                      r  ©Nr   r'   r'   rH   r'   r(   r.   G  rÕ   )	r   Úeyer
   r  r   rA   ÚNotImplementedErrorrö   r   )r  rÙ   ÚA3r'   rH   r(   Útest_DomainMatrix_pow8  s   (((&&&&r	  c                  C   s”   t ddgddggtƒ} ttdƒtƒ}t ddgdd	ggtƒ}| t¡}|  ¡ ||fks,J ‚| jd
d||fks8J ‚| | |ks@J ‚| || ksHJ ‚d S )NrN   ©r   r   rP   ©r   rM   é<   é   é   rñ   é   T©rX   )r   r   r   r
   rq   Úclear_denoms©r&   Úden_ZÚAnum_ZÚAnum_Qr'   r'   r(   Útest_DomainMatrix_clear_denomsJ  s   
r  c                  C   sj  t ddgddggtƒ} t ddgddggtƒ ¡ }t dd	gd
dggtƒ}t dd	gd
dggtƒ}|  ¡ ||fks8J ‚| jdd||fksDJ ‚||  |ksLJ ‚| | ¡  ¡ | ksXJ ‚t g d¢g d¢g d¢gtƒ} t g d¢g d¢g d¢gtƒ ¡ }t g d¢g d¢g d¢gtƒ}| t¡}|  ¡ ||fks“J ‚| jdd||fksŸJ ‚||  |ks§J ‚| | ¡  ¡ | ks³J ‚d S )NrN   r
  rP   r  rÉ   r   r  r   r   rM   r   Tr  )rN   r
  r   r   ©r   r   r   r   )rP   r  )r   rÉ   )r   rK   )rÉ   r   r   )r   r   r   )r   r   i¤  )r   r   r   r   )éi   éT   éF   r  )r   r   r
   r   Úclear_denoms_rowwiser‹   Úinvrq   r  r'   r'   r(   Ú&test_DomainMatrix_clear_denoms_rowwiseW  s     
r  c                      sP  t ddgddggtƒ‰ ˆ  tdƒ¡t ddgddggtƒtdƒfks#J ‚ˆ  tdƒ¡t ddgddggtƒtdƒfks;J ‚ˆ  tdƒ¡t ddgddggtƒtdƒfksSJ ‚t ddgddggtƒ‰ ˆ  tdƒ¡ˆ tdƒfksmJ ‚ˆ  tdƒ¡ˆ  tdƒfks}J ‚t ddgddggtƒ‰ ˆ  tddƒ¡tdd	ƒˆ  tdƒfksJ ‚tt‡ fd
d„ƒ d S )Nr   r   rÉ   rÏ   r   r   rë   r   rç   c                      ó   ˆ   tdƒ¡S ©Nr   )Úcancel_denomr
   r'   rH   r'   r(   r.   |  r—   z0test_DomainMatrix_cancel_denom.<locals>.<lambda>)r   r
   r   r   r   ÚZeroDivisionErrorr'   r'   rH   r(   Útest_DomainMatrix_cancel_denomn  s   000 *r"  c                     sÈ   t ddgddggtƒ‰ ˆ  tdƒ¡\} }| t ddgddggtƒks#J ‚|t ddgddggtƒks2J ‚ˆ  tdƒ¡\} }| t ddgddggtƒksJJ ‚|t ddgddggtƒksYJ ‚tt‡ fdd„ƒ d S )	Nr   r   rÉ   rÏ   r   r   c                      r  r  )Úcancel_denom_elementwiser
   r'   rH   r'   r(   r.   ˆ  r—   z<test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>)r   r
   r#  r   r!  )ÚnumersÚdenomsr'   rH   r(   Ú*test_DomainMatrix_cancel_denom_elementwise  s   r&  c                  C   s\   t ddgddggtƒ} t ddgddggtƒ}tdƒ}|  ¡ |ks"J ‚|  ¡ ||fks,J ‚d S )Nr   r   rÉ   rÏ   r   r   )r   r
   ÚcontentÚ	primitive)r&   ÚA_primitiveÚ	A_contentr'   r'   r(   Ú#test_DomainMatrix_content_primitive‹  s
   r+  c                     s¼   t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} |  ¡ }| j}|j}| |||fD ]‰ |  ¡ dgddggksCJ ‚q4ttdƒtdƒtdƒggtƒ‰ tt‡ fdd„ƒ d S )	Nr   r   r   r   r   ©r   r   c                      ó   ˆ   ¡ S rF   )Úsccr'   rH   r'   r(   r.   ž  rÕ   z'test_DomainMatrix_scc.<locals>.<lambda>)r   r
   r   r!   r.  r   r   r   )r•   r–   r‚   rƒ   r'   rH   r(   Útest_DomainMatrix_scc“  s   þþr/  c                     sä  t g dtƒ} |  ¡ | dfksJ ‚t tdƒggdtƒ} |  ¡ | dfks$J ‚t tdƒggdtƒ} |  ¡ | dfks8J ‚t tdƒtdƒgtdƒtd	ƒggd
tƒ} |  ¡ \}}|t tdƒtdƒgtdƒtdƒggd
tƒksjJ ‚|dkspJ ‚t tdƒtdƒgtdƒtd	ƒggd
tƒ} |  ¡ \}}|t tdƒtdƒgtdƒtdƒggd
tƒks¢J ‚|dks¨J ‚t tdƒtdƒgtdƒtd	ƒggd
tƒ} |  ¡ \}}|t tdƒtdƒgtdƒtdƒggd
tƒksÚJ ‚|dksàJ ‚t tdƒtdƒgtdƒtd	ƒggd
tƒ‰ ˆ  ¡ \}}|t tdƒtdƒgtdƒtdƒggd
tƒksJ ‚|dksJ ‚d}t tdƒtdƒgtdƒtd	ƒggd
tƒ‰ |D ]+}ˆ j|d\}}|t tdƒtdƒgtdƒtdƒggd
tƒksUJ ‚|dks\J ‚q2tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr*   r'   r   r1   )r   r   r   r   r   r   )r   )ÚautoÚGJr	   ÚCDÚGJ_denseÚFF_denseÚCD_dense©Úmethodc                      ó   ˆ j ddS ©NÚfoor6  )Úrrefr'   ©r™   r'   r(   r.   Ç  r/   z(test_DomainMatrix_rref.<locals>.<lambda>c                      r8  r9  )Úrref_denr'   r<  r'   r(   r.   È  r/   )r   r   r;  r
   r   rB   )r&   ÚArÚpivotsÚmethodsr7  r'   r<  r(   Útest_DomainMatrix_rref¡  s<   (0(0(0(2(2rA  c                     s,  t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}|  ¡ |ks6J ‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ‰ tt‡ fdd	„ƒ t tdƒtdƒtdƒgtdƒtdƒtdƒggdtd
d} t tdƒtdƒdœtdƒtdƒdœdœdtƒ}|  ¡ |ks”J ‚d S )Nr   rç   r   rë   r   r¨   r   c                      r-  rF   )Úcolumnspacer'   r<  r'   r(   r.   Ñ  rÕ   z/test_DomainMatrix_columnspace.<locals>.<lambda>r3   r5   r*   )r   r   rB  r
   r   r   )r&   ÚAcolr'   r<  r(   Útest_DomainMatrix_columnspaceË  s   4(48.rD  c                     sÖ   t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} |  ¡ | ks"J ‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ‰ tt‡ fdd„ƒ t tdƒtdƒtdƒgtdƒtdƒtdƒggdtd	d
} |  ¡ | ksiJ ‚d S )Nr   rç   r   rë   r   r¨   c                      r-  rF   )Úrowspacer'   r<  r'   r(   r.   Ý  rÕ   z,test_DomainMatrix_rowspace.<locals>.<lambda>r3   r5   )r   r   rE  r
   r   r   rH   r'   r<  r(   Útest_DomainMatrix_rowspaceØ  s   448rF  c                     sn  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒggdtƒ} ˆ  ¡ | ks)J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒggdtƒ} ˆ  ¡ | ksRJ ‚tt‡ fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒggdtƒ} ˆ  ¡ \}}}|tdƒks‹J ‚| ¡ | ks“J ‚| |¡| ksœJ ‚| ¡  ¡ |  ¡ ks¨J ‚| ¡  |¡|  ¡ ksµJ ‚d S )	Nr   r   rç   rN   c                      r8  )NT)Údivide_last)Ú	nullspacer'   rH   r'   r(   r.   ì  r/   z-test_DomainMatrix_nullspace.<locals>.<lambda>r   rë   )	r   r   rH  r
   r   r   r=  Únullspace_from_rrefr   )ÚAnullÚArrefÚdenr?  r'   rH   r(   Útest_DomainMatrix_nullspaceã  s   (((rM  c                     sê   t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ} t ddggdtƒ}t ddggdtƒ}ˆ  | ¡||fks?J ‚t tdƒgtdƒgtdƒggd	tƒ‰tt‡ ‡fd
d„ƒ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd„ƒ d S )Nr   r   r   r   r  r   rN   rë   rO   c                      rÚ   rF   ©Ú_solver'   )r&   Úb3r'   r(   r.     rI   z)test_DomainMatrix_solve.<locals>.<lambda>c                      rÚ   rF   rN  r'   )r&   Úbzr'   r(   r.     rI   )r   r   rO  r   r   r
   r   )ÚbÚ
particularrH  r'   )r&   rP  rQ  r(   Útest_DomainMatrix_solveù  s   ($rT  c                     sz  t g dtƒ} |  ¡ | ksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtddƒtddƒggdtƒ}|  ¡ |ks@J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰tt‡fd	d
„ƒ t tdƒtdƒggdtƒ‰tt‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ tt‡ fdd
„ƒ tdƒ}t	ddgddgg|ƒ ¡ t	ddgddgg|ƒks®J ‚tdƒ‰tt‡fdd
„ƒ d S )Nr@   r   r   r   r   r   rë   rç   c                      r-  rF   ©r  r'   r<  r'   r(   r.     rÕ   z'test_DomainMatrix_inv.<locals>.<lambda>rN   c                      r-  rF   rU  r'   ©ÚAnsr'   r(   r.     rÕ   rÉ   c                      r-  rF   rU  r'   )ÚAninvr'   r(   r.     rÕ   r   c                      s   t ddgddggˆ ƒ ¡ S )Nr   r   r   r   )r   r  r'   )ÚZ6r'   r(   r.     r:   )
r   r   r  r
   r   r   r   r   r	   r   )r&   ÚAinvÚZ3r'   )rX  rW  r™   rY  r(   Útest_DomainMatrix_inv  s   (,((4r\  c                     sœ  t g dtƒ} |  ¡ dksJ ‚t dggdtƒ} |  ¡ dksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒks<J ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} |  ¡ tdƒksjJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} |  ¡ tdƒks˜J ‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒksÌJ ‚d S )Nr@   r   r1   r   r   r   r   rë   rM   r,  rç   r   rN   c                      r-  rF   )Údetr'   rV  r'   r(   r.   1  rÕ   z'test_DomainMatrix_det.<locals>.<lambda>)r   r
   r]  r   r   r   rH   r'   rV  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rU|d
 | d  |d |   |d | d
   ksXJ ‚ J ‚|  g ¡|  | j| j¡ksgJ ‚|  tdƒg¡d|  d| j¡ kszJ ‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nr   r   r   r   r   r  é   é   é!   r   rN   c                      s   ˆ   tdƒg¡S r  )Ú	eval_polyr
   r'   ©ÚdM2r'   r(   r.   @  r9   z-test_DomainMatrix_eval_poly.<locals>.<lambda>)	r   r
   rb  rö   r#   r$   r  r   r   )ÚdMÚpÚresultr'   rc  r(   Útest_DomainMatrix_eval_poly7  s   ((J&rh  c                     s€  t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒgtdƒggdtƒ‰ tdƒtdƒtdƒg}t tdƒgtdƒggdtƒ}|  |ˆ ¡|  kr`|d	 | d  ˆ  |d |  ˆ   |d ˆ   kscJ ‚ J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒgtdƒggdtƒ‰tt‡ ‡fd
d„ƒ t tdƒtdƒggdtƒ‰tt‡‡fdd„ƒ t tdƒgtdƒggdtƒ‰tt‡‡fdd„ƒ d S )Nr   r   r   r   r   r  é(   éW   r   c                      ó   ˆ  tdƒgˆ ¡S r  ©Úeval_poly_mulr
   r'   )rR  ÚdM1r'   r(   r.   L  ó    z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>rN   c                      rk  r  rl  r'   )Úb1re  r'   r(   r.   N  ro  c                      rk  r  rl  r'   )Úbqre  r'   r(   r.   P  ro  )r   r
   rm  r   r   r   r   r   )r&   rf  rg  r'   )rR  rp  rq  re  rn  r(   Útest_DomainMatrix_eval_poly_mulC  s   (P(rr  c                    s  | |ˆf}|   ¡ |  ¡ ˆ  ¡ f}||fD ]l\‰ }}ˆ | || ks#J ‚||f| | fg}ˆ  ˆ¡|v s6J ‚ˆ jˆdd|v sAJ ‚ˆ  ˆ¡|v sJJ ‚ˆ j\}	}
|	|
krlˆ j|dd||fks`J ‚ˆ  |¡||fkskJ ‚qtt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ qd S )Nr;  r6  Úcharpolyc                      rÚ   rF   ©Úsolve_den_charpolyr'   ©ÚAirR  r'   r(   r.   k  rI   z"_check_solve_den.<locals>.<lambda>c                      ó   ˆ j ˆddS )Nrs  r6  ©Ú	solve_denr'   rv  r'   r(   r.   l  r—   )r   rz  Úsolve_den_rrefr#   ru  r   r   )r&   rR  ÚxnumÚxdenÚcase1Úcase2Úxnum_iÚb_iÚanswersÚmÚnr'   rv  r(   Ú_check_solve_denS  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ë   rM   r,  rO   r1   )r   r
   r…  )r&   rR  rg  rL  r'   r'   r(   Útest_DomainMatrix_solve_deno  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  rN   c                      rÚ   rF   rt  r'   )rØ   rR  r'   r(   r.   Š  rI   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>c                      rÚ   rF   rt  r'   ©r&   rp  r'   r(   r.   Œ  rI   c                      rÚ   rF   rt  r'   )r&   rq  r'   r(   r.   Ž  rI   )r   r
   r   r   r   r   r   r'   r'   )r&   rØ   rR  rp  rq  r(   Ú$test_DomainMatrix_solve_den_charpoly†  s   (rˆ  c                     sª   t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd„ƒ t td	ƒgtdƒggdtƒ} ˆ  ¡ ˆ | ksDJ ‚ˆ jˆd
d| tdƒfksSJ ‚d S )Nr   r   r   r   r   r  c                      rÚ   rF   rt  r'   ©r&   rR  r'   r(   r.   •  rI   z<test_DomainMatrix_solve_den_charpoly_check.<locals>.<lambda>rë   F)Úcheckr   )r   r
   r   r   Úadjugateru  )ÚadjAbr'   r‰  r(   Ú*test_DomainMatrix_solve_den_charpoly_check‘  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   rN   r  c                      rÚ   rF   ry  r'   r‰  r'   r(   r.   ž  rI   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>c                      rÚ   rF   ©r{  r'   r‰  r'   r(   r.   Ÿ  rI   c                      rÚ   rF   ry  r'   r‰  r'   r(   r.   £  rI   c                      rÚ   rF   rŽ  r'   r‰  r'   r(   r.   ¤  rI   r   r   r   c                      rÚ   rF   ry  r'   r‡  r'   r(   r.   ¨  rI   r1   c                      rx  )Nr7   r6  ry  r'   r‡  r'   r(   r.   ¬  r—   c                      rÚ   rF   rt  r'   r‰  r'   r(   r.   °  rI   )r   r
   r   r   r   r   r'   r'   )r&   rR  rp  r(   Ú"test_DomainMatrix_solve_den_errors›  s"   (r  c                      sp   t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )Nr   r   r   r  c                      rÚ   rF   ry  r'   r‰  r'   r(   r.   ¶  rI   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>c                      rÚ   rF   rŽ  r'   r‰  r'   r(   r.   ·  rI   )r   r
   r   r   r'   r'   r‰  r(   Ú0test_DomainMatrix_solve_den_rref_underdetermined³  s   (r  c                     s  t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggtƒ‰ ˆ  ¡ \} }| tdƒtd
ƒtdƒgks8J ‚ˆ  ¡ | d ˆ d  | d ˆ d   | d ˆ d     kr^ˆ  | ¡ksaJ ‚ J ‚ˆ  ¡ |ksiJ ‚t tdƒtdƒtdƒgtdƒtdƒtd	ƒggtƒ‰ tt‡ fdd„ƒ d S )Nr   r   r   r   rM   rÉ   rK   rÏ   é	   éñÿÿÿéîÿÿÿr   c                      r-  rF   )Úadj_poly_detr'   rH   r'   r(   r.   Å  rÕ   z0test_DomainMatrix_adj_poly_det.<locals>.<lambda>)r   r
   r”  r‹  rb  r]  r   r   )rf  ÚdetAr'   rH   r(   Útest_DomainMatrix_adj_poly_detº  s    þþRÿÿr–  c                  C   sp   t tdƒtdƒgtdƒtdƒggdtƒ} tdƒ}t tdƒtdƒgtdƒtdƒggdtƒ}|  ¡ ||fks6J ‚d S ©Nr   r   r   r   r   rë   rì   )r   r
   Úinv_den)r&   rL  rg  r'   r'   r(   Útest_DomainMatrix_inv_denÈ  s   ((r™  c                  C   sd   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}|  ¡ |ks0J ‚d S r—  )r   r
   r‹  )r&   rg  r'   r'   r(   Útest_DomainMatrix_adjugateÏ  r¾   rš  c                  C   sl   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}|  ¡ |tdƒfks4J ‚d S r—  )r   r
   Úadj_det)r&   ÚadjAr'   r'   r(   Útest_DomainMatrix_adj_detÕ  s   ((r  c                     sÒ  t g dtƒ‰ ˆ  ¡ ˆ ˆ g fksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fksZJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}d	g}ˆ  ¡ | ||fks¤J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fksíJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fks7J ‚t tdƒtdƒtdƒgtdƒtd
ƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fksJ ‚t tdƒtdƒgtdƒtdƒgtd
ƒtdƒggdtƒ‰ t tdƒtdƒtdƒgtdƒtdƒtdƒgtd
ƒtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fksõJ ‚g d¢g d¢g d¢g d¢g‰ g d¢g d¢g d¢g d¢g} g d¢g d¢g d¢g d¢g}dd„ }t |ˆ tƒdtƒ‰ t || tƒdtƒ} t ||tƒdtƒ}ˆ  ¡ | |g fksJJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nr@   r   r   r   r   r   r   rë   r*   rM   rÉ   r¨   rì   iúÿÿÿrÊ   r,  )r   r   r   r   r  )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   c                    s   ‡ fdd„| D ƒS )Nc                    s   g | ]}‡ fd d„|D ƒ‘qS )c                    s   g | ]}ˆ |ƒ‘qS r'   r'   r{   ©rR   r'   r(   r>   	  r2   zEtest_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r'   )r<   Úrowrž  r'   r(   r>   	  s    z:test_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>r'   )ÚrowsrR   r'   rž  r(   r.   	  ro  z&test_DomainMatrix_lu.<locals>.<lambda>)r   r   c                      r-  rF   )Úlur'   rH   r'   r(   r.     rÕ   )r   r   r¡  r
   r   r   )rÔ   ÚUÚswapsÚto_domr'   rH   r(   Útest_DomainMatrix_luÛ  s`   ((((((((((((4(46ýý6(r¥  c                     sR  t g dtƒ ‰  ‰} ˆ  ˆ¡| ksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ksMJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ks‡J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fd	d
„ƒ t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ksøJ ‚t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒgtdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒggdtƒ‰ t tdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒggdtƒ‰tt‡ ‡fdd
„ƒ d S )Nr@   r   r   r   r   r   r  r   c                      rÚ   rF   ©Úlu_solver'   r‰  r'   r(   r.   '  rI   z,test_DomainMatrix_lu_solve.<locals>.<lambda>rM   rÉ   rÊ   rO   c                      rÚ   rF   r¦  r'   r‰  r'   r(   r.   2  rI   rN   r1   c                      rÚ   rF   r¦  r'   r‰  r'   r(   r.   7  rI   c                      rÚ   rF   r¦  r'   r‰  r'   r(   r.   <  rI   c                      rÚ   rF   r¦  r'   r‰  r'   r(   r.   A  rI   )	r   r   r§  r   r   r  r
   r   r   ©rv   r'   r‰  r(   Útest_DomainMatrix_lu_solve  s:   (((6$6$((r©  c                     sœ  t g dtƒ} tdƒg}|  ¡ |ksJ ‚|  ¡  ¡ |ksJ ‚t dggdtƒ} tdƒtdƒg}|  ¡ |ks5J ‚|  ¡  ¡ |ks?J ‚t tdƒtdƒgtdƒtdƒggdtƒ} tdƒtd	ƒtd
ƒg}|  ¡ |ksfJ ‚|  ¡  ¡ |kspJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} tdƒtdƒtdƒtdƒg}|  ¡ |ksªJ ‚|  ¡  ¡ |ks´J ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} tdƒtdƒtd
ƒtdƒg}|  ¡ |ksîJ ‚|  ¡  ¡ |ksøJ ‚tg d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g d¢g
tƒ} t g d¢¡}|  ¡ |ks+J ‚|  ¡  ¡ |ks6J ‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nr@   r   r1   rç   r   r   r   r   éûÿÿÿrë   rM   rÉ   rK   rÏ   r‘  r,  r’  r“  r   )
é   r   r  r   r   r   r   r   r   r   )
r   r   r   r   r   r   r   r   r   r   )
éE   r   r   r   r   éV   r   r   r   r   )
é   r   r   r   r   r   r   r   r   r   )
r   r   r   é   r   r   r   r   r   r   )
r   r   r   r   r   r   r   é    r   r   )
r   r   r   r   rü   éC   r   r   r   r   )r   iïÿÿÿiê÷ÿÿr   i¤:ôÿr   r   r   r   r   r   rN   c                      r-  rF   )rs  r'   rV  r'   r(   r.   o  rÕ   z,test_DomainMatrix_charpoly.<locals>.<lambda>)	r   r
   rs  r   r   Úmapr   r   r   )r&   rf  r'   rV  r(   Útest_DomainMatrix_charpolyD  sV   
(Hþþ÷	÷
r³  c                  C   sä   t g dtƒ} |  ¡ g ksJ ‚tdggtƒ} |  ¡ tdƒtdƒgdfgks&J ‚tddgddggtƒ} |  ¡ tdƒtdƒtdƒgdfgksEJ ‚tg d	¢g d
¢g d¢gtƒ} |  ¡ tdƒtdƒgdftdƒtdƒtdƒgdfgkspJ ‚d S )Nr@   r   rç   r   r   r   rª  rë   )r   r   r   )r   r   r   )r   r   r   )r   r
   Úcharpoly_factor_listr   rH   r'   r'   r(   Ú&test_DomainMatrix_charpoly_factor_listr  s   
ÿ
ÿþrµ  c                  C   sB   t  dt¡} | jt dt¡ksJ ‚| jdksJ ‚| jtksJ ‚d S )Nr   r,  )r   r  r   r!   r   r#   r$   rH   r'   r'   r(   Útest_DomainMatrix_eye‡  ó   r¶  c                  C   sB   t  dt¡} | jt dt¡ksJ ‚| jdksJ ‚| jtksJ ‚d S )NrN   )r   rö   r   r!   r   r#   r$   rH   r'   r'   r(   Útest_DomainMatrix_zerosŽ  r·  r¸  c                  C   sf   t  dt¡} tdkr| jt dt¡ksJ ‚n| jt dt¡ ¡ ks#J ‚| jdks*J ‚| j	tks1J ‚d S )Nr¨   r    )
r   Úonesr   r   r!   r   r   r"   r#   r$   rH   r'   r'   r(   Útest_DomainMatrix_ones•  s   rº  c                  C   sŠ   t dtdƒidtdƒidœdtƒ} t  tdƒtdƒgt¡| ks!J ‚t dtdƒidtdƒidœdtƒ} t  tdƒtdƒgtd¡| ksCJ ‚d S )Nr   r   r   r   r*   r   )r   r   )r   r
   ÚdiagrH   r'   r'   r(   Útest_DomainMatrix_diagŸ  s   " "&r¼  c               	   C   s:  t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}t td
ƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒtdƒtdƒgtdƒtdƒtdƒtd	ƒggdtƒ}t tdƒtdƒtdƒtdƒtd
ƒtdƒgtdƒtdƒtdƒtd	ƒtdƒtdƒggdtƒ}|  |¡|ks‘J ‚|  ||¡|ks›J ‚d S )Nr   r   r   r   r   rM   rÉ   rK   rÏ   r‘  rð   é   r  ©r   r   )r   rÉ   )r   r
   Úhstack©r&   rf   rg   ÚABÚABCr'   r'   r(   Útest_DomainMatrix_hstack§  s"   (((þþ&&þþrÃ  c               	   C   sF  t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}t td
ƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒgtdƒtdƒgtdƒtdƒgtdƒtd	ƒggdtƒ}t tdƒtdƒgtdƒtdƒgtdƒtdƒgtdƒtd	ƒgtd
ƒtdƒgtdƒtdƒggdtƒ}|  |¡|ks—J ‚|  ||¡|ks¡J ‚d S )Nr   r   r   r   r   rM   rÉ   rK   rÏ   r‘  rð   r½  r  )r   r   )rÉ   r   )r   r
   ÚvstackrÀ  r'   r'   r(   Útest_DomainMatrix_vstack¶  s.   (((üüúúrÅ  c                  C   sN   t tdƒtdƒggdtƒ} t tdƒtdƒggdtƒ}|  dd„ ¡|ks%J ‚d S )Nr   r   rN   r   c                 S   s   d|  S )Nr   r'   r¨  r'   r'   r(   r.   Î  rÕ   z-test_DomainMatrix_applyfunc.<locals>.<lambda>)r   r
   Ú	applyfuncrÀ   r'   r'   r(   Útest_DomainMatrix_applyfuncË  s   rÇ  c                     s0  t tdƒtdƒgtdƒtdƒggdtƒ‰ ttdƒtdƒ tƒ} ˆ |  t tddƒtdƒgtddƒtdƒggdtƒks;J ‚ˆ d t tdƒtdƒgtdƒtdƒggdtƒksUJ ‚dˆ  t tdƒtdƒgtdƒtdƒggdtƒksoJ ‚ˆ ttd	ƒtƒ t i dtƒks€J ‚ˆ ttdƒtƒ ˆ ksJ ‚tt‡ fd
d„ƒ d S )Nr   r   r   r   r   r‘  rÉ   rÏ   r   c                      s   ˆ d S ©Ng      ø?r'   r'   rH   r'   r(   r.   Ú  rÕ   z-test_DomainMatrix_scalarmul.<locals>.<lambda>)r   r
   r   r   r   rA   )Úlamdar'   rH   r(   Útest_DomainMatrix_scalarmulÑ  s   (844"rÊ  c                     sL  t  tddgddggƒ¡‰ ttdƒtdƒ tƒ} ˆ |  t tddƒtddƒdœtdƒtddƒdœdœdtƒks8J ‚ttdƒtƒ}ˆ | t tdƒtdƒdœtdƒtdƒdœdœdtƒks\J ‚ˆ d t tdƒtdƒdœtdƒtdƒdœdœdtƒksyJ ‚ˆ d t tddƒtdƒdœtddƒtdƒdœdœdtƒks˜J ‚tt‡ fdd	„ƒ tt‡ fd
d	„ƒ tt‡ fdd	„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ  	¡ d t tddƒtdƒgtddƒtdƒggdtƒksåJ ‚ˆ d t tddƒtdƒgtddƒtdƒggdtƒksJ ‚ˆ  	¡ tddƒ t tddƒtdƒgtddƒtdƒggdtƒks$J ‚d S )Nr   r   r   r   r*   rÏ   r   c                      ó   ˆ d S r  r'   r'   rH   r'   r(   r.   ç  rÕ   z+test_DomainMatrix_truediv.<locals>.<lambda>c                      rË  rÈ  r'   r'   rH   r'   r(   r.   è  rÕ   c                      s   ˆ t tdƒtƒ S r  )r   r
   r'   rH   r'   r(   r.   é  ro  r‘  rÉ   )
r   rb   r   r   r   r
   r   r!  rA   r‹   )rÉ  rR  r'   rH   r(   Útest_DomainMatrix_truedivÝ  s   @::>(<:HrÌ  c                      s  t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ‰ ˆ dd …d d…f t tdƒgtdƒggdtƒks>J ‚ˆ dd d…f t tdƒggdtƒksRJ ‚ˆ d d…d d…f t tdƒggdtƒkshJ ‚ˆ d d…dd…f t tdƒtdƒgtdƒtdƒggdtƒksˆJ ‚ˆ d d …df t tdƒgtdƒgtd	ƒggdtƒks¤J ‚ˆ dd d …f t tdƒtdƒtd	ƒggdtƒks¾J ‚ˆ d d d…d d …f t tdƒtdƒtd	ƒgtdƒtdƒtdƒgtdƒtdƒtdƒggd
tƒksïJ ‚tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ d ttdƒtƒksJ ‚ˆ d ttdƒtƒksJ ‚ˆ d ttdƒtƒks+J ‚ˆ d ttdƒtƒks9J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t ddtdƒiidtƒ‰ ˆ d ttdƒtƒksnJ ‚ˆ d ttdƒtƒks|J ‚t dddiidtƒ‰ ˆ dd …df t dddiidtƒks›J ‚tt‡ fd d„ƒ t dtdƒidtdƒid!œdtƒ‰ ˆ d d…d d…f t i dtƒksÈJ ‚ˆ dd …dd …f t ddiddid"œd
tƒksâJ ‚ˆ dd …dd …f t dddiidtƒksùJ ‚ˆ dd …dd …f t i d#tƒksJ ‚d S )$Nr   r   r   r   rM   rÉ   rK   rÏ   r‘  r,  rë   r  r1   rç   r   r   rO   r
  c                      s   ˆ dd d…f S )Nr   rë   r'   r'   ©re  r'   r(   r.     r9   z+test_DomainMatrix_getitem.<locals>.<lambda>c                      s   ˆ d d…df S )Nrë   r   r'   r'   rÍ  r'   r(   r.     r9   rN   )rë   r   )r   rë   )rç   rì   c                      ó   ˆ d S )Nr,  r'   r'   rÍ  r'   r(   r.   
  rÕ   c                      rÎ  )NrP   r'   r'   rÍ  r'   r(   r.     rÕ   c                      rÎ  )N)rç   rè   r'   r'   rÍ  r'   r(   r.     rÕ   )rð   rð   ©rM   rM   r@   c                      rÎ  )N©r   r   r'   r'   rÍ  r'   r(   r.     rÕ   r¾  )r   r   rÐ  )r   r
   r   Ú
IndexErrorr   r'   r'   rÍ  r(   Útest_DomainMatrix_getitemñ  sP   ýý4(,@84ý
ý*"&4.*rÒ  c                  C   sb   t dtdƒidtdƒidœdtƒ} |  dd¡}|tju sJ ‚|  dd¡}|dkr-t|tƒs/J ‚d S )Nr   r   r   r¾  rÏ  r   )r   r
   Úgetitem_sympyr   ÚZeroÚ
isinstancer   )re  Úval1Úval2r'   r'   r(   Útest_DomainMatrix_getitem_sympy  s
   "rØ  c                     s|  t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}|  ddgddg¡|ksFJ ‚|  ¡  ddgddg¡| ¡ ksXJ ‚|  ddgddg¡|ksfJ ‚|  ¡  ddgddg¡| ¡ ksxJ ‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒggd
tƒ}|  g d¢g d¢¡|ksªJ ‚|  ¡  g d¢g d¢¡| ¡ ks¼J ‚g g dfdgg dfg dgdfg}|D ]%\‰‰ }|  ˆˆ ¡t  |t¡ ¡ ksãJ ‚|  ¡  ˆˆ ¡t  |t¡ksóJ ‚qÎt tdƒtdƒgtdƒtdƒggdtƒ‰dgdgfdgdgfdgdgfdgdgfg}|D ]\‰‰ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ q d S )Nr   r   r   r   rM   rÉ   rK   rÏ   r‘  r,  r   r   rç   )r   r   r   r@   r²   r*   rì   c                      s   ˆ  ˆˆ ¡S rF   )Úextractr'   ©Úcolsre  r   r'   r(   r.   E  r/   z+test_DomainMatrix_extract.<locals>.<lambda>c                      s   ˆ  ¡  ˆˆ ¡S rF   )r   rÙ  r'   rÚ  r'   r(   r.   F  r9   )r   r
   rÙ  r   rö   r   r   rÑ  )rn  rd  ÚdM3ÚemptyÚsizeÚbad_indicesr'   rÚ  r(   Útest_DomainMatrix_extract%  sN   ýýþþ$$ýý$

ý "(,þrà  c                      sŒ   t dtdƒidtdƒidœdtƒ‰ tdƒˆ d< ˆ t dtdƒidtdƒidœdtƒks,J ‚‡ fdd„‰tt‡fd	d
„ƒ tt‡fdd
„ƒ d S )Nr   r   r   r¾  rÏ  r   c                    s   |ˆ | |f< d S rF   r'   )r=   ÚjÚvalrÍ  r'   r(   ÚsetitemM  s   z*test_DomainMatrix_setitem.<locals>.setitemc                      s   ˆ ddt ddƒƒS )Nr   r   rz   r'   ©rã  r'   r(   r.   O  ro  z+test_DomainMatrix_setitem.<locals>.<lambda>c                      s   ˆ t ddƒdtdƒƒS r   )Úslicer
   r'   rä  r'   r(   r.   P  s    )r   r
   r   rA   r  r'   r'   )re  rã  r(   Útest_DomainMatrix_setitemI  s   "*ræ  c                  C   s†   dd l } tdtdƒidtdƒidœdtƒ}|  |  |¡¡|ks!J ‚ttdƒtdƒgtdƒtdƒggdtƒ}|  |  |¡¡|ksAJ ‚d S )	Nr   r   r   r   r¾  rÏ  r   r   )Úpickler   r
   ÚloadsÚdumps)rç  re  r'   r'   r(   Útest_DomainMatrix_picklingS  s
   "(rê  c                  C   s  t ddgddggtƒ} |  ¡ \}}}}|j| jksJ ‚|j| jks#J ‚|j| jks+J ‚|j| jks3J ‚|t ddgddggtƒksBJ ‚|t ddgddggtƒksQJ ‚|t ddgddggtƒks`J ‚|t ddgddggtƒksoJ ‚| ¡ \}}| | ¡ |¡| |¡ |¡ks‡J ‚d S )Nr   r   r   r   r   rë   )r   r
   Úfflur#   r˜  rô   Úrmul)r&   ÚPrÔ   ÚDr¢  ÚdiÚdr'   r'   r(   Útest_DomainMatrix_fflu[  s   (rñ  N)vÚsympy.external.gmpyr   Úsympyr   r   r   r   r   r   r	   r
   r   r   r   Ú!sympy.polys.matrices.domainmatrixr   r   r   Úsympy.polys.matrices.exceptionsr   r   r   r   r   r   r   Úsympy.polys.matrices.ddmr   Úsympy.polys.matrices.sdmr   Úsympy.testing.pytestr   r)   rE   rJ   rS   rZ   ra   rc   rh   rm   rp   rt   ry   rˆ   rŠ   rŒ   r   r’   rœ   rŸ   r¡   r¤   r§   r«   r­   r±   r¶   r¸   rº   r½   rÁ   rÃ   rÆ   rÈ   rÌ   rÎ   rÑ   râ   rê   rï   rù   rû   r	  r  r  r"  r&  r+  r/  rA  rD  rF  rM  rT  r\  r^  rh  rr  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(   Ú<module>   s¼     $)( 	


		%$'*
81.
,$
