o
    GZŽ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'   ú[/var/www/auris/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   )Zdodr&   r6   r!   Úwasr'   )r%   r8   r0   r(   Útest_DomainMatrix_init   s:    &rD   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   rF   r!   r#   r$   r   r   rA   )r%   r0   r'   rG   r(   Útest_DomainMatrix_from_repE   s   (
.
rI   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   )rL   r   )r   r
   r   Ú	from_listr   r!   r"   r#   r$   r	   r   )r%   r&   Údomr'   r'   r(   Útest_DomainMatrix_from_listW   s<   (((0
rR   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   Zfrom_list_sympyr   r!   r"   r#   r$   r   Úalgebraic_fieldr   Úconvert)r%   r&   ÚKr'   r'   r(   Ú!test_DomainMatrix_from_list_sympy   s,   (""ÿü2þrX   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                      rY   )Nr   r   r   r   rZ   r'   r[   r'   r(   r.   ¢   r:   )
r   r   r   r   Zfrom_dict_sympyr!   r#   r$   r   r   )r0   Z
sympy_dictr&   r'   r[   r(   Ú!test_DomainMatrix_from_dict_sympy˜   s   &r]   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   TrS   r   r4   r5   r    )r   r
   r   Úfrom_Matrixr   r!   r#   r$   r   rU   r   rV   r   r   r"   )r0   r&   rW   r%   r'   r'   r(   Útest_DomainMatrix_from_Matrix¥   s6   .$$ÿü2þ60r_   c                  C   s˜   t tdƒtdƒgtdƒtdƒggdtƒ} | | ksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ}| |ks4J ‚tdƒtdƒgtdƒtdƒgg}| |ksJJ ‚d S ©Nr   r   r   r   r   r-   ©r&   ÚBÚCr'   r'   r(   Útest_DomainMatrix_eqÅ   s   (( rd   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   Zunify_eq)r&   ZB1ZB2ZB3r'   r'   r(   Útest_DomainMatrix_unify_eqÎ   s   (((re   c                  C   s”   t  g d¢¡\} }|tdƒtdƒtdƒtdƒgksJ ‚| tks!J ‚t  dddtddƒg¡\} }|tdƒtdƒtdƒtddƒgksBJ ‚| tksHJ ‚d S )N)r   r   r   r   r   r   r   r   )r   Z
get_domainr
   r   r   )rW   Úitemsr'   r'   r(   Útest_DomainMatrix_get_domainØ   s   $&rg   c                  C   sf   t tdƒtdƒgtdƒtdƒggdtƒ} |  t¡}|t tdƒtdƒgtdƒtdƒggdtƒks1J ‚d S r`   )r   r
   Ú
convert_tor   ©r&   ÚAqr'   r'   r(   Útest_DomainMatrix_convert_toâ   s   (
4rk   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   Zchoose_domainr
   r   Z
frac_field)r&   rm   rb   r'   r'   r(   Útest_DomainMatrix_choose_domainè   s     .rn   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'   rp   r'   r'   r(   r>   ü   r2   )
r   r
   r!   Úto_ddmÚto_sdmZ
to_flat_nzZfrom_flat_nzr$   r   rh   )ZAdmÚAddmÚAsdmr&   ZelemsÚdataZelemsqZelems2r'   r'   r(   Útest_DomainMatrix_to_flat_nzó   s   

úrw   c                  C   sB   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ |  t¡ksJ ‚d S r`   )r   r
   Zto_sympyrh   r   rG   r'   r'   r(   Útest_DomainMatrix_to_sympy   s   (rx   c                  C   sd   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ }|t tdƒtdƒgtdƒtdƒggdtƒks0J ‚d S r`   )r   r
   Úto_fieldr   ri   r'   r'   r(   Útest_DomainMatrix_to_field  s   (4rz   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&   Z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&   Z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   )ÚAzrj   ZBsZBdr'   r€   r(   Útest_DomainMatrix_unify  s"   (("(&&$(r†   c                  C   sš   t tdƒtdƒgtdƒtdƒggdtƒ} tddgddggƒ}|  ¡ |ks&J ‚|  ¡  ¡ |ks0J ‚|  t¡ ¡ |ks;J ‚|  t tdƒ¡¡ ¡ |ksKJ ‚d S r`   )	r   r
   r   Z	to_Matrixr{   rh   r   rU   r   )r&   Z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 r`   )r   r
   Zto_listrG   r'   r'   r(   Útest_DomainMatrix_to_list=  s   (0rˆ   c                  C   óT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgks(J ‚d S r`   )r   r
   Úto_list_flatrG   r'   r'   r(   Útest_DomainMatrix_to_list_flatB  ó   (,r‹   c                  C   r‰   r`   )r   r
   ZflatrG   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   Zfrom_list_flatr   r!   rr   r   rs   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
   Zto_dodrG   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   Zfrom_dodr{   Zfrom_dod_liker   rh   ©rf   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
   Zto_dokr}   r{   r!   rr   rs   )r&   Z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   Zfrom_dokr{   r   r!   rr   r   rs   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
   ÚreprrG   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 r`   )r   r
   Z	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
   Zis_zero_matrix©r&   rb   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
   Z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
   Z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
   Z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   rL   é   ©r   r   TF)r   r
   Z	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   rL   r£   )r   r   r   )r   rL   r£   )r   r
   Zdiagonalr{   rG   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   ZrankrG   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 rE   r'   r'   ©r&   ÚLr'   r(   r.   Á  ó    z'test_DomainMatrix_add.<locals>.<lambda>c                      ó   ˆˆ  S rE   r'   r'   rª   r'   r(   r.   Â  r¬   rM   c                      r©   rE   r'   r'   ©ÚA1ÚA2r'   r(   r.   Æ  r¬   c                      r­   rE   r'   r'   r®   r'   r(   r.   Ç  r¬   c                      ó
   ˆ   ˆ¡S rE   ©Úaddr'   r®   r'   r(   r.   È  rH   c                      ó
   ˆ  ˆ ¡S rE   r²   r'   r®   r'   r(   r.   É  rH   c                      r´   rE   r²   r'   ©rj   r…   r'   r(   r.   Ð  rH   c                      r±   rE   r²   r'   rµ   r'   r(   r.   Ñ  rH   r   r*   rL   c                      r´   rE   r²   r'   r€   r'   r(   r.   Ü  rH   )r   r
   r³   r   rA   r   r   r   r!   r   r„   r   )rb   ZAsumÚAsdÚAdsr'   )r&   r¯   r°   r   rj   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 rE   r'   r'   rª   r'   r(   r.   æ  r¬   z'test_DomainMatrix_sub.<locals>.<lambda>c                      ó   ˆˆ  S rE   r'   r'   rª   r'   r(   r.   ç  r¬   rM   c                      r¹   rE   r'   r'   r®   r'   r(   r.   ë  r¬   c                      rº   rE   r'   r'   r®   r'   r(   r.   ì  r¬   c                      r±   rE   ©Úsubr'   r®   r'   r(   r.   í  rH   c                      r´   rE   r»   r'   r®   r'   r(   r.   î  rH   c                      r´   rE   r»   r'   rµ   r'   r(   r.   õ  rH   c                      r±   rE   r»   r'   rµ   r'   r(   r.   ö  rH   r*   éÿÿÿÿéüÿÿÿ)r   r
   r¼   r   rA   r   r   r   r!   r   r„   )rb   ZAdiffr‚   r   r¶   r·   r'   )r&   r¯   r°   rj   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&   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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   rJ   é
   é   é   c                      s   ˆ ˆ S rE   r'   r'   rª   r'   r(   r.     r¬   z'test_DomainMatrix_mul.<locals>.<lambda>c                      s   ˆˆ  S rE   r'   r'   rª   r'   r(   r.     r¬   c                      r´   rE   ©Úmatmulr'   rµ   r'   r(   r.     rH   c                      r±   rE   rÇ   r'   rµ   r'   r(   r.     rH   r£   r§   r   r*   )r   r
   rÈ   r   rA   r   r   ÚmulÚzerosr{   r!   r   r„   )r°   ZAprodZAArm   r‚   r   r¶   r·   r'   )r&   rj   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
   Zmul_elementwisera   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   rJ   rÄ   rÅ   rÆ   é%   é6   éQ   év   r   c                      s   ˆ t ddƒ S ©Nr   r   rZ   r'   rG   r'   r(   r.   B  rƒ   z'test_DomainMatrix_pow.<locals>.<lambda>c                      ó   ˆ d S ©Nr½   r'   r'   rG   r'   r(   r.   C  r¬   c                      s
   ˆ   d¡S rÓ   )Úpowr'   rG   r'   r(   r.   D  rH   ©r   r   c                      rÒ   ©Nr   r'   r'   rG   r'   r(   r.   G  r¬   )	r   Úeyer
   rÔ   r   rA   ÚNotImplementedErrorrÊ   r   )r×   r°   ZA3r'   rG   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 )NrM   ©r   r   rO   ©r   rL   é<   é   é   rÅ   é   T©rV   )r   r   r   r
   rh   Zclear_denoms©r&   Zden_ZZAnum_ZZ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 )NrM   rÚ   rO   rÛ   r£   r   rÞ   r   r   rL   r   Trà   )rM   rÚ   r   r   ©r   r   r   r   )rO   rÛ   )r   r£   )r   rJ   )r£   r   r   )r   r   r   )r   r   i¤  )r   r   r   r   )éi   éT   éF   rÜ   )r   r   r
   r{   Zclear_denoms_rowwisery   Úinvrh   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'   rG   r'   r(   r.   |  rƒ   z0test_DomainMatrix_cancel_denom.<locals>.<lambda>)r   r
   rë   r   r   ÚZeroDivisionErrorr'   r'   rG   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'   rG   r'   r(   r.   ˆ  rƒ   z<test_DomainMatrix_cancel_denom_elementwise.<locals>.<lambda>)r   r
   rî   r   rì   )ZnumersZdenomsr'   rG   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
   ÚcontentZ	primitive)r&   ZA_primitiveZ	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 rE   )Úsccr'   rG   r'   r(   r.   ž  r¬   z'test_DomainMatrix_scc.<locals>.<lambda>)r   r
   r{   r!   rô   r   r   r   )r   r‚   rt   ru   r'   rG   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   )ÚautoZGJr	   ZCDZGJ_denseZFF_denseZCD_dense©Úmethodc                      ó   ˆ j ddS ©NZfoor÷   )Úrrefr'   ©r…   r'   r(   r.   Ç  r/   z(test_DomainMatrix_rref.<locals>.<lambda>c                      rù   rú   )Úrref_denr'   rü   r'   r(   r.   È  r/   )r   r   rû   r
   r   rB   )r&   ZArÚpivotsÚmethodsrø   r'   rü   r(   Útest_DomainMatrix_rref¡  s<   (0(0(0(2(2r   c                     s,  t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}|  ¡ |ks6J ‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ‰ tt‡ fdd	„ƒ t tdƒtdƒtdƒgtdƒtdƒtdƒggdtd
d} t tdƒtdƒdœtdƒtdƒdœdœdtƒ}|  ¡ |ks”J ‚d S )Nr   r½   r   rÀ   r   rŽ   r   c                      ró   rE   )Úcolumnspacer'   rü   r'   r(   r.   Ñ  r¬   z/test_DomainMatrix_columnspace.<locals>.<lambda>r3   r5   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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ó   rE   )Úrowspacer'   rü   r'   r(   r.   Ý  r¬   z,test_DomainMatrix_rowspace.<locals>.<lambda>r3   r5   )r   r   r  r
   r   r   rG   r'   rü   r(   Útest_DomainMatrix_rowspaceØ  s   448r  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½   rM   c                      rù   )NT)Zdivide_last)Ú	nullspacer'   rG   r'   r(   r.   ì  r/   z-test_DomainMatrix_nullspace.<locals>.<lambda>r   rÀ   )	r   r   r  r
   r   r   rý   Znullspace_from_rrefr{   )ZAnullZArrefÚdenrþ   r'   rG   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?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   rM   rÀ   rN   c                      r±   rE   ©Ú_solver'   )r&   Úb3r'   r(   r.     rH   z)test_DomainMatrix_solve.<locals>.<lambda>c                      r±   rE   r  r'   )r&   Úbzr'   r(   r.     rH   )r   r   r	  r   r   r
   r   )ÚbZ
particularr  r'   )r&   r
  r  r(   Útest_DomainMatrix_solveù  s   ($r  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ó   rE   ©rç   r'   rü   r'   r(   r.     r¬   z'test_DomainMatrix_inv.<locals>.<lambda>rM   c                      ró   rE   r  r'   ©ÚAnsr'   r(   r.     r¬   r£   c                      ró   rE   r  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&   ZAinvZZ3r'   )r  r  r…   r  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À   rL   rò   r½   r   rM   c                      ró   rE   )Údetr'   r  r'   r(   r.   1  r¬   z'test_DomainMatrix_det.<locals>.<lambda>)r   r
   r  r   r   r   rG   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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   rM   c                      s   ˆ   tdƒg¡S rÖ   )Ú	eval_polyr
   r'   ©ÚdM2r'   r(   r.   @  r9   z-test_DomainMatrix_eval_poly.<locals>.<lambda>)	r   r
   r  rÊ   r#   r$   r×   r   r   )ÚdMÚpÚresultr'   r  r(   Útest_DomainMatrix_eval_poly7  s   ((J&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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'   )r  ÚdM1r'   r(   r.   L  ó    z1test_DomainMatrix_eval_poly_mul.<locals>.<lambda>rM   c                      r"  rÖ   r#  r'   )Úb1r  r'   r(   r.   N  r&  c                      r"  rÖ   r#  r'   )Úbqr  r'   r(   r.   P  r&  )r   r
   r$  r   r   r   r   r   )r&   r  r  r'   )r  r'  r(  r  r%  r(   Útest_DomainMatrix_eval_poly_mulC  s   (P(r)  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û   r÷   Úcharpolyc                      r±   rE   ©Úsolve_den_charpolyr'   ©ZAir  r'   r(   r.   k  rH   z"_check_solve_den.<locals>.<lambda>c                      ó   ˆ j ˆddS )Nr*  r÷   ©Ú	solve_denr'   r-  r'   r(   r.   l  rƒ   )r{   r0  Úsolve_den_rrefr#   r,  r   r   )r&   r  ZxnumZxdenZcase1Zcase2Zxnum_iZb_iZanswersÚmÚnr'   r-  r(   Ú_check_solve_denS  s   

îr4  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À   rL   rò   rN   r1   )r   r
   r4  )r&   r  r  r  r'   r'   r(   Útest_DomainMatrix_solve_deno  s*   (ýý$$r5  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Õ   rM   c                      r±   rE   r+  r'   )r¯   r  r'   r(   r.   Š  rH   z6test_DomainMatrix_solve_den_charpoly.<locals>.<lambda>c                      r±   rE   r+  r'   ©r&   r'  r'   r(   r.   Œ  rH   c                      r±   rE   r+  r'   )r&   r(  r'   r(   r.   Ž  rH   )r   r
   r   r   r   r   r   r'   r'   )r&   r¯   r  r'  r(  r(   Ú$test_DomainMatrix_solve_den_charpoly†  s   (r7  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±   rE   r+  r'   ©r&   r  r'   r(   r.   •  rH   z<test_DomainMatrix_solve_den_charpoly_check.<locals>.<lambda>rÀ   F)Úcheckr   )r   r
   r   r   Úadjugater,  )ZadjAbr'   r8  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   rM   rÕ   c                      r±   rE   r/  r'   r8  r'   r(   r.   ž  rH   z4test_DomainMatrix_solve_den_errors.<locals>.<lambda>c                      r±   rE   ©r1  r'   r8  r'   r(   r.   Ÿ  rH   c                      r±   rE   r/  r'   r8  r'   r(   r.   £  rH   c                      r±   rE   r<  r'   r8  r'   r(   r.   ¤  rH   r   r   r   c                      r±   rE   r/  r'   r6  r'   r(   r.   ¨  rH   r1   c                      r.  )Nr7   r÷   r/  r'   r6  r'   r(   r.   ¬  rƒ   c                      r±   rE   r+  r'   r8  r'   r(   r.   °  rH   )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                      r±   rE   r/  r'   r8  r'   r(   r.   ¶  rH   zBtest_DomainMatrix_solve_den_rref_underdetermined.<locals>.<lambda>c                      r±   rE   r<  r'   r8  r'   r(   r.   ·  rH   )r   r
   r   r   r'   r'   r8  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   rL   r£   rJ   r§   é	   éñÿÿÿéîÿÿÿr   c                      ró   rE   )Úadj_poly_detr'   rG   r'   r(   r.   Å  r¬   z0test_DomainMatrix_adj_poly_det.<locals>.<lambda>)r   r
   rB  r:  r  r  r   r   )r  ZdetAr'   rG   r(   Útest_DomainMatrix_adj_poly_detº  s    þþRÿÿrC  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&   r  r  r'   r'   r(   Útest_DomainMatrix_inv_denÈ  s   ((rF  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
   r:  )r&   r  r'   r'   r(   Útest_DomainMatrix_adjugateÏ  rœ   rG  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 rD  )r   r
   Zadj_det)r&   ZadjAr'   r'   r(   Útest_DomainMatrix_adj_detÕ  s   ((rH  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*   rL   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'   rp   ©rQ   r'   r(   r>   	  r2   zEtest_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r'   )r<   ÚrowrI  r'   r(   r>   	  s    z:test_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>r'   )ÚrowsrQ   r'   rI  r(   r.   	  r&  z&test_DomainMatrix_lu.<locals>.<lambda>)r   r   c                      ró   rE   )Úlur'   rG   r'   r(   r.     r¬   )r   r   rL  r
   r   r   )r«   ÚUZswapsZto_domr'   rG   r(   Útest_DomainMatrix_luÛ  s`   ((((((((((((4(46ýý6(rN  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±   rE   ©Úlu_solver'   r8  r'   r(   r.   '  rH   z,test_DomainMatrix_lu_solve.<locals>.<lambda>rL   r£   r¤   rN   c                      r±   rE   rO  r'   r8  r'   r(   r.   2  rH   rM   r1   c                      r±   rE   rO  r'   r8  r'   r(   r.   7  rH   c                      r±   rE   rO  r'   r8  r'   r(   r.   <  rH   c                      r±   rE   rO  r'   r8  r'   r(   r.   A  rH   )	r   r   rP  r   r   rØ   r
   r   r   ©rm   r'   r8  r(   Útest_DomainMatrix_lu_solve  s:   (((6$6$((rR  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À   rL   r£   rJ   r§   r?  rò   r@  rA  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   rM   c                      ró   rE   )r*  r'   r  r'   r(   r.   o  r¬   z,test_DomainMatrix_charpoly.<locals>.<lambda>)	r   r
   r*  r{   r   Úmapr   r   r   )r&   r  r'   r  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   rS  rÀ   )r   r   r   )r   r   r   )r   r   r   )r   r
   Zcharpoly_factor_listr   rG   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$   rG   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 )NrM   )r   rÊ   r   r!   r   r#   r$   rG   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   Zonesr   r   r!   r   r   r"   r#   r$   rG   r'   r'   r(   Útest_DomainMatrix_ones•  s   ra  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
   ZdiagrG   r'   r'   r(   Útest_DomainMatrix_diagŸ  s   " "&rb  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   rL   r£   rJ   r§   r?  rÄ   é   rß   ©r   r   )r   r£   )r   r
   Zhstack©r&   rb   rc   ZABÚABCr'   r'   r(   Útest_DomainMatrix_hstack§  s"   (((þþ&&þþrg  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   rL   r£   rJ   r§   r?  rÄ   rc  rß   )r   r   )r£   r   )r   r
   Zvstackre  r'   r'   r(   Útest_DomainMatrix_vstack¶  s.   (((üüúúrh  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   rM   r   c                 S   s   d|  S )Nr   r'   rQ  r'   r'   r(   r.   Î  r¬   z-test_DomainMatrix_applyfunc.<locals>.<lambda>)r   r
   Z	applyfuncr   r'   r'   r(   Útest_DomainMatrix_applyfuncË  s   ri  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'   rG   r'   r(   r.   Ú  r¬   z-test_DomainMatrix_scalarmul.<locals>.<lambda>)r   r
   r   r   r   rA   )Úlamdar'   rG   r(   Útest_DomainMatrix_scalarmulÑ  s   (844"rl  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'   rG   r'   r(   r.   ç  r¬   z+test_DomainMatrix_truediv.<locals>.<lambda>c                      rm  rj  r'   r'   rG   r'   r(   r.   è  r¬   c                      s   ˆ t tdƒtƒ S rê   )r   r
   r'   rG   r'   r(   r.   é  r&  r?  r£   )
r   r^   r   r   r   r
   r   rì   rA   ry   )rk  r  r'   rG   r(   Útest_DomainMatrix_truedivÝ  s   @::>(<:Hrn  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   rL   r£   rJ   r§   r?  rò   rÀ   rÕ   r1   r½   r   r   rN   rÚ   c                      s   ˆ dd d…f S )Nr   rÀ   r'   r'   ©r  r'   r(   r.     r9   z+test_DomainMatrix_getitem.<locals>.<lambda>c                      s   ˆ d d…df S )NrÀ   r   r'   r'   ro  r'   r(   r.     r9   rM   )rÀ   r   )r   rÀ   )r½   rÁ   c                      ó   ˆ d S )Nrò   r'   r'   ro  r'   r(   r.   
  r¬   c                      rp  )NrO   r'   r'   ro  r'   r(   r.     r¬   c                      rp  )N)r½   r¾   r'   r'   ro  r'   r(   r.     r¬   )rÄ   rÄ   ©rL   rL   r@   c                      rp  )N©r   r   r'   r'   ro  r'   r(   r.     r¬   rd  )r   r   rr  )r   r
   r   Ú
IndexErrorr   r'   r'   ro  r(   Útest_DomainMatrix_getitemñ  sP   ýý4(,@84ý
ý*"&4.*rt  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   rd  rq  r   )r   r
   Zgetitem_sympyr   ZZeroÚ
isinstancer   )r  Zval1Zval2r'   r'   r(   Útest_DomainMatrix_getitem_sympy  s
   "rv  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   rL   r£   rJ   r§   r?  rò   r   r   r½   )r   r   r   r@   r”   r*   rÁ   c                      s   ˆ  ˆˆ ¡S rE   )Úextractr'   ©Úcolsr  rK  r'   r(   r.   E  r/   z+test_DomainMatrix_extract.<locals>.<lambda>c                      s   ˆ  ¡  ˆˆ ¡S rE   )r{   rw  r'   rx  r'   r(   r.   F  r9   )r   r
   rw  r{   rÊ   r}   r   rs  )r%  r  ZdM3ÚemptyÚsizeZbad_indicesr'   rx  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   rd  rq  r   c                    s   |ˆ | |f< d S rE   r'   )r=   ÚjÚvalro  r'   r(   ÚsetitemM  s   z*test_DomainMatrix_setitem.<locals>.setitemc                      s   ˆ ddt ddƒƒS )Nr   r   ro   r'   ©r  r'   r(   r.   O  r&  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'   )r  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   rd  rq  r   r   )Úpickler   r
   ÚloadsÚdumps)rƒ  r  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
   Zfflur#   rE  rÈ   Zrmul)r&   ÚPr«   ÚDrM  ZdiÚdr'   r'   r(   Útest_DomainMatrix_fflu[  s   (rŠ  N)vZ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)   rD   rI   rR   rX   r]   r_   rd   re   rg   rk   rn   rw   rx   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)  r4  r5  r7  r;  r=  r>  rC  rF  rG  rH  rN  rR  r\  r]  r^  r`  ra  rb  rg  rh  ri  rl  rn  rt  rv  r|  r‚  r†  rŠ  r'   r'   r'   r(   Ú<module>   s¼     $)( 	


		%$'*
81.
,$
