U
    ˜9%es~  ã                   @   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sLt‚|jdksZt‚|jtksht‚d S ©Né   é   é   é   ©r   r   )r   r	   r   ÚrepÚAssertionErrorÚshapeÚdomain)ÚddmÚA© r$   úk/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/polys/matrices/tests/test_domainmatrix.pyÚtest_DM   s
    (r&   c                     s|  t dƒt dƒgt dƒt dƒgg‰t dƒt dƒdœt dƒt dƒdœdœ} tˆdt ƒ‰ t| dt ƒ‰tˆdt ƒ}|jˆ ksxt‚|jdks†t‚|jt ks”t‚t| dt ƒ}|jˆks®t‚|jdks¼t‚|jt ksÊt‚tt	‡ fdd„ƒ tt	‡fd	d„ƒ tt	d
d„ ƒ dˆfdˆ ffD ]J\}}tˆdt |d}|j|ks4t‚t| dt |d}|j|kst‚qtt
‡fdd„ƒ ttdd„ ƒ d S )Nr   r   r   r   ©r   r   r   c                      s   t ˆ dtƒS ©Nr   ©r   r	   r$   )r"   r$   r%   Ú<lambda>+   ó    z(test_DomainMatrix_init.<locals>.<lambda>c                      s   t ˆ dtƒS r(   r)   r$   )Úsdmr$   r%   r*   ,   r+   c                   S   s   t tdggƒdtƒS )Nr   ©r   r   )r   r   r	   r$   r$   r$   r%   r*   -   r+   ÚsparseÚdense©Úfmtc                      s   t ˆ dtddS )Nr   Úinvalidr0   r)   r$   )Úlolr$   r%   r*   5   r+   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    r!   r   Ú	TypeErrorÚ
ValueErrorr   )Zdodr#   r1   r   r$   )r"   r3   r,   r%   Útest_DomainMatrix_init   s,     &r6   c                     sè   t tdƒtdƒgtdƒtdƒggdtƒ} t | ¡‰ ˆ j| ks@t‚ˆ jdksNt‚ˆ jtks\t‚ttdƒtdƒdœtdƒtdƒdœdœdtƒ}t |¡‰ ˆ j|ks¢t‚ˆ jdks°t‚ˆ jtks¾t‚ttdƒggdtƒ‰ t	t
‡ fdd	„ƒ d S )
Nr   r   r   r   r   r'   r-   c                      s
   t  ˆ ¡S ©N)r   Úfrom_repr$   ©r#   r$   r%   r*   H   r+   z,test_DomainMatrix_from_rep.<locals>.<lambda>)r   r	   r   r8   r   r   r    r!   r   r   r4   )r"   r,   r$   r9   r%   Útest_DomainMatrix_from_rep:   s    (
.
r:   c                  C   sX  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sNt‚|jdks\t‚|jtksjt‚tdƒ}t |dƒ|dƒg|dƒ|dƒggd|ƒ} t ddgddgg|¡}|j| ksÀt‚|jdksÎt‚|j|ksÜt‚t t	ddƒt	ddƒgt	ddƒt	ddƒggdt	ƒ} t dd	gd
dggt	¡}|j| ks4t‚|jdksDt‚|jt	ksTt‚d S )Nr   r   r   r   r   é   é   ©r   r   ©r   r   ©r   r   )r<   r   )
r   r	   r   Ú	from_listr   r   r    r!   r   r
   )r"   r#   Údomr$   r$   r%   Útest_DomainMatrix_from_listK   s     ((0rB   c                  C   s<  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sPt‚|jdks^t‚|jtkslt‚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t‚|jdks(t‚|j|ks8t‚d S )Nr   r   r   r   r   T©Ú	extension)r   r	   r   Zfrom_list_sympyr   r   r    r!   r
   Úalgebraic_fieldr   Úconvert)r"   r#   ÚKr$   r$   r%   Ú!test_DomainMatrix_from_list_sympy`   s,    (""ÿü  .þrH   c                     sª   t dtddƒidtddƒidœdtƒ} dtddƒidtddƒidœ}t dd|¡}|j| ks`t‚|jdksnt‚|jtks|t‚tj‰ t	t
‡ fdd„ƒ t	t
‡ fd	d„ƒ d S )
Nr   r   r   r   r'   r   c                      s   ˆ ddddt ddƒiiƒS )Nr   r   r   r   ©r   r$   ©Zfdsr$   r%   r*      r+   z3test_DomainMatrix_from_dict_sympy.<locals>.<lambda>c                      s   ˆ ddddt ddƒiiƒS )Nr   r   r   r   rI   r$   rJ   r$   r%   r*   €   r+   )r   r
   r   r   Zfrom_dict_sympyr   r   r    r!   r   r   )r,   Z
sympy_dictr#   r$   rJ   r%   Ú!test_DomainMatrix_from_dict_sympyv   s    &rK   c                  C   sÞ  t tdƒtdƒdœtdƒtdƒdœdœdtƒ} t tddgddggƒ¡}|j| ksVt‚|jdksdt‚|jtksrt‚t	 
tdƒ¡}t | dtdƒ ¡| dtdƒ ¡dœ| dtdƒ ¡| dtdƒ ¡dœdœd|ƒ} tjtdtdƒ dtdƒ gdtdƒ dtdƒ ggƒdd}|j| ks$t‚|jdks4t‚|j|ksDt‚tjtt	ddƒt	ddƒgt	d	dƒt	d	dƒggƒd
d}tt	ddƒt	ddƒgt	d	dƒt	d	dƒggdt	ƒ}|j|ksºt‚|jdksÊt‚|jt	ksÚt‚d S )Nr   r   r'   r   r   r   TrC   r   r/   r0   )r   r	   r   Úfrom_Matrixr   r   r   r    r!   r
   rE   r   rF   r   )r,   r#   rG   r"   r$   r$   r%   Útest_DomainMatrix_from_Matrixƒ   s2    .$$ÿü2þ60rM   c                  C   s˜   t tdƒtdƒgtdƒtdƒggdtƒ} | | ks4t‚t tdƒtdƒgtdƒtdƒggdtƒ}| |ksht‚tdƒtdƒgtdƒtdƒgg}| |ks”t‚d S r   )r   r	   r   ©r#   ÚBÚCr$   r$   r%   Útest_DomainMatrix_eq    s    (( rQ   c                  C   sÆ   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒggdtƒ}|  |¡dksžt‚|  |¡dks°t‚|  |¡dksÂt‚d S )	Nr   r   r   r   r   r-   TF)r   r	   r
   Zunify_eqr   )r#   ZB1ZB2ZB3r$   r$   r%   Útest_DomainMatrix_unify_eq©   s    (((rR   c                  C   s˜   t  ddddg¡\} }|tdƒtdƒtdƒtdƒgks:t‚| tksFt‚t  dddtddƒg¡\} }|tdƒtdƒtdƒtddƒgksˆt‚| tks”t‚d S )Nr   r   r   r   )r   Z
get_domainr	   r   r   r
   )rG   Úitemsr$   r$   r%   Útest_DomainMatrix_get_domain³   s    $&rT   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sbt‚|  d ¡}|| kr||| k	s€t‚d S r   )r   r	   Ú
convert_tor
   r   )r#   ÚAqZAcopyr$   r$   r%   Útest_DomainMatrix_convert_to½   s
    (
0
rW   c                  C   sB   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ |  t¡ks>t‚d S r   )r   r	   Zto_sympyrU   r   r   r9   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s`t‚d S r   )r   r	   Zto_fieldr
   r   )r#   rV   r$   r$   r%   Útest_DomainMatrix_to_fieldÊ   s    (rY   c                  C   sT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ }|jdddœdddœdœksPt‚d S )Nr   r   r   r   r   r'   )r   r	   Ú	to_sparser   r   )r#   ZA_sparser$   r$   r%   Útest_DomainMatrix_to_sparseÐ   s    (r[   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sHt‚d S )Nr   r   r'   r   r   r   )r   r	   Úto_denser   r   r   )r#   ZA_denser$   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sft‚|  |¡||fks|t‚| | ¡||fks’t‚| |¡||fks¨t‚t dtdƒidtdƒidœdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰ ˆ ˆ¡ˆˆfks
t‚ˆ  ˆ ¡ˆ ˆ fks"t‚ˆjˆ dd	\}}|jtddgddggdtƒksXt‚|jtddgddggdtƒks|t‚ˆjˆ d
d	\}}|jtddiddidœdtƒks´t‚|jtdddœdddœdœdtƒksÞt‚tt	‡ ‡fdd„ƒ d S )Nr   r   r   r   r   r   r'   r/   r0   r.   c                      s   ˆj ˆ ddS )Nr2   r0   )Úunifyr$   ©ÚAdÚAsr$   r%   r*   ò   r+   z)test_DomainMatrix_unify.<locals>.<lambda>)
r   r	   r
   r^   r   r   r   r   r   r5   )ÚAzrV   ZBsZBdr$   r_   r%   Útest_DomainMatrix_unifyÜ   s"    (("($$&*rc   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sHt‚d S r   )r   r	   Z	to_Matrixr   r   r9   r$   r$   r%   Útest_DomainMatrix_to_Matrixõ   s    (rd   c                  C   sX   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒgtdƒtdƒggksTt‚d S r   )r   r	   Zto_listr   r9   r$   r$   r%   Útest_DomainMatrix_to_listú   s    (re   c                  C   sT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgksPt‚d S r   )r   r	   Zto_list_flatr   r9   r$   r$   r%   Útest_DomainMatrix_to_list_flatÿ   s    (rf   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sRt‚d S )Nr   r   r   r   r   )©r   r   r'   ©r   r   r-   )r   r	   Zto_dokr   r9   r$   r$   r%   Útest_DomainMatrix_to_dok  s    (ri   c                  C   s<   t tdƒtdƒgtdƒtdƒggdtƒ} t| ƒdks8t‚d S )Nr   r   r   r   r   z*DomainMatrix([[1, 2], [3, 4]], (2, 2), ZZ))r   r	   Úreprr   r9   r$   r$   r%   Útest_DomainMatrix_repr	  s    (rk   c                  C   sd   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}|  ¡ |ks`t‚d S r   )r   r	   Z	transposer   )r#   ÚATr$   r$   r%   Útest_DomainMatrix_transpose  s    ((rm   c                  C   sT   t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgksPt‚d S r   )r   r	   Zflatr   r9   r$   r$   r%   Útest_DomainMatrix_flat  s    (rn   c                  C   sH   t tdƒggdtƒ} t tdƒggdtƒ}| jdks6t‚|jdksDt‚d S )Nr   r-   r   FT)r   r	   Zis_zero_matrixr   ©r#   rO   r$   r$   r%   Ú test_DomainMatrix_is_zero_matrix  s    rp   c                  C   sp   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}| jdks^t‚|jdkslt‚d S )	Nr   r   r   r   r   r   TF)r   r	   Zis_upperr   ro   r$   r$   r%   Útest_DomainMatrix_is_upper   s    ((rq   c                  C   sp   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}| jdks^t‚|jdkslt‚d S )	Nr   r   r   r   r   r   TF)r   r	   Zis_lowerr   ro   r$   r$   r%   Útest_DomainMatrix_is_lower'  s    ((rr   c                  C   s~   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ}| jd	kslt‚|jd
kszt‚d S )Nr   r   r   r   r   r<   é   ©r   r   TF)r   r	   Z	is_squarer   ro   r$   r$   r%   Útest_DomainMatrix_is_square.  s    (6ru   c                  C   sJ   t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ} |  ¡ dksFt‚d S )Nr   r   r   r   rs   é   rt   )r   r
   Zrankr   r9   r$   r$   r%   Útest_DomainMatrix_rank5  s    6rw   c                     s(  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} ˆ ˆ  ˆ  ˆ ¡  krn| kstn t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ddgddgg‰tt‡ ‡fdd	„ƒ tt‡ ‡fd
d	„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒggdtƒ‰tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ}ˆˆ |ksðt‚ˆˆ |kst‚tt‡‡fdd	„ƒ tt‡‡fdd	„ƒ t dtdƒidtdƒidœdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰ˆˆ }ˆˆ }|t ddgddggdtƒks¦t‚|j	t
ddgddggdtƒksÊt‚|t ddgddggdtƒksìt‚|j	t
ddgddggdtƒkst‚tt‡‡fdd	„ƒ d S )Nr   r   r   r   r   rs   rv   c                      s   ˆ ˆ S r7   r$   r$   ©r#   ÚLr$   r%   r*   A  r+   z'test_DomainMatrix_add.<locals>.<lambda>c                      s   ˆˆ  S r7   r$   r$   rx   r$   r%   r*   B  r+   r=   c                      s   ˆ ˆ S r7   r$   r$   ©ÚA1ÚA2r$   r%   r*   F  r+   c                      s   ˆˆ  S r7   r$   r$   rz   r$   r%   r*   G  r+   c                      s
   ˆ   ˆ¡S r7   ©Úaddr$   rz   r$   r%   r*   H  r+   c                      s
   ˆ  ˆ ¡S r7   r}   r$   rz   r$   r%   r*   I  r+   c                      s
   ˆ  ˆ ¡S r7   r}   r$   ©rV   rb   r$   r%   r*   P  r+   c                      s
   ˆ   ˆ¡S r7   r}   r$   r   r$   r%   r*   Q  r+   r   r'   r<   c                      s
   ˆ  ˆ ¡S r7   r}   r$   r_   r$   r%   r*   \  r+   )r   r	   r~   r   r   r4   r   r
   r   r   r   r   )rO   ZAsumÚAsdÚAdsr$   )r#   r{   r|   r`   rV   ra   rb   ry   r%   Útest_DomainMatrix_add:  s:    (($((((("("$"$r‚   c                     sò  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} ˆ ˆ  ˆ  ˆ ¡  krn| kstn t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ddgddgg‰tt‡ ‡fdd„ƒ tt‡ ‡fd	d„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒggd
tƒ‰tt‡‡fdd„ƒ tt‡‡fdd„ƒ tt‡‡fdd„ƒ tt‡‡fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ}ˆˆ |ksðt‚ˆˆ |kst‚tt‡‡fdd„ƒ tt‡‡fdd„ƒ t dtdƒidtdƒidœdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}|| }|| }|t ddgddggdtƒks¦t‚|j	t
ddgddggdtƒksÊt‚|| ksÚt‚|j	|j	 ksît‚d S )Nr   r   r   r   r   r   c                      s   ˆ ˆ S r7   r$   r$   rx   r$   r%   r*   f  r+   z'test_DomainMatrix_sub.<locals>.<lambda>c                      s   ˆˆ  S r7   r$   r$   rx   r$   r%   r*   g  r+   r=   c                      s   ˆ ˆ S r7   r$   r$   rz   r$   r%   r*   k  r+   c                      s   ˆˆ  S r7   r$   r$   rz   r$   r%   r*   l  r+   c                      s
   ˆ   ˆ¡S r7   ©Úsubr$   rz   r$   r%   r*   m  r+   c                      s
   ˆ  ˆ ¡S r7   rƒ   r$   rz   r$   r%   r*   n  r+   c                      s
   ˆ  ˆ ¡S r7   rƒ   r$   r   r$   r%   r*   u  r+   c                      s
   ˆ   ˆ¡S r7   rƒ   r$   r   r$   r%   r*   v  r+   r'   éÿÿÿÿéüÿÿÿ)r   r	   r„   r   r   r4   r   r
   r   r   r   )rO   ZAdiffra   r`   r€   r   r$   )r#   r{   r|   rV   rb   ry   r%   Útest_DomainMatrix_sub_  s8    (($((((("("$r‡   c                  C   st   t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}|  |  ¡   krj|kspn t‚d S )
Nr   r   r   r   r   r…   éþÿÿÿéýÿÿÿr†   )r   r	   Únegr   )r#   ZAnegr$   r$   r%   Útest_DomainMatrix_negƒ  s    ((r‹   c                     sŠ  t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtd	ƒggdtƒ} ˆ ˆ  ˆ  ˆ ¡  krn| kstn t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ ddgddgg‰tt‡ ‡fd
d„ƒ tt‡ ‡fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtdƒggdtƒ‰t tdƒtdƒgtdƒtd	ƒggdtƒ}ˆˆ |ks^t‚ˆˆ |kspt‚tt‡‡fdd„ƒ tt‡‡fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ}tdƒ}ˆ | |ˆ    kr"ˆ  |¡  kr"|ks(n t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t  	dt¡}tdƒ}ˆ | |ˆ    kršˆ  |¡ 
¡   krš|ks n t‚t dtdƒidtdƒidœdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}|| }|| }|t ddgddggdtƒkst‚|jtddgddggdtƒks@t‚|t ddgddggdtƒksbt‚|jtddgddggdtƒks†t‚d S )Nr   r   r   r   r   r;   é
   é   é   c                      s   ˆ ˆ S r7   r$   r$   rx   r$   r%   r*     r+   z'test_DomainMatrix_mul.<locals>.<lambda>c                      s   ˆˆ  S r7   r$   r$   rx   r$   r%   r*   ‘  r+   c                      s
   ˆ  ˆ ¡S r7   ©Úmatmulr$   r   r$   r%   r*   ˜  r+   c                      s
   ˆ   ˆ¡S r7   r   r$   r   r$   r%   r*   ™  r+   rs   rv   r   r'   )r   r	   r   r   r   r4   r
   r   ÚmulÚzerosrZ   r   r   )r|   ZAprodZAAÚxra   r`   r€   r   r$   )r#   rV   rb   ry   r%   Útest_DomainMatrix_mul‰  s<    (($((((((8(<"("$"r”   c                  C   s    t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒgtdƒtdƒggdtƒ}|  |¡|ksŠt‚| | ¡|ksœt‚d S )Nr   r   r   r   r   rv   )r   r	   Zmul_elementwiser   rN   r$   r$   r%   Ú!test_DomainMatrix_mul_elementwise°  s
    (((r•   c                     sp  t  dt¡} t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtd	ƒggdtƒ}t td
ƒtdƒgtdƒtdƒggdtƒ}ˆ d ˆ  d¡  kr¢| ks¨n t‚ˆ d ˆ  d¡  krÆˆ ksÌn t‚ˆ d ˆ  d¡  krê|ksðn t‚ˆ d ˆ  d¡  kr|ksn t‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t  dt¡‰ tt	‡ fdd„ƒ d S )Nr   r   r   r   r   r;   rŒ   r   rŽ   é%   é6   éQ   év   r   c                      s   ˆ t ddƒ S ©Nr   r   rI   r$   r9   r$   r%   r*   Â  r+   z'test_DomainMatrix_pow.<locals>.<lambda>c                      s   ˆ d S ©Nr…   r$   r$   r9   r$   r%   r*   Ã  r+   c                      s
   ˆ   d¡S r›   )Úpowr$   r9   r$   r%   r*   Ä  r+   ©r   r   c                      s   ˆ d S )Nr   r$   r$   r9   r$   r%   r*   Ç  r+   )
r   Úeyer	   rœ   r   r   r4   ÚNotImplementedErrorr’   r   )rž   r|   ZA3r$   r9   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sht‚qhd S )Nr   r   r   r   r   ©r   r   )r   r	   rZ   r   Zsccr   )r`   ra   ZAddmZAsdmr#   r$   r$   r%   Útest_DomainMatrix_sccÊ  s    þ þr¢   c                     s  t g dtƒ} |  ¡ | dfks t‚t tdƒggdtƒ} |  ¡ | dfksHt‚t tdƒggdtƒ} |  ¡ | dfkspt‚t tdƒtdƒgtdƒtd	ƒggd
tƒ} |  ¡ \}}|t tdƒtdƒgtdƒtdƒggd
tƒksÔt‚|dksàt‚t tdƒtdƒgtdƒtd	ƒggd
tƒ} |  ¡ \}}|t tdƒtdƒgtdƒtdƒggd
tƒksFt‚|dksTt‚t tdƒtdƒgtdƒtd	ƒggd
tƒ} |  ¡ \}}|t tdƒtdƒgtdƒtdƒggd
tƒksºt‚|dksÈt‚t tdƒtdƒgtdƒtd	ƒggd
tƒ‰ tt‡ fdd„ƒ d S )Nr'   r$   r   r-   )r   r   r   r   r   r   )r   c                      s   ˆ   ¡ S r7   )Úrrefr$   ©rb   r$   r%   r*   ï  r+   z(test_DomainMatrix_rref.<locals>.<lambda>)r   r
   r£   r   r	   r   r   )r#   ZArZpivotsr$   r¤   r%   Útest_DomainMatrix_rrefÕ  s(    (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slt‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ‰ tt‡ fdd	„ƒ t tdƒtdƒtdƒgtdƒtdƒtdƒggdtd
d} t tdƒtdƒdœtdƒtdƒdœdœdtƒ}|  ¡ |ks*t‚d S )Nr   r…   r   rˆ   r   ©r   r   r   c                      s   ˆ   ¡ S r7   )Úcolumnspacer$   r¤   r$   r%   r*   ø  r+   z/test_DomainMatrix_columnspace.<locals>.<lambda>r.   r0   r'   )r   r
   r§   r   r	   r   r   )r#   ZAcolr$   r¤   r%   Útest_DomainMatrix_columnspaceò  s    4(48.r¨   c                     sÖ   t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} |  ¡ | ksDt‚t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ‰ tt‡ fdd„ƒ t tdƒtdƒtdƒgtdƒtdƒtdƒggdtd	d
} |  ¡ | ksÒt‚d S )Nr   r…   r   rˆ   r   r¦   c                      s   ˆ   ¡ S r7   )Úrowspacer$   r¤   r$   r%   r*     r+   z,test_DomainMatrix_rowspace.<locals>.<lambda>r.   r0   )r   r
   r©   r   r	   r   r   r9   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sRt‚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=   c                      s   ˆ   ¡ S r7   )Ú	nullspacer$   r¤   r$   r%   r*     r+   z-test_DomainMatrix_nullspace.<locals>.<lambda>)r   r
   r«   r   r	   r   r   )r#   Z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~t‚t tdƒgtdƒgtdƒggd	tƒ‰tt‡ ‡fd
d„ƒ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd„ƒ d S )Nr   r   r   r   r   r   r=   rˆ   r>   c                      s
   ˆ   ˆ¡S r7   ©Ú_solver$   )r#   Úb3r$   r%   r*     r+   z)test_DomainMatrix_solve.<locals>.<lambda>c                      s
   ˆ   ˆ¡S r7   r­   r$   )r#   Úbzr$   r%   r*     r+   )r   r
   r®   r   r   r   r	   r   )ÚbZ
particularr«   r$   )r#   r¯   r°   r%   Útest_DomainMatrix_solve  s    ($r²   c                     s$  t g dtƒ} |  ¡ | kst‚t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtddƒtddƒggdtƒ}|  ¡ |ks€t‚t tdƒtdƒgtdƒtdƒggdtƒ‰tt‡fd	d
„ƒ t tdƒtdƒggdtƒ‰tt‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ tt‡ fdd
„ƒ d S )Nrg   r   r   r   r   r   rˆ   r…   c                      s   ˆ   ¡ S r7   ©Úinvr$   r¤   r$   r%   r*   +  r+   z'test_DomainMatrix_inv.<locals>.<lambda>r=   c                      s   ˆ   ¡ S r7   r³   r$   ©ÚAnsr$   r%   r*   .  r+   rs   c                      s   ˆ   ¡ S r7   r³   r$   )ÚAninvr$   r%   r*   1  r+   )	r   r
   r´   r   r	   r   r   r   r   )r#   ZAinvr$   )r·   r¶   rb   r%   Útest_DomainMatrix_inv"  s    (,((r¸   c                     s   t g dtƒ} |  ¡ dkst‚t dggdtƒ} |  ¡ dks<t‚t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒksxt‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} |  ¡ tdƒksÔt‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} |  ¡ tdƒks2t‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒksœt‚d S )Nrg   r   r-   r   r   r   r   rˆ   r<   r¡   r…   r   r=   c                      s   ˆ   ¡ S r7   )Údetr$   rµ   r$   r%   r*   E  r+   z'test_DomainMatrix_det.<locals>.<lambda>)r   r	   r¹   r   r
   r   r   r9   r$   rµ   r%   Útest_DomainMatrix_det4  s    (HH(rº   c                     s  t g dtƒ‰ ˆ  ¡ ˆ ˆ g fks"t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fks´t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}d	g}ˆ  ¡ | ||fksJt‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fksÞt‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fksrt‚t tdƒtdƒtdƒgtdƒtd
ƒtdƒggdtƒ‰ t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fkst‚t tdƒtdƒgtdƒtdƒgtd
ƒtdƒggdtƒ‰ t tdƒtdƒtdƒgtdƒtdƒtdƒgtd
ƒtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ}g }ˆ  ¡ | ||fksît‚ddddgddddgddddgddddgg‰ ddddgddddgddddgddddgg} ddddgddddgddddgddddgg}dd„ }t |ˆ tƒdtƒ‰ t || tƒdtƒ} t ||tƒdtƒ}ˆ  ¡ | |g fksÈt‚t tdƒtdƒgtdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nrg   r   r   r   r   r   r   rˆ   r'   r<   rs   r¦   r‰   iúÿÿÿrt   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©rA   r$   r%   Ú
<listcomp>y  s     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$   )ÚrowsrA   r$   r½   r%   r*   y  r+   z&test_DomainMatrix_lu.<locals>.<lambda>)r   r   c                      s   ˆ   ¡ S r7   )Úlur$   r9   r$   r%   r*   €  r+   )r   r
   rÁ   r   r	   r   r   )ry   ÚUZswapsZto_domr$   r9   r%   Útest_DomainMatrix_luK  sb    ((((((((((((4(46ý ý6,,,(rÃ   c                     sV  t g dtƒ ‰  ‰} ˆ  ˆ¡| ks&t‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ksšt‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| kst‚t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fd	d
„ƒ t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒgtdƒggdtƒ‰t tdƒgtddƒggdtƒ} ˆ  ˆ¡| ksôt‚t tdƒtdƒgtdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒgtdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒggdtƒ‰ t tdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒgtdƒggdtƒ‰tt‡ ‡fdd
„ƒ t tdƒtdƒgtdƒtdƒggdtƒ‰ t tdƒtdƒggdtƒ‰tt	‡ ‡fdd
„ƒ d S )Nrg   r   r   r   r   r   r   r   c                      s
   ˆ   ˆ¡S r7   ©Úlu_solver$   ©r#   r±   r$   r%   r*   —  r+   z,test_DomainMatrix_lu_solve.<locals>.<lambda>r<   rs   rt   r>   c                      s
   ˆ   ˆ¡S r7   rÄ   r$   rÆ   r$   r%   r*   ¢  r+   r=   r-   c                      s
   ˆ   ˆ¡S r7   rÄ   r$   rÆ   r$   r%   r*   §  r+   c                      s
   ˆ   ˆ¡S r7   rÄ   r$   rÆ   r$   r%   r*   ¬  r+   c                      s
   ˆ   ˆ¡S r7   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                     s:  t g dtƒ} |  ¡ tdƒgks"t‚t dggdtƒ} |  ¡ tdƒtdƒgksNt‚t tdƒtdƒgtdƒtdƒggdtƒ} |  ¡ tdƒtd	ƒtd
ƒgks˜t‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒggdtƒ} |  ¡ tdƒtdƒtdƒtdƒgks
t‚t tdƒtdƒggdtƒ‰ tt‡ fdd„ƒ d S )Nrg   r   r-   r…   r   r   r   r   éûÿÿÿrˆ   r<   rs   r;   rv   é	   r¡   iñÿÿÿiîÿÿÿr   r=   c                      s   ˆ   ¡ S r7   )Úcharpolyr$   rµ   r$   r%   r*   Â  r+   z,test_DomainMatrix_charpoly.<locals>.<lambda>)r   r	   rË   r   r
   r   r   r9   r$   rµ   r%   Útest_DomainMatrix_charpoly´  s    ("H*rÌ   c                  C   sB   t  dt¡} | jt dt¡ks"t‚| jdks0t‚| jtks>t‚d S )Nr   r¡   )r   rž   r
   r   r   r   r    r!   r9   r$   r$   r%   Útest_DomainMatrix_eyeÅ  s    rÍ   c                  C   sB   t  dt¡} | jt dt¡ks"t‚| jdks0t‚| jtks>t‚d S )Nr=   )r   r’   r
   r   r   r   r    r!   r9   r$   r$   r%   Útest_DomainMatrix_zerosÌ  s    rÎ   c                  C   sB   t  dt¡} | jt dt¡ks"t‚| jdks0t‚| jtks>t‚d S )Nr¦   )r   Zonesr
   r   r   r   r    r!   r9   r$   r$   r%   Útest_DomainMatrix_onesÓ  s    rÏ   c                  C   sŠ   t dtdƒidtdƒidœdtƒ} t  tdƒtdƒgt¡| ksBt‚t dtdƒidtdƒidœdtƒ} t  tdƒtdƒgtd¡| ks†t‚d S )Nr   r   r   r   r'   r   )r   r   )r   r	   Zdiagr   r9   r$   r$   r%   Útest_DomainMatrix_diagÚ  s    " "rÐ   c               	   C   s>  t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}t td
ƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒtdƒtdƒgtdƒtdƒtdƒtd	ƒggdtƒ}t tdƒtdƒtdƒtdƒtd
ƒtdƒgtdƒtdƒtdƒtd	ƒtdƒtdƒggdtƒ}|  |¡|ks$t‚|  ||¡|ks:t‚d S )Nr   r   r   r   r   r<   rs   r;   rv   rÊ   rŒ   é   é   ©r   r   )r   rs   )r   r	   Zhstackr   ©r#   rO   rP   ZABÚABCr$   r$   r%   Útest_DomainMatrix_hstackâ  s&    (((þ þ&&þ þrÖ   c               	   C   sJ  t tdƒtdƒgtdƒtdƒggdtƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}t td
ƒtdƒgtdƒtdƒggdtƒ}t tdƒtdƒgtdƒtdƒgtdƒtdƒgtdƒtd	ƒggdtƒ}t tdƒtdƒgtdƒtdƒgtdƒtdƒgtdƒtd	ƒgtd
ƒtdƒgtdƒtdƒggdtƒ}|  |¡|ks0t‚|  ||¡|ksFt‚d S )Nr   r   r   r   r   r<   rs   r;   rv   rÊ   rŒ   rÑ   rÒ   )r   r   )rs   r   )r   r	   Zvstackr   rÔ   r$   r$   r%   Útest_DomainMatrix_vstackñ  s2    (((ü üú ú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sJt‚d S )Nr   r   r=   r   c                 S   s   d|  S )Nr   r$   rÇ   r$   r$   r%   r*   	  r+   z-test_DomainMatrix_applyfunc.<locals>.<lambda>)r   r	   Z	applyfuncr   ro   r$   r$   r%   Útest_DomainMatrix_applyfunc  s    rØ   c                     s4  t tdƒtdƒgtdƒtdƒggdtƒ‰ ttdƒtdƒ tƒ} ˆ |  t tddƒtdƒgtddƒtdƒggdtƒksvt‚ˆ d t tdƒtdƒgtdƒtdƒggdtƒksªt‚dˆ  t tdƒtdƒgtdƒtdƒggdtƒksÞt‚ˆ ttd	ƒtƒ t i dtƒkst‚ˆ ttdƒtƒ ˆ kst‚tt‡ fd
d„ƒ d S )Nr   r   r   r   r   rÊ   rs   rv   r   c                      s   ˆ d S ©Ng      ø?r$   r$   r9   r$   r%   r*     r+   z-test_DomainMatrix_scalarmul.<locals>.<lambda>)r   r	   r   r
   r   r   r4   )Úlamdar$   r9   r%   Útest_DomainMatrix_scalarmul  s    (844$rÛ   c                     sl  t  tddgddggƒ¡‰ ttdƒtdƒ tƒ} ˆ |  t tddƒtddƒdœtdƒtddƒdœdœdtƒkspt‚ttdƒtƒ}ˆ | t tdƒtdƒdœtdƒtdƒdœdœdtƒks¸t‚ˆ d t tdƒtdƒdœtdƒtdƒdœdœdtƒksòt‚ˆ d t tddƒtdƒdœtddƒtdƒdœdœdtƒks2t‚tt‡ fdd	„ƒ tt	‡ fd
d	„ƒ tt‡ fdd	„ƒ d S )Nr   r   r   r   r'   rv   r   c                      s   ˆ d S ©Nr   r$   r$   r9   r$   r%   r*   "  r+   z+test_DomainMatrix_truediv.<locals>.<lambda>c                      s   ˆ d S rÙ   r$   r$   r9   r$   r%   r*   #  r+   c                      s   ˆ t tdƒtƒ S rÜ   )r   r	   r$   r9   r$   r%   r*   $  r+   )
r   rL   r   r   r
   r   r	   r   ÚZeroDivisionErrorr4   )rÚ   r±   r$   r9   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|t‚ˆ dd d…f t tdƒggdtƒks¤t‚ˆ d d…d d…f t tdƒggdtƒksÐt‚ˆ d d…dd…f t tdƒtdƒgtdƒtdƒggdtƒkst‚ˆ d d …df t tdƒgtdƒgtd	ƒggdtƒksLt‚ˆ dd d …f t tdƒtdƒtd	ƒggdtƒks‚t‚ˆ d d d…d d …f t tdƒtdƒtd	ƒgtdƒtdƒtdƒgtdƒtdƒtdƒggd
tƒksæt‚tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ d ttdƒtƒks&t‚ˆ d ttdƒtƒksBt‚ˆ d ttdƒtƒks^t‚ˆ d ttdƒtƒkszt‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ t ddtdƒiidtƒ‰ ˆ d ttdƒtƒksät‚ˆ d ttdƒtƒks t‚t dddiidtƒ‰ ˆ dd …df t dddiidtƒks>t‚tt‡ fd d„ƒ t dtdƒidtdƒid!œdtƒ‰ ˆ d d…d d…f t i dtƒks˜t‚ˆ dd …dd …f t ddiddid"œd
tƒksÌt‚ˆ dd …dd …f t dddiidtƒksút‚ˆ dd …dd …f t i d#tƒks t‚d S )$Nr   r   r   r   r<   rs   r;   rv   rÊ   r¡   rˆ   r   r-   r…   r   r   r>   )r   r   c                      s   ˆ dd d…f S )Nr   rˆ   r$   r$   ©ÚdMr$   r%   r*   8  r+   z+test_DomainMatrix_getitem.<locals>.<lambda>c                      s   ˆ d d…df S )Nrˆ   r   r$   r$   rß   r$   r%   r*   9  r+   r=   )rˆ   r   )r   rˆ   )r…   r‰   c                      s   ˆ d S )Nr¡   r$   r$   rß   r$   r%   r*   @  r+   c                      s   ˆ d S )Nr?   r$   r$   rß   r$   r%   r*   A  r+   c                      s   ˆ d S )N)r…   r†   r$   r$   rß   r$   r%   r*   B  r+   )rŒ   rŒ   ©r<   r<   rg   c                      s   ˆ d S )N©r   r   r$   r$   rß   r$   r%   r*   J  r+   rÓ   )r   r   râ   )r   r	   r   r   Ú
IndexErrorr   r$   r$   rß   r%   Útest_DomainMatrix_getitem'  sT    ý ý4(,B:6ý ý*"&4.rä   c                  C   sb   t dtdƒidtdƒidœdtƒ} |  dd¡}|tjks<t‚|  dd¡}|dkrZt|tƒs^t‚d S )Nr   r   r   rÓ   rá   r   )r   r	   Zgetitem_sympyr   ZZeror   Ú
isinstancer   )rà   Zval1Zval2r$   r$   r%   Útest_DomainMatrix_getitem_sympyS  s
    "ræ   c                     sŽ  t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtd	ƒggd
tƒ} t tdƒtdƒgtdƒtd	ƒggdtƒ}|  ddgddg¡|ksŒt‚|  ¡  ddgddg¡| ¡ ks°t‚|  ddgddg¡|ksÌt‚|  ¡  ddgddg¡| ¡ ksðt‚t tdƒtdƒtdƒgtdƒtdƒtdƒgtdƒtdƒtdƒggd
tƒ}|  dddgdddg¡|ksZt‚|  ¡  dddgdddg¡| ¡ ks„t‚g g dfdgg dfg dgdfg}|D ]P\‰‰ }|  ˆˆ ¡t  |t¡ ¡ ksÔt‚|  ¡  ˆˆ ¡t  |t¡ks¨t‚q¨t tdƒtdƒgtdƒtdƒggdtƒ‰dgdgfdgdgfdgdgfdgdgfg}|D ]6\‰‰ tt‡ ‡‡fdd„ƒ tt‡ ‡‡fdd„ƒ qRd S )Nr   r   r   r   r<   rs   r;   rv   rÊ   r¡   r   r   r…   rg   rh   r'   r‰   c                      s   ˆ  ˆˆ ¡S r7   )Úextractr$   ©Úcolsrà   rÀ   r$   r%   r*   {  r+   z+test_DomainMatrix_extract.<locals>.<lambda>c                      s   ˆ  ¡  ˆˆ ¡S r7   )rZ   rç   r$   rè   r$   r%   r*   |  r+   )	r   r	   rç   r   rZ   r’   r\   r   rã   )ZdM1ZdM2ZdM3ÚemptyÚsizeZbad_indicesr$   rè   r%   Útest_DomainMatrix_extract[  sR    ý ýþ þ$$ý ý"*

ý"&(,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sXt‚‡ 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 r7   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$   ©rð   r$   r%   r*   …  r+   z+test_DomainMatrix_setitem.<locals>.<lambda>c                      s   ˆ t ddƒdtdƒƒS rš   )Úslicer	   r$   rñ   r$   r%   r*   †  r+   )r   r	   r   r   r4   rŸ   r$   r$   )rà   rð   r%   Útest_DomainMatrix_setitem  s    "*ró   c                  C   s†   dd l } tdtdƒidtdƒidœdtƒ}|  |  |¡¡|ksBt‚ttdƒtdƒgtdƒtdƒggdtƒ}|  |  |¡¡|ks‚t‚d S )	Nr   r   r   r   rÓ   rá   r   r   )Úpickler   r	   ÚloadsÚdumpsr   )rô   rà   r$   r$   r%   Útest_DomainMatrix_pickling‰  s
    "(r÷   N)[Zsympy.testing.pytestr   Zsympy.core.numbersr   r   Zsympy.core.singletonr   Zsympy.functionsr   Zsympy.matrices.denser   Zsympy.polys.domainsr   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   r&   r6   r:   rB   rH   rK   rM   rQ   rR   rT   rW   rX   rY   r[   r]   rc   rd   re   rf   ri   rk   rm   rn   rp   rq   rr   ru   rw   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%   Ú<module>   sˆ   $	

%$'	81,$
