o
    *Î®cs~  ã                   @   s„  d dl mZ d dlmZmZ d dlmZ d dlmZ d dl	m
Z
 d dl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„ 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/d0„ Z2d1d2„ Z3d3d4„ Z4d5d6„ Z5d7d8„ Z6d9d:„ Z7d;d<„ Z8d=d>„ Z9d?d@„ Z:dAdB„ Z;dCdD„ Z<dEdF„ Z=dGdH„ Z>dIdJ„ Z?dKdL„ Z@dMdN„ ZAdOdP„ ZBdQdR„ ZCdSdT„ ZDdUdV„ ZEdWdX„ ZFdYdZ„ ZGd[d\„ ZHd]d^„ ZId_d`„ ZJdadb„ ZKdcdd„ ZLdedf„ ZMdgdh„ ZNdidj„ ZOdkdl„ ZPdmdn„ ZQdodp„ ZRdqdr„ ZSdsdt„ ZTdudv„ ZUdwdx„ ZVdydz„ ZWd{d|„ ZXd}d~„ ZYdd€„ ZZdS )‚é    )Úraises)ÚIntegerÚRational)ÚS)Úsqrt)ÚMatrix)ÚFFÚZZÚQQÚEXRAW)ÚDomainMatrixÚDomainScalarÚDM)ÚDMBadInputErrorÚDMDomainErrorÚDMShapeErrorÚDMFormatErrorÚDMNotAFieldÚDMNonSquareMatrixErrorÚDMNonInvertibleMatrixError)ÚDDM)ÚSDMc                  C   sl   t tdƒtdƒgtdƒtdƒggdtƒ} tddgddggtƒ}|j| ks&J ‚|jdks-J ‚|jtks4J ‚d S ©Né   é   é   é   ©r   r   )r   r	   r   ÚrepÚshapeÚdomain)ÚddmÚA© r#   úS/tmp/pip-target-vg8gfxp4/lib/python/sympy/polys/matrices/tests/test_domainmatrix.pyÚtest_DM   s
   (r%   c                     sv  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 ƒ}|jˆ ks<J ‚|jdksCJ ‚|jt ksJJ ‚t| dt ƒ}|jˆksWJ ‚|jdks^J ‚|jt kseJ ‚tt‡ fdd„ƒ tt‡fd	d„ƒ ttd
d„ ƒ dˆfdˆ ffD ]"\}}tˆdt |d}|j|ks™J ‚t| dt |d}|j|ks¨J ‚q†tt	‡fdd„ƒ tt
dd„ ƒ d S )Nr   r   r   r   ©r   r   r   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*   ,   r+   c                   S   s   t tdggƒdtƒS )Nr   ©r   r   )r   r   r	   r#   r#   r#   r$   r*   -   ó    ÚsparseÚdense©Úfmtc                      s   t ˆ dtddS )Nr   Úinvalidr1   r)   r#   )Úlolr#   r$   r*   5   ó    c                   S   s   t tdƒtdƒggdtƒS )Nr   r   r   r)   r#   r#   r#   r$   r*   7   ó    )r	   r   r   r   r   r   r    r   Ú	TypeErrorÚ
ValueErrorr   )Údodr"   r2   r   r#   )r!   r4   r,   r$   Útest_DomainMatrix_init   s,    &r:   c                     sè   t tdƒtdƒgtdƒtdƒggdtƒ} t | ¡‰ ˆ j| ks J ‚ˆ jdks'J ‚ˆ jtks.J ‚ttdƒtdƒdœtdƒtdƒdœdœdtƒ}t |¡‰ ˆ j|ksQJ ‚ˆ jdksXJ ‚ˆ jtks_J ‚ttdƒggdtƒ‰ tt	‡ fdd	„ƒ d S )
Nr   r   r   r   r   r&   r-   c                      s
   t  ˆ ¡S ©N)r   Úfrom_repr#   ©r"   r#   r$   r*   H   ó   
 z,test_DomainMatrix_from_rep.<locals>.<lambda>)
r   r	   r   r<   r   r   r    r   r   r7   )r!   r,   r#   r=   r$   Útest_DomainMatrix_from_rep:   s   (
.
r?   c                  C   sR  t tdƒtdƒgtdƒtdƒggdtƒ} t ddgddggt¡}|j| ks'J ‚|jdks.J ‚|jtks5J ‚tdƒ}t |dƒ|dƒg|dƒ|dƒggd|ƒ} t ddgddgg|¡}|j| ks`J ‚|jdksgJ ‚|j|ksnJ ‚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¡}|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   )rA   r   )	r   r	   r   Ú	from_listr   r   r    r   r
   )r!   r"   Údomr#   r#   r$   Útest_DomainMatrix_from_listK   s    ((0rG   c                  C   s6  t tdƒtdƒgtdƒtdƒggdtƒ} t ddddgddgg¡}|j| ks(J ‚|jdks/J ‚|jtks6J ‚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   T©Ú	extension)r   r	   r   Úfrom_list_sympyr   r   r    r
   Úalgebraic_fieldr   Úconvert)r!   r"   ÚKr#   r#   r$   Ú!test_DomainMatrix_from_list_sympy`   s(   (""ÿü2þrN   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*      r6   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>c                      rO   )Nr   r   r   r   rP   r#   rQ   r#   r$   r*   €   r6   )
r   r
   r   r   Úfrom_dict_sympyr   r   r    r   r   )r,   Ú
sympy_dictr"   r#   rQ   r$   Ú!test_DomainMatrix_from_dict_sympyv   s   &rU   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ƒ}|j|ksÙJ ‚|jdksàJ ‚|jtksçJ ‚d S )Nr   r   r&   r   r   r   TrH   r   r0   r1   )r   r	   r   Úfrom_Matrixr   r   r   r    r
   rK   r   rL   r   )r,   r"   rM   r!   r#   r#   r$   Útest_DomainMatrix_from_Matrixƒ   s2   .$$ÿü2þ60rW   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 r   r)   ©r"   ÚBÚCr#   r#   r$   Útest_DomainMatrix_eq    s   (( r[   c                  C   sÆ   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒggdtƒ}|  |¡du sOJ ‚|  |¡du sXJ ‚|  |¡du saJ ‚d S )	Nr   r   r   r   r   r-   TF)r   r	   r
   Úunify_eq)r"   ÚB1ÚB2ÚB3r#   r#   r$   Útest_DomainMatrix_unify_eq©   s   (((r`   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
   )rM   Úitemsr#   r#   r$   Útest_DomainMatrix_get_domain³   s   $&rc   c                  C   s„   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 ¡}|| kr>|| us@J ‚d S r   )r   r	   Ú
convert_tor
   )r"   ÚAqÚAcopyr#   r#   r$   Útest_DomainMatrix_convert_to½   s
   (
0
rg   c                  C   sB   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ |  t¡ksJ ‚d S r   )r   r	   Úto_sympyrd   r   r=   r#   r#   r$   Útest_DomainMatrix_to_sympyÅ   s   (ri   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
   )r"   re   r#   r#   r$   Útest_DomainMatrix_to_fieldÊ   s   (4rk   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   ($rn   c                  C   sL   t dddœdddœdœdtƒ} |  ¡ }|jtddgddggdtƒks$J ‚d S )Nr   r   r&   r   r   r   )r   r	   Úto_denser   r   )r"   ÚA_denser#   r#   r$   Útest_DomainMatrix_to_denseÖ   s   &rq   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&   r0   r1   r/   c                      s   ˆj ˆ ddS )Nr3   r1   )Úunifyr#   ©ÚAdÚAsr#   r$   r*   ò   ó    z)test_DomainMatrix_unify.<locals>.<lambda>)	r   r	   r
   rr   r   r   r   r   r8   )ÚAzre   ÚBsÚBdr#   rs   r$   Útest_DomainMatrix_unifyÜ   s"   (("(""$(rz   c                  C   sL   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 ‚d S r   )r   r	   Ú	to_Matrixr   r=   r#   r#   r$   Útest_DomainMatrix_to_Matrixõ   s   ($r|   c                  C   sX   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒgtdƒtdƒggks*J ‚d S r   )r   r	   Úto_listr=   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_flatr=   r#   r#   r$   Útest_DomainMatrix_to_list_flatÿ   ó   (,r   c                  C   sV   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 ‚d S )Nr   r   r   r   r   )©r   r   r&   ©r   r   r-   )r   r	   Úto_dokr=   r#   r#   r$   Útest_DomainMatrix_to_dok  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	   Úreprr=   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	   Ú	transpose)r"   ÚATr#   r#   r$   Útest_DomainMatrix_transpose  s   ((r‹   c                  C   r   r   )r   r	   Úflatr=   r#   r#   r$   Útest_DomainMatrix_flat  r‚   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   r-   r   FT)r   r	   Úis_zero_matrix©r"   rY   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   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   rA   é   ©r   r   TF)r   r	   Ú	is_squarer   r#   r#   r$   Útest_DomainMatrix_is_square.  s   (6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
   Úrankr=   r#   r#   r$   Útest_DomainMatrix_rank5  s   6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seJ ‚|t ddgddggdtƒksvJ ‚|jt	ddgddggdtƒksˆJ ‚tt
‡‡fdd	„ƒ d S )Nr   r   r   r   r   r–   rš   c                      ó   ˆ ˆ S r;   r#   r#   ©r"   ÚLr#   r$   r*   A  ó    z'test_DomainMatrix_add.<locals>.<lambda>c                      ó   ˆˆ  S r;   r#   r#   rž   r#   r$   r*   B  r    rB   c                      r   r;   r#   r#   ©ÚA1ÚA2r#   r$   r*   F  r    c                      r¡   r;   r#   r#   r¢   r#   r$   r*   G  r    c                      ó
   ˆ   ˆ¡S r;   ©Úaddr#   r¢   r#   r$   r*   H  r>   c                      ó
   ˆ  ˆ ¡S r;   r¦   r#   r¢   r#   r$   r*   I  r>   c                      r¨   r;   r¦   r#   ©re   rw   r#   r$   r*   P  r>   c                      r¥   r;   r¦   r#   r©   r#   r$   r*   Q  r>   r   r&   rA   c                      r¨   r;   r¦   r#   rs   r#   r$   r*   \  r>   )r   r	   r§   r   r7   r   r
   r   r   r   r   )rY   ÚAsumÚAsdÚAdsr#   )r"   r£   r¤   rt   re   ru   rw   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seJ ‚|| ksmJ ‚|j|j kswJ ‚d S )Nr   r   r   r   r   r   c                      ó   ˆ ˆ S r;   r#   r#   rž   r#   r$   r*   f  r    z'test_DomainMatrix_sub.<locals>.<lambda>c                      ó   ˆˆ  S r;   r#   r#   rž   r#   r$   r*   g  r    rB   c                      r®   r;   r#   r#   r¢   r#   r$   r*   k  r    c                      r¯   r;   r#   r#   r¢   r#   r$   r*   l  r    c                      r¥   r;   ©Úsubr#   r¢   r#   r$   r*   m  r>   c                      r¨   r;   r°   r#   r¢   r#   r$   r*   n  r>   c                      r¨   r;   r°   r#   r©   r#   r$   r*   u  r>   c                      r¥   r;   r°   r#   r©   r#   r$   r*   v  r>   r&   éÿÿÿÿéüÿÿÿ)
r   r	   r±   r   r7   r   r
   r   r   r   )rY   ÚAdiffru   rt   r«   r¬   r#   )r"   r£   r¤   re   rw   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   r@   é
   é   é   c                      s   ˆ ˆ S r;   r#   r#   rž   r#   r$   r*     r    z'test_DomainMatrix_mul.<locals>.<lambda>c                      s   ˆˆ  S r;   r#   r#   rž   r#   r$   r*   ‘  r    c                      r¨   r;   ©Úmatmulr#   r©   r#   r$   r*   ˜  r>   c                      r¥   r;   r¾   r#   r©   r#   r$   r*   ™  r>   r–   rš   r   r&   )r   r	   r¿   r   r7   r
   r   ÚmulÚzerosrl   r   r   )r¤   ÚAprodÚAAÚxru   rt   r«   r¬   r#   )r"   re   rw   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_elementwiserX   r#   r#   r$   Ú!test_DomainMatrix_mul_elementwise°  s
   (((rÇ   c                     st  t  dt¡} t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtd	ƒggdtƒ}t td
ƒtdƒgtdƒtdƒggdtƒ}ˆ d ˆ  d¡  krR| ksUJ ‚ J ‚ˆ d ˆ  d¡  kreˆ kshJ ‚ J ‚ˆ d ˆ  d¡  krx|ks{J ‚ J ‚ˆ d ˆ  d¡  kr‹|ksŽJ ‚ J ‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t  dt¡‰ tt‡ fdd„ƒ d S )Nr   r   r   r   r   r@   r»   r¼   r½   é%   é6   éQ   év   r   c                      s   ˆ t ddƒ S ©Nr   r   rP   r#   r=   r#   r$   r*   Â  rv   z'test_DomainMatrix_pow.<locals>.<lambda>c                      ó   ˆ d S ©Nr²   r#   r#   r=   r#   r$   r*   Ã  r    c                      s
   ˆ   d¡S rÎ   )Úpowr#   r=   r#   r$   r*   Ä  r>   ©r   r   c                      rÍ   )Nr   r#   r#   r=   r#   r$   r*   Ç  r    )	r   Úeyer	   rÏ   r   r7   ÚNotImplementedErrorrÁ   r   )rÑ   r¤   ÚA3r#   r=   r$   Útest_DomainMatrix_pow¸  s   (((&&&&rÔ   c                  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 ‚q4d S )Nr   r   r   r   r   ©r   r   )r   r	   rl   r   Úscc)rt   ru   ÚAddmÚAsdmr"   r#   r#   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‡ fdd„ƒ d S )Nr&   r#   r   r-   )r   r   r   r   r   r   )r   c                      ó   ˆ   ¡ S r;   )Úrrefr#   ©rw   r#   r$   r*   ï  r    z(test_DomainMatrix_rref.<locals>.<lambda>)r   r
   rÛ   r	   r   r   )r"   ÚArÚpivotsr#   rÜ   r$   Útest_DomainMatrix_rrefÕ  s(   (0(0(0(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   r   c                      rÚ   r;   )Úcolumnspacer#   rÜ   r#   r$   r*   ø  r    z/test_DomainMatrix_columnspace.<locals>.<lambda>r/   r1   r&   )r   r
   rá   r	   r   r   )r"   Ú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Ú   r;   )Úrowspacer#   rÜ   r#   r$   r*     r    z,test_DomainMatrix_rowspace.<locals>.<lambda>r/   r1   )r   r
   rä   r	   r   r   r=   r#   rÜ   r$   Útest_DomainMatrix_rowspaceÿ  s   448rå   c                     s   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‡ fdd„ƒ d S )Nr   r   r²   rB   c                      rÚ   r;   )Ú	nullspacer#   rÜ   r#   r$   r*     r    z-test_DomainMatrix_nullspace.<locals>.<lambda>)r   r
   ræ   r	   r   r   )r"   ÚAnullr#   rÜ   r$   Útest_DomainMatrix_nullspace
  s
   ((rè   c                     sê   t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ} t ddggdtƒ}t ddggdtƒ}ˆ  | ¡||fks?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   rB   r¶   rC   c                      r¥   r;   ©Ú_solver#   )r"   Úb3r#   r$   r*     r>   z)test_DomainMatrix_solve.<locals>.<lambda>c                      r¥   r;   ré   r#   )r"   Úbzr#   r$   r*     r>   )r   r
   rê   r   r   r	   r   )ÚbÚ
particularræ   r#   )r"   rë   rì   r$   Útest_DomainMatrix_solve  s   ($rï   c                     s$  t g dtƒ} |  ¡ | ksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtddƒtddƒggdtƒ}|  ¡ |ks@J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰tt‡fd	d
„ƒ t tdƒtdƒggdtƒ‰tt‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ tt‡ fdd
„ƒ d S )Nrƒ   r   r   r   r   r   r¶   r²   c                      rÚ   r;   ©Úinvr#   rÜ   r#   r$   r*   +  r    z'test_DomainMatrix_inv.<locals>.<lambda>rB   c                      rÚ   r;   rð   r#   ©ÚAnsr#   r$   r*   .  r    r–   c                      rÚ   r;   rð   r#   )ÚAninvr#   r$   r*   1  r    )r   r
   rñ   r	   r   r   r   r   )r"   ÚAinvr#   )rô   ró   rw   r$   Útest_DomainMatrix_inv"  s   (,((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   r-   r   r   r   r   r¶   rA   rÕ   r²   r   rB   c                      rÚ   r;   )Údetr#   rò   r#   r$   r*   E  r    z'test_DomainMatrix_det.<locals>.<lambda>)r   r	   r÷   r
   r   r   r=   r#   rò   r$   Útest_DomainMatrix_det4  s   (HH(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&   rA   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   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#   )Ú.0Úe©rF   r#   r$   Ú
<listcomp>y  r.   zEtest_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>.<listcomp>r#   )rù   Úrowrû   r#   r$   rü   y  s    z:test_DomainMatrix_lu.<locals>.<lambda>.<locals>.<listcomp>r#   )ÚrowsrF   r#   rû   r$   r*   y  ó    z&test_DomainMatrix_lu.<locals>.<lambda>)r   r   c                      rÚ   r;   )Úlur#   r=   r#   r$   r*   €  r    )r   r
   r   r	   r   r   )rŸ   ÚUÚswapsÚto_domr#   r=   r$   Útest_DomainMatrix_luK  s`   ((((((((((((4(46ýý6(r  c                     sR  t g dtƒ ‰  ‰} ˆ  ˆ¡| ksJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ksMJ ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ks‡J ‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fd	d
„ƒ t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ksøJ ‚t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒgtdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒggdtƒ‰ t tdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒggdtƒ‰tt‡ ‡fdd
„ƒ d S )Nrƒ   r   r   r   r   r   rÐ   r   c                      r¥   r;   ©Úlu_solver#   ©r"   rí   r#   r$   r*   —  r>   z,test_DomainMatrix_lu_solve.<locals>.<lambda>rA   r–   r—   rC   c                      r¥   r;   r  r#   r  r#   r$   r*   ¢  r>   rB   r-   c                      r¥   r;   r  r#   r  r#   r$   r*   §  r>   c                      r¥   r;   r  r#   r  r#   r$   r*   ¬  r>   c                      r¥   r;   r  r#   r  r#   r$   r*   ±  r>   )	r   r
   r  r   r   rÒ   r	   r   r   ©rÄ   r#   r  r$   Útest_DomainMatrix_lu_solveƒ  s:   (((6$6$((r	  c                     s8  t g dtƒ} |  ¡ tdƒgksJ ‚t dggdtƒ} |  ¡ tdƒtdƒg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sLJ ‚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 ‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nrƒ   r   r-   r²   r   r   r   r   éûÿÿÿr¶   rA   r–   r@   rš   é	   rÕ   iñÿÿÿiîÿÿÿr   rB   c                      rÚ   r;   )Úcharpolyr#   rò   r#   r$   r*   Â  r    z,test_DomainMatrix_charpoly.<locals>.<lambda>)r   r	   r  r
   r   r   r=   r#   rò   r$   Útest_DomainMatrix_charpoly´  s   ("H(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    r=   r#   r#   r$   Útest_DomainMatrix_eyeÅ  ó   r  c                  C   óB   t  dt¡} | jt dt¡ksJ ‚| jdksJ ‚| jtksJ ‚d S )NrB   )r   rÁ   r
   r   r   r   r    r=   r#   r#   r$   Útest_DomainMatrix_zerosÌ  r  r  c                  C   r  )Nrà   )r   Úonesr
   r   r   r   r    r=   r#   r#   r$   Útest_DomainMatrix_onesÓ  r  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	   Údiagr=   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   rA   r–   r@   rš   r  r»   é   é   ©r   r   )r   r–   )r   r	   Úhstack©r"   rY   rZ   Ú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   rA   r–   r@   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   rB   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#   r=   r#   r$   r*     r    z-test_DomainMatrix_scalarmul.<locals>.<lambda>)r   r	   r   r
   r   r7   )Úlamdar#   r=   r$   Útest_DomainMatrix_scalarmul  s   (844"r$  c                     sj  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	„ƒ d S )Nr   r   r   r   r&   rš   r   c                      ó   ˆ d S ©Nr   r#   r#   r=   r#   r$   r*   "  r    z+test_DomainMatrix_truediv.<locals>.<lambda>c                      r%  r"  r#   r#   r=   r#   r$   r*   #  r    c                      s   ˆ t tdƒtƒ S r&  )r   r	   r#   r=   r#   r$   r*   $  rÿ   )	r   rV   r   r   r
   r	   r   ÚZeroDivisionErrorr7   )r#  rí   r#   r=   r$   Útest_DomainMatrix_truediv  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ƒ‰ ˆ 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   rA   r–   r@   rš   r  rÕ   r¶   rÐ   r-   r²   r   r   rC   )r   r   c                      s   ˆ dd d…f S )Nr   r¶   r#   r#   ©ÚdMr#   r$   r*   8  r5   z+test_DomainMatrix_getitem.<locals>.<lambda>c                      s   ˆ d d…df S )Nr¶   r   r#   r#   r)  r#   r$   r*   9  r5   rB   )r¶   r   )r   r¶   )r²   r·   c                      ó   ˆ d S )NrÕ   r#   r#   r)  r#   r$   r*   @  r    c                      r+  )NrD   r#   r#   r)  r#   r$   r*   A  r    c                      r+  )N)r²   r³   r#   r#   r)  r#   r$   r*   B  r    )r»   r»   ©rA   rA   rƒ   c                      r+  )N©r   r   r#   r#   r)  r#   r$   r*   J  r    r  )r   r   r-  )r   r	   r   Ú
IndexErrorr   r#   r#   r)  r$   Útest_DomainMatrix_getitem'  sP   ýý4(,@84ý
ý*"&4.*r/  c                  C   sb   t dtdƒidtdƒidœdtƒ} |  dd¡}|tju sJ ‚|  dd¡}|dkr-t|tƒs/J ‚d S )Nr   r   r   r  r,  r   )r   r	   Úgetitem_sympyr   ÚZeroÚ
isinstancer   )r*  Úval1Úval2r#   r#   r$   Útest_DomainMatrix_getitem_sympyS  s
   "r5  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   rA   r–   r@   rš   r  rÕ   r   r   r²   )r   r   r   rƒ   r„   r&   r·   c                      s   ˆ  ˆˆ ¡S r;   )Úextractr#   ©Úcolsr*  rþ   r#   r$   r*   {  r+   z+test_DomainMatrix_extract.<locals>.<lambda>c                      s   ˆ  ¡  ˆˆ ¡S r;   )rl   r6  r#   r7  r#   r$   r*   |  r5   )r   r	   r6  rl   rÁ   ro   r   r.  )ÚdM1ÚdM2ÚdM3ÚemptyÚsizeÚbad_indicesr#   r7  r$   Útest_DomainMatrix_extract[  sN   ýýþþ$$ýý$

ý "(,þr?  c                      sŒ   t dtdƒidtdƒidœdtƒ‰ tdƒˆ d< ˆ t dtdƒidtdƒidœdtƒks,J ‚‡ fdd„‰tt‡fd	d
„ƒ tt‡fdd
„ƒ d S )Nr   r   r   r  r,  r   c                    s   |ˆ | |f< d S r;   r#   )ÚiÚjÚvalr)  r#   r$   Úsetitemƒ  s   z*test_DomainMatrix_setitem.<locals>.setitemc                      s   ˆ ddt ddƒƒS )Nr   r   )r
   r#   ©rC  r#   r$   r*   …  rÿ   z+test_DomainMatrix_setitem.<locals>.<lambda>c                      s   ˆ t ddƒdtdƒƒS rÌ   )Úslicer	   r#   rD  r#   r$   r*   †  s    )r   r	   r   r7   rÒ   r#   r#   )r*  rC  r$   Útest_DomainMatrix_setitem  s   "*rF  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)rG  r*  r#   r#   r$   Útest_DomainMatrix_pickling‰  s
   "(rJ  N)[Úsympy.testing.pytestr   Úsympy.core.numbersr   r   Úsympy.core.singletonr   Úsympy.functionsr   Úsympy.matrices.denser   Úsympy.polys.domainsr   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   r%   r:   r?   rG   rN   rU   rW   r[   r`   rc   rg   ri   rk   rn   rq   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/  r5  r?  rF  rJ  r#   r#   r#   r$   Ú<module>   sŠ    $	

%$'	81,$
