U
    ZÊ¹jDŸ  ã                	   @   s(  d dl mZmZmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZmZ d dlmZmZmZmZmZ 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" d dl#m$Z$m%Z% d dl&m'Z' d dl(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z1 d dl2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z> d dl?m@Z@ d dlAmBZB d dlCmDZE d dlFmGZGmHZHmIZI dd„ ZJeƒ � G dd„ de)e*e+ƒZKW 5 Q R X dd„ ZLdd„ ZMeƒ � G dd „ d e)e*e,ƒZNW 5 Q R X d!d"„ ZOd#d$„ ZPeƒ � G d%d&„ d&e)e*e-ƒZQW 5 Q R X d'd(„ ZRd)d*„ ZSeƒ � G d+d,„ d,e)e*e.ƒZTW 5 Q R X d-d.„ ZUd/d0„ ZVeƒ � G d1d2„ d2e)e*e/ƒZWW 5 Q R X eƒ � G d3d4„ d4e)e*e1ƒZXW 5 Q R X d5d6„ ZYd7d8„ ZZd9d:„ Z[d;d<„ Z\d=d>„ Z]d?d@„ Z^dAdB„ Z_dCdD„ Z`dEdF„ ZadGdH„ ZbdIdJ„ ZcdKdL„ ZddMdN„ ZedOdP„ ZfdQdR„ ZgdSdT„ ZhdUdV„ ZidWdX„ ZjdYdZ„ Zkd[d\„ Zld]d^„ Zmd_d`„ Zndadb„ Zodcdd„ Zpdedf„ Zqdgdh„ Zrdidj„ Zsdkdl„ Ztdmdn„ Zudodp„ Zvdqdr„ Zwdsdt„ Zxdudv„ Zydwdx„ Zzdydz„ 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œ„ 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¾„ Z�e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ÓS )Ôé    )ÚraisesÚXFAILÚwarns_deprecated_sympy)ÚQ)ÚExpr)ÚAdd)ÚFunction)Ú
NumberKindÚUndefinedKind)ÚIÚIntegerÚooÚpiÚRational)ÚS)ÚSymbolÚsymbols)ÚAbs)Úexp)Úsqrt)ÚcosÚsin)Ú
ShapeErrorÚNonSquareMatrixError)Ú
MatrixKind)Ú_MinimalMatrixÚ_CastableMatrixÚMatrixShapingÚMatrixPropertiesÚMatrixOperationsÚMatrixArithmeticÚMatrixSpecial)ÚMatrixCalculus)ÚMatrixÚdiagÚeyeÚmatrix_multiply_elementwiseÚonesÚzerosÚSparseMatrixÚbandedÚMutableDenseMatrixÚMutableSparseMatrixÚImmutableDenseMatrixÚImmutableSparseMatrix)ÚPoly)Úflatten)ÚImmutableDenseNDimArray)ÚxÚyÚzc                  C   sø   ddl m} m}m}m}m}m}m} ddlm	}m
}m}	m}
m}m} ddlm}m}m}m} | |||||||||	|
||f}||||f}dd„ |D ƒ}d}|D ]V}|D ](}tƒ � t||ƒdksÂt‚W 5 Q R X q¤tƒ � t||ƒd	ksèt‚W 5 Q R X qœd S )
Nr   )ÚMatrixRequiredr   r!   r   r   r    ÚMatrixCommon)ÚMatrixDeterminantÚMatrixReductionsÚMatrixSubspacesÚMatrixEigenr"   ÚMatrixDeprecated)r#   ÚImmutableMatrixr)   r.   c                 S   s    g | ]}|d dgddggƒ‘qS )é   é   é   é   © )Ú.0ÚMrA   rA   úe/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_commonmatrix.pyÚ
<listcomp>Y   s     z5test_matrix_deprecated_isinstance.<locals>.<listcomp>rA   TF)Úsympy.matrices.commonr5   r   r!   r   r   r    r6   Úsympy.matrices.matricesr7   r8   r9   r:   r"   r;   Zsympyr#   r<   r)   r.   r   Ú
isinstanceÚAssertionError)r5   r   r!   r   r   r    r6   r7   r8   r9   r:   r"   r;   r#   r<   r)   r.   Z
all_mixinsZall_matricesZMsÚtZmixinrC   rA   rA   rD   Ú!test_matrix_deprecated_isinstance'   s<    $	 óürK   c                   @   s   e Zd ZdS )ÚShapingOnlyMatrixN©Ú__name__Ú
__module__Ú__qualname__rA   rA   rA   rD   rL   i   s   rL   c                 C   s   t | | dd„ ƒS )Nc                 S   s   t | |kƒS ©N©Úint©ÚiÚjrA   rA   rD   Ú<lambda>n   ó    zeye_Shaping.<locals>.<lambda>©rL   ©ÚnrA   rA   rD   Úeye_Shapingm   s    r\   c                 C   s   t | | dd„ ƒS )Nc                 S   s   dS ©Nr   rA   rT   rA   rA   rD   rW   r   rX   zzeros_Shaping.<locals>.<lambda>rY   rZ   rA   rA   rD   Úzeros_Shapingq   s    r^   c                   @   s   e Zd ZdS )ÚPropertiesOnlyMatrixNrM   rA   rA   rA   rD   r_   v   s   r_   c                 C   s   t | | dd„ ƒS )Nc                 S   s   t | |kƒS rQ   rR   rT   rA   rA   rD   rW   {   rX   z eye_Properties.<locals>.<lambda>©r_   rZ   rA   rA   rD   Úeye_Propertiesz   s    ra   c                 C   s   t | | dd„ ƒS )Nc                 S   s   dS r]   rA   rT   rA   rA   rD   rW      rX   z"zeros_Properties.<locals>.<lambda>r`   rZ   rA   rA   rD   Úzeros_Properties~   s    rb   c                   @   s   e Zd ZdS )ÚOperationsOnlyMatrixNrM   rA   rA   rA   rD   rc   ƒ   s   rc   c                 C   s   t | | dd„ ƒS )Nc                 S   s   t | |kƒS rQ   rR   rT   rA   rA   rD   rW   ˆ   rX   z eye_Operations.<locals>.<lambda>©rc   rZ   rA   rA   rD   Úeye_Operations‡   s    re   c                 C   s   t | | dd„ ƒS )Nc                 S   s   dS r]   rA   rT   rA   rA   rD   rW   Œ   rX   z"zeros_Operations.<locals>.<lambda>rd   rZ   rA   rA   rD   Úzeros_Operations‹   s    rf   c                   @   s   e Zd ZdS )ÚArithmeticOnlyMatrixNrM   rA   rA   rA   rD   rg   �   s   rg   c                 C   s   t | | dd„ ƒS )Nc                 S   s   t | |kƒS rQ   rR   rT   rA   rA   rD   rW   •   rX   z eye_Arithmetic.<locals>.<lambda>©rg   rZ   rA   rA   rD   Úeye_Arithmetic”   s    ri   c                 C   s   t | | dd„ ƒS )Nc                 S   s   dS r]   rA   rT   rA   rA   rD   rW   ™   rX   z"zeros_Arithmetic.<locals>.<lambda>rh   rZ   rA   rA   rD   Úzeros_Arithmetic˜   s    rj   c                   @   s   e Zd ZdS )ÚSpecialOnlyMatrixNrM   rA   rA   rA   rD   rk   �   s   rk   c                   @   s   e Zd ZdS )ÚCalculusOnlyMatrixNrM   rA   rA   rA   rD   rl   ¢   s   rl   c               	   C   s˜  t ddddddddgƒ} | jdks&t‚| jdks4t‚| d dksDt‚| d dksTt‚t| ƒddddddgkspt‚t| dd d …f ƒdddgks’t‚t| d d …df ƒddgks²t‚t| d d …d d …f ƒt| ƒksÖt‚| d d …d d …f | ksòt‚t | ƒ| k�st‚t dddgdddggƒ| k�s&t‚t dddgdddgfƒ| k�sHt‚t dd	gƒ| k�s^t‚t d
ƒ| k�spt‚t ddgddgddggƒ| k�r”t‚d S )Nr>   r?   r=   r@   é   é   ©r=   r=   ©r=   r>   r?   ©r@   rm   rn   )rp   rq   )r   ÚrowsrI   ÚcolsÚlist©r2   rA   rA   rD   Útest__MinimalMatrix¦   s     " $""rv   c                   C   sÞ   t ddgddggƒjttƒks"t‚t ddgddggƒjttƒksDt‚t ddg ƒjttƒks^t‚t tggƒjttƒksxt‚t dt dggƒggƒjttƒksœt‚tdggƒjttƒks¶t‚tdt dggƒggƒjttƒksÚt‚d S )Nr=   r>   r?   r@   r   )r#   Úkindr   r	   rI   r2   r
   r)   rA   rA   rA   rD   Ú	test_kind¹   s    ""$rx   c                  C   sP   t ddddddgƒ} |  ¡ }|jdks*t‚tdƒD ]}|| |d ks2t‚q2d S ©Nr>   r=   r?   r@   )rL   Zvecrs   rI   Úrange)ÚmZm_vecrU   rA   rA   rD   Útest_vecÄ   s
    r|   c                  C   s¬   t dƒ\} }}}t| |g||ggƒ}t| |g||ggƒ}t| |g||ggƒ}t| |g||ggƒ}| ¡ | ¡   kr¢| ¡   kr¢| ¡   kr¢| |||dœks¨n t‚d S )Nza:d)©r   r   ©r   r=   ©r=   r   ro   )r   r+   r-   r,   r.   ZtodokrI   )ÚaÚbÚcÚdÚm1Úm2Úm3Zm4rA   rA   rD   Ú
test_todokÌ   s    0ÿr‡   c                  C   sŠ   t jt jtt t jgttttd gtt j tt dgg} t jt jtt t jttttd tt j tt dg}tdd|ƒ}| ¡ | ks†t	‚d S )Nr>   r?   r@   )
r   ÚOneÚHalfr2   r3   ZZeror4   rL   ÚtolistrI   )ÚlstZflat_lstr{   rA   rA   rD   Útest_tolistÖ   s    82rŒ   c                  C   sR   t ddtjdgdtjgtdggƒ} dtjidtjidtidœ}|  ¡ |ksNt‚d S )Nr?   r>   r   r=   ©r   r=   r>   )rL   r   rˆ   r‰   r2   ZtododrI   )r{   ÚdictrA   rA   rD   Ú
test_tododÜ   s    "r�   c                      s^  t ddddddddddd	g	ƒ‰ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ  d¡ˆ  d¡  krštdddgdddggƒks n t‚ˆ  d¡ˆ  d¡  krÖtddgddgddggƒksÜn t‚ˆ  d¡ˆ  d¡  k�rtdddgddd	ggƒk�sn t‚ˆ  d¡ˆ  d¡  k�rTtddgddgdd	ggƒk�sZn t‚d S )Nr?   r=   r>   r@   rm   rn   é   é   é	   c                      s
   ˆ   d¡S ©Nrm   ©Úrow_delrA   ©ÚerA   rD   rW   ã   rX   z"test_row_col_del.<locals>.<lambda>c                      s
   ˆ   d¡S ©Néûÿÿÿr”   rA   r–   rA   rD   rW   ä   rX   c                      s
   ˆ   d¡S r“   ©Úcol_delrA   r–   rA   rD   rW   å   rX   c                      s
   ˆ   d¡S r˜   rš   rA   r–   rA   rD   rW   æ   rX   éÿÿÿÿéþÿÿÿ)rL   r   Ú
IndexErrorr•   r#   rI   r›   rA   rA   r–   rD   Útest_row_col_delá   s    :<>rŸ   c                  C   s‚   t ddgddggƒ} t dtgtdggƒ}t dtdgtdtgtttggƒ}|  ¡ | gksZt‚| ¡ |gkslt‚| ¡ |gks~t‚d S ©Nr=   r>   r?   )r#   r2   r3   r4   Úget_diag_blocksrI   )r€   r�   r‚   rA   rA   rD   Útest_get_diag_blocks1ï   s     r¢   c                  C   s  t ddgddggƒ} t dtgtdggƒ}t dtdgtdtgtttggƒ}t| ||ƒt| ||ƒt| ||ƒt|||ƒf\}}}}t|j|j|ƒ}t|j|j|ƒ}t|j|j|ƒ}t|j|j|ƒ}| ¡ | ||gksÒt	‚| ¡ | ||gksèt	‚| ¡ | ||gksþt	‚| ¡ |||gk�st	‚d S r    )
r#   r2   r3   r4   r$   rL   rr   rs   r¡   rI   )r€   r�   r‚   ÚAÚBÚCÚDrA   rA   rD   Útest_get_diag_blocks2ø   s     4r§   c                  C   s"   t ddddgƒ} | jdkst‚d S )Nr=   r>   r   ©r=   r>   )rL   ÚshaperI   ©r{   rA   rA   rD   Ú
test_shape  s    r«   c                  C   sh   t dƒ} |  dd¡tdddƒks$t‚tdddd„ ƒ}| dd¡tdƒksLt‚| d	d
¡tdƒksdt‚d S )Nr?   r=   r’   )	r=   r   r   r   r=   r   r   r   r=   r@   c                 S   s   | | S rQ   rA   rT   rA   rA   rD   rW     rX   ztest_reshape.<locals>.<lambda>)r�   )r?   r=   r>   )r?   r@   r>   )r?   r@   rm   r>   rn   ))r   r=   r>   r?   r=   r>   )r?   r@   r>   r?   r@   rm   )r\   Zreshaper#   rI   rL   ©Úm0r„   rA   rA   rD   Útest_reshape  s     ÿÿr®   c                  C   sb   t ddddddddddd	g	ƒ} |  d
¡tdddddgƒks>t‚|  d
¡tdddddgƒks^t‚d S )Nr?   r=   r>   r@   rm   rn   r�   r‘   r’   r   )rL   Úrowr#   rI   Úcolrª   rA   rA   rD   Útest_row_col  s     r±   c                   C   sF   t dƒ tdddgƒ¡tddddgddddgddddggƒksBt‚d S ©Nr?   r�   r=   r   )r\   Zrow_joinr#   rI   rA   rA   rA   rD   Útest_row_join  s    

þÿr³   c                   C   sJ   t dƒ tdddggƒ¡tdddgdddgdddgdddggƒksFt‚d S r²   )r\   Zcol_joinr#   rI   rA   rA   rA   rD   Útest_col_join#  s    
ýÿr´   c                  C   s`   t dddggƒ} tddƒD ]@}dddg}| |d¡ ttdƒ || ¡ d¡ ¡ ƒ|kst‚qd S )Nr@   éüÿÿÿrm   r=   r   r?   )	r#   rz   Úinsertr0   r\   Z
row_insertr°   rŠ   rI   )Zr4rU   ÚlrA   rA   rD   Útest_row_insert+  s
    
r¸   c                  C   s  t dddgƒ} tddƒD ]@}dddg}| |d¡ ttdƒ || ¡ d¡ ¡ ƒ|kst‚qt	dƒ dt ddgddgddgddgddgddggƒ¡t ddddddddgddddddddgddddddddgddddddddgddddddddgddddddddggƒk�st‚d S )	Nr@   rµ   rm   r   r?   rn   r>   r=   )
r#   rz   r¶   r0   r^   Z
col_insertr¯   rŠ   rI   r\   )Zc4rU   r·   rA   rA   rD   Útest_col_insert3  s    
(6ûÿr¹   c                
      s¸   t dddd„ ƒ‰ ˆ  dddgddg¡tdddddddd	gƒksBt‚ˆ  ddgdddg¡tdddddddd
gƒkstt‚ˆ  tdƒtdƒ¡ˆ ks�t‚tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr@   r?   c                 S   s   | d | S ©Nr?   rA   rT   rA   rA   rD   rW   D  rX   ztest_extract.<locals>.<lambda>r   r=   r>   r’   é
   é   c                      s   ˆ   dgdg¡S )Nr@   r   ©ÚextractrA   rª   rA   rD   rW   H  rX   c                      s   ˆ   dgdg¡S )Nr   r?   r½   rA   rª   rA   rD   rW   I  rX   )rL   r¾   r#   rI   rz   r   rž   rA   rA   rª   rD   Útest_extractC  s    22r¿   c                     s:  t dddd„ ƒ‰ t dddd„ ƒ‰ˆ ˆ  ˆ ¡ks2t‚ˆ  ˆ ˆ ˆ ¡t  ˆ ˆ ˆ ¡  kr®tdddddddddg	ddd	ddd	ddd	g	d
ddd
ddd
ddg	dddddddddg	gƒks´n t‚tt‡ ‡fdd„ƒ t ¡ tƒ ksÚt‚t dd¡} t dd¡}t dd¡}t dd¡}t  | |||¡‰ ˆ jdk�r2ˆ jd
k�s6t‚d S )Nr@   r?   c                 S   s   | d | S rº   rA   rT   rA   rA   rD   rW   M  rX   ztest_hstack.<locals>.<lambda>c                 S   s   | d | S rº   rA   rT   rA   rA   rD   rW   N  rX   r   r=   r>   rm   rn   r�   r‘   r’   r»   r¼   c                      s   ˆ   ˆ ˆ¡S rQ   )ÚhstackrA   ©r{   r…   rA   rD   rW   U  rX   )	rL   rÀ   rI   r#   r   r   r(   rr   rs   )ÚM1ÚM2ZM3ZM4rA   rÁ   rD   Útest_hstackL  s"    "ürÄ   c                      sî   t dddd„ ƒ‰ t dddd„ ƒ‰ˆ ˆ  ˆ ¡ks2t‚ˆ  ˆ ˆ ˆ ¡t  ˆ ˆ ˆ ¡  kr¾tdddgddd	gd
ddgdddgdddgddd	gd
ddgdddgdddgddd	gd
ddgdddggƒksÄn t‚tt‡ ‡fdd„ƒ t ¡ tƒ ksêt‚d S )Nr@   r?   c                 S   s   | d | S rº   rA   rT   rA   rA   rD   rW   b  rX   ztest_vstack.<locals>.<lambda>c                 S   s   | d | S rº   rA   rT   rA   rA   rD   rW   c  rX   r   r=   r>   rm   rn   r�   r‘   r’   r»   r¼   c                      s   ˆ   ˆ ˆ¡S rQ   )ÚvstackrA   rÁ   rA   rD   rW   r  rX   )rL   rÅ   rI   r#   r   r   rA   rA   rÁ   rD   Útest_vstacka  s&    "ôrÆ   c               	   C   sT   t ddddtddt  gƒ} |  ¡ tjtdƒtjthks<t‚|  t¡thksPt‚d S ©Nr>   r=   )r_   r2   Zatomsr   rˆ   ZNegativeOnerI   r   rª   rA   rA   rD   Ú
test_atomsw  s     rÈ   c                   C   s    t tgdggƒjthkst‚d S r]   )r_   r2   Zfree_symbolsrI   rA   rA   rA   rD   Útest_free_symbols}  s    rÉ   c                  C   s\   t ttfdfƒ} |  t¡st‚|  t¡r,t‚|  t¡s:t‚t dtfdfƒ} |  t¡rXt‚d S )N)r>   r?   r>   )r_   r2   r3   ÚhasrI   r4   r   ©r£   rA   rA   rD   Útest_has�  s    rÌ   c                  C   s  t dƒ} tddddgƒ ¡ dks$t‚tddd| d d|   d t| d d  d| t t |  t dg	ƒ}| ¡ dksxt‚|jdd�dksŒt‚|jd	d
„ d�dks¤t‚tdddd„ |D ƒƒ}|jdd�dksÎt‚tdddd„ tjgt|ƒdd …  D ƒƒ}| ¡ dk�s
t‚d S )Nr2   r>   r=   Fr?   r   T©Úsimplifyc                 S   s   | S rQ   rA   ru   rA   rA   rD   rW   ‘  rX   z(test_is_anti_symmetric.<locals>.<lambda>c                 S   s   g | ]}|  ¡ ‘qS rA   ©Úexpand©rB   r2   rA   rA   rD   rE   “  s     z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS rA   rÏ   rÑ   rA   rA   rD   rE   •  s     )r   r_   Zis_anti_symmetricrI   r3   r   rˆ   rt   )r2   r{   rA   rA   rD   Útest_is_anti_symmetric‹  s    D*rÒ   c                  C   s~  t ddddddgƒ} |  ¡ r t‚|  ¡ s,t‚| jdd�s<t‚t ddddddgƒ} |  ¡ s\t‚t ddtdddƒƒ} |  ¡ s|t‚|  ¡ sˆt‚t dddddddddddg	ƒ} | tdddƒksºt‚t ddtddƒƒ} |  ¡ rØt‚|  ¡ sät‚t dƒ} |  ¡ søt‚t dƒ} |  ¡ �st‚tdddtd dt  d ttd d ddtddg	ƒ} |  ¡ �sRt‚| jdd��rdt‚|  	¡ jdd��szt‚d S )	Nr>   r   r=   FrÍ   r?   ))rm   r   ©r   rn   r}   ))rm   r   r   )r   rn   r   )
r_   Zis_diagonalrI   Úis_symmetricr$   r(   r#   r2   r3   rÐ   rª   rA   rA   rD   Útest_diagonal_symmetrical™  s,    6rÕ   c                  C   s”   t dtgt dggƒ} | js t‚t dt tgt dggƒ} | jdksHt‚t ttgt dggƒ} | jd kslt‚t tdgt dggƒ} | jdks�t‚d S )Nr=   r>   F)r_   r   Zis_hermitianrI   r2   ©r€   rA   rA   rD   Útest_is_hermitian¹  s    
r×   c                   C   sL   t dƒjst‚ttdƒƒjr t‚ttdƒƒjr2t‚tdddggƒjrHt‚d S )Nr?   r=   r   )ra   Zis_IdentityrI   r_   r(   r'   rA   rA   rA   rD   Útest_is_IdentityÄ  s    rØ   c                  C   s
  t ttgttggƒ} |  ¡ dks$t‚t ddddgdddd	ggƒ} |  ¡ d
ksPt‚t ddddgddtd	ggƒ} |  ¡ dks|t‚t dtdggƒ} |  ¡ dksœt‚t dddggƒ} |  ¡ d
ks¼t‚t dgtgdggƒ} |  ¡ dksàt‚t dgdgdggƒ} |  ¡ d
k�st‚d S )NTr=   r>   r?   r@   rm   rn   r�   r‘   F)r_   r2   Zis_symbolicrI   rÖ   rA   rA   rD   Útest_is_symbolicÌ  s    rÙ   c                  C   sD   t dddggƒ} | jdkst‚t dgdgdggƒ} | jdks@t‚d S )Nr=   r>   r?   TF)r_   Zis_upperrI   rÖ   rA   rA   rD   Útest_is_upperÝ  s    rÚ   c                  C   sD   t dddggƒ} | jdkst‚t dgdgdggƒ} | jdks@t‚d S )Nr=   r>   r?   FT)r_   Zis_lowerrI   rÖ   rA   rA   rD   Útest_is_lowerä  s    rÛ   c                  C   s<   t dgdggƒ} t ddgddggƒ}| jr.t‚|js8t‚d S ©Nr=   r>   )r_   Z	is_squarerI   rÁ   rA   rA   rD   Útest_is_squareë  s    
rÝ   c                  C   sD   t ddddddgƒ} |  ¡ s t‚t ddddddgƒ} |  ¡ r@t‚d S )Nr>   r   r=   )r_   rÔ   rI   rª   rA   rA   rD   Útest_is_symmetricò  s    rÞ   c                  C   sº   t dddgdddgdddggƒ} | js*t‚t dddddddddddg	ƒ} | jsRt‚t dddddddddddg	ƒ} | jdks~t‚| jdksŒt‚t dddgdddgdddggƒ} | jr¶t‚d S )	Nr?   r@   r=   r>   rm   r   rœ   F)r_   Zis_upper_hessenbergrI   Zis_lower_hessenbergrË   rA   rA   rD   Útest_is_hessenbergù  s     

 rß   c                  C   s¼   t ddg ƒjst‚t ddgddggƒjs,t‚t tddƒƒjs@t‚t tdƒƒjrRt‚t tdgddggƒjd kspt‚t tdgddggƒjdksŽt‚tddd�} t | dgddggƒjdks¸t‚d S )	Nr   r?   r@   r=   Fr€   T)Znonzero)r_   Zis_zero_matrixrI   r(   r%   r2   r   rÖ   rA   rA   rD   Útest_is_zero  s    rà   c                  C   sb   t tddddddgƒ ¡ ƒdddhks*t‚tddd�} t tdd| dddgƒ ¡ ƒ| dhks^t‚d S )Nr>   r   r=   r?   r2   T©Úreal)Úsetr_   ÚvaluesrI   r   ru   rA   rA   rD   Útest_values  s    ÿÿrå   c                  C   sb   t tdƒƒ} |  dd„ ¡tdƒd ks*t‚|  dd„ ¡tdƒksDt‚|  dd„ ¡tdƒks^t‚d S )Nr?   c                 S   s   d|  S ©Nr>   rA   ru   rA   rA   rD   rW     rX   z test_applyfunc.<locals>.<lambda>r>   c                 S   s   dS r]   rA   ru   rA   rA   rD   rW     rX   c                 S   s   dS ©Nr=   rA   ru   rA   rA   rD   rW     rX   )rc   r%   Z	applyfuncrI   r(   r'   )r­   rA   rA   rD   Útest_applyfunc  s    rè   c                  C   s>   dt gddgg} tddgt  dggƒ}| ¡ t| ƒks:t‚d S )Nr   r=   )r   rc   Zadjointr#   rI   )ZdatZansrA   rA   rD   Útest_adjoint!  s    ré   c               	   C   st   t ddddddgƒ} t dddtj ddtj  ddtj  ddtj  gƒ}| ¡ \}}|| ksdt‚|| kspt‚d S ry   )rc   r   ZImaginaryUnitZas_real_imagrI   )r„   r†   r€   r�   rA   rA   rD   Útest_as_real_imag'  s     ÿÿrê   c                  C   s®   t dtdgdddggƒ} | jtddgtdgddggƒks<t‚| jtdt dgdddggƒks`t‚| j|  ¡ ksrt‚| j| jjks„t‚| jtddgt dgddggƒksªt‚d S )Nr   rm   r=   r>   )rc   r   ÚTr#   rI   r¥   Ú	conjugateÚH©rC   rA   rA   rD   Útest_conjugate2  s     
ÿþÿþrï   c                  C   sJ   t tttdd�ggƒ} | d dt ks*t‚|  ¡ tdt ggƒksFt‚d S )NF)Úevaluater   r>   )rc   r   r2   rI   Zdoitr#   rÖ   rA   rA   rD   Ú	test_doitD  s    rñ   c                      sr   t ddtdƒdgƒ‰ t‡ fdd„tdƒD ƒƒs2t‚t‡ fdd„tdƒD ƒƒsPt‚t‡ fdd„tdƒD ƒƒsnt‚d S )	Nr>   r=   rm   rn   c                 3   s&   | ]}ˆ   ¡ | ˆ |   ¡ kV  qd S rQ   ©Zevalf©rB   rU   rÖ   rA   rD   Ú	<genexpr>L  s     ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}ˆ   d ¡| ˆ |   d ¡kV  qdS ©r>   Nrò   ró   rÖ   rA   rD   rô   M  s     c                 3   s*   | ]"}ˆ   d ¡| ˆ |   d ¡kV  qdS rõ   rZ   ró   rÖ   rA   rD   rô   N  s     )rc   r   Úallrz   rI   rA   rA   rÖ   rD   Ú
test_evalfJ  s    r÷   c                  C   sà   t ttt  dgtt t t ttttt    ggƒ} |  ¡ }|ttt td  dgttd  ttd   tt ttd   td  ggƒks”t‚tddd�}t ddtt| ƒgƒjdd�tt	|ƒtt
|ƒ  gƒksÜt‚d S )Nr>   r?   r€   Trá   r=   )Úcomplex)rc   r2   r3   rÐ   r#   rI   r   r   r   r   r   )r­   r„   r€   rA   rA   rD   Útest_expandQ  s    8Fÿ
ÿrù   c                  C   sB  t ttƒd ttd ƒgttd ƒttƒd  ttd ƒttƒd  ggƒ} |  t t¡t t¡@ ¡}|ttd ttƒgtd ttƒ td ttƒ ggƒks¢t	‚|  t 
t¡t 
t¡@ ¡}|ttd tgttd  td t ggƒksìt	‚|  t t¡t t¡@ ¡}|ttd t gt td  td  t ggƒk�s>t	‚d S ræ   )rc   r   r2   r   r3   Zrefiner   râ   r#   rI   ZpositiveÚnegativer¬   rA   rA   rD   Útest_refine^  s    .ÿ<0rû   c                     sT   t dtd�\‰ ‰tdd‡fdd„ƒ} tdd‡ fdd„ƒ}| ˆ ˆ¡}|| ksPt‚d S )NúF, G©Úclsr>   c                    s   ˆ | | ƒS rQ   rA   rT   )ÚGrA   rD   rW   m  rX   ztest_replace.<locals>.<lambda>c                    s   ˆ | | ƒS rQ   rA   rT   ©ÚFrA   rD   rW   n  rX   ©r   r   rc   ÚreplacerI   )ÚKrC   ÚNrA   )r  rÿ   rD   Útest_replacek  s
    r  c               
      s¦   t dtd�\‰ } tdd| dƒˆ dƒ| dƒif| dƒˆ dƒ| dƒif| dƒˆ dƒ| dƒif| dƒˆ dƒ| dƒifgƒ}tdd‡ fdd„ƒ}| ˆ | d¡}||ks¢t‚d S )	Nrü   rý   r>   r   r=   c                    s   ˆ | | ƒS rQ   rA   rT   r   rA   rD   rW   w  rX   z"test_replace_map.<locals>.<lambda>Tr  )rÿ   r  rC   r  rA   r   rD   Útest_replace_maps  s    >ÿÿr  c                  C   sê   t ddgddggƒ} | |  d¡  kr4|  d¡ks:n t‚|  d¡|  d¡  krn|  d¡  krnt dƒkstn t‚|  d¡|  d	¡  kr¨|  d
¡  kr¨t dƒks®n t‚|  ¡ |  d¡  krà|  d¡  kràt dƒksæn t‚d S )Nr=   r>   r?   r@   r   r�   rn   ))r@   r?   ©r>   r=   rœ   r�   ))r>   r@   ©r=   r?   iùÿÿÿéýÿÿÿ)©r?   r=   )r@   r>   )r#   Zrot90rI   rË   rA   rA   rD   Ú
test_rot90|  s
    &::r  c               
   C   sN  t dƒ} tdƒ}tdt dt  ttt  t g|tƒt|tƒ  |tƒ dd|  t| t ƒ|    t ggƒ}| ¡ ttt tt  dt gdt dddtt|  ƒ  t|    ggƒksÀt	‚dt d }t|ggƒ}| ¡ t|ggƒksðt	‚|jt
d�t|jt
d�ggƒk�st	‚tddgddggƒ}d| ¡   ¡ tdd	ƒk�sJt	‚d S )
Nr[   Úfr=   r>   )Úratioé   r?   r@   é"   )r   r   rc   r2   r3   r   r   rÎ   r#   rI   r   Útracer   )r[   r  rC   Úeqr{   rA   rA   rD   Útest_simplifyƒ  s     :ÿ&ÿ&r  c                   C   sB  t dtgtdggƒ td¡tddgddggƒks4t‚t tdgtt dggƒ tdgtdgg¡tddgddggƒksvt‚t tdgtt dggƒ tdftdfg¡tddgddggƒks¸t‚t tdgtt dggƒ tdtdi¡tddgddggƒksöt‚t tt ggƒjttd ttd idd	�ttd td  ggƒk�s>t‚d S )
Nr=   r@   rm   r>   rœ   r�   r
  T)Zsimultaneous)rc   r2   Úsubsr#   rI   r3   rA   rA   rA   rD   Ú	test_subs•  s    4(ÿ(ÿ$ÿ(ÿr  c                  C   s4   t dddgdddgdddggƒ} |  ¡ dks0t‚d S )Nr=   r   rm   r‘   é   )rc   r  rI   rî   rA   rA   rD   Ú
test_trace¡  s
    
þr  c                   C   sx   t dtgtdggƒ tdi¡tddgddggƒks6t‚t tdgtt dggƒ tdtdi¡tddgddggƒkstt‚d S )Nr=   r@   rm   r>   rœ   r�   r
  )rc   r2   Zxreplacer#   rI   r3   rA   rA   rA   rD   Útest_xreplace¨  s    ÿ$ÿr  c                     s  t ddddddddddd	d
ddgƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ  ddgddgg¡} ˆ  ddgddgg¡|   kr¦tddddgd	d
ddgddddggƒks¬n t‚ˆ  ddgddgg¡} ˆ jddgddggdd�|   k�rtddddgddddgd
dd	dggƒk�sn t‚ˆ jddgddggdd�} ˆ jddgddggddd�|   k�r„tddddgddddgdd	d
dggƒk�sŠn t‚ˆ  ddddg¡tddddgd	d
ddgddddggƒk�sÈt‚ddl	m
} ˆ  |ddddgƒ¡tddddgd	d
ddgddddggƒk�st‚d S )Nr?   r@   r=   r>   rm   rn   r�   r‘   r’   r»   r¼   é   c                      s   ˆ   ddgg¡S )Nr   rm   )ÚpermuterA   rÖ   rA   rD   rW   ²  rX   ztest_permute.<locals>.<lambda>c                      s   ˆ   tdƒ¡S )Nr2   )r  r   rA   rÖ   rA   rD   rW   ³  rX   r   rs   )ÚorientationZbackward)Ú	direction)r  r  )ÚPermutation)rc   r   rž   Ú
ValueErrorZpermute_rowsr  r#   rI   Zpermute_colsZsympy.combinatoricsr  )r�   r  rA   rÖ   rD   Útest_permute¯  sH    $ 


ý$


ýÿ&


ýÿ


ý


ýr  c               	   C   sø   t ddddgddddgddddgddddggƒ} |  d¡}|t ddddgddddgddddgddddggƒksrt‚|  d¡}|t ddddgddddgddddgddddggƒks´t‚|  ¡ }|t ddddgddddgddddgddddggƒksôt‚d S )Nr=   r>   r   r�   )rc   Zupper_triangularrI   )r£   ÚRrA   rA   rD   Útest_upper_triangularÓ  s6    



ü




ü




ü



ür!  c               	   C   sø   t ddddgddddgddddgddddggƒ} |  ¡ }|tddddgddddgddddgddddggƒkspt‚|  d¡}|tddddgddddgddddgddddggƒks²t‚|  d¡}|tddddgddddgddddgddddggƒksôt‚d S )Nr=   r   r>   r�   )rc   Zlower_triangularrg   rI   )r£   ÚLrA   rA   rD   Útest_lower_triangularô  s6    



ü



ü




ü




ür#  c                  C   s@   t ddgttggƒ} t| ƒt ddgttƒttƒggƒks<t‚d S )Nr=   r�   r>   )rg   r2   r3   Úabsr   rI   rª   rA   rA   rD   Útest_abs  s    r%  c                      s”   t dddgtttgdt dtt ggƒ‰ ˆ ˆ  t dddgdt dt dt gdt ddt t ggƒkslt‚t ddddgƒ‰tt‡ ‡fdd	„ƒ d S )
Nr=   r>   r?   iÎÿÿÿr@   rn   iœÿÿÿc                      s   ˆ ˆ S rQ   rA   rA   ©r{   r[   rA   rD   rW     rX   ztest_add.<locals>.<lambda>)rg   r2   r3   r4   rI   r   r   rA   rA   r&  rD   Útest_add  s    (Dr'  c                     sr  t dƒ‰ t dƒ‰tt‡ ‡fdd„ƒ tt‡ fdd„ƒ ˆ ˆ } | d dksNt‚| d d	ks^t‚| d
 dksnt‚| d dks~t‚| d dksŽt‚| d dksžt‚ztdƒ W n tk
r¾   Y nhX | d dksÐt‚| d d	ksàt‚| d
 dksðt‚| d dk�st‚| d dk�st‚| d dk�s&t‚ˆ  | ¡}|tˆ | ƒk�sDt‚|d dk�sVt‚|d dk�sht‚|d
 dk�szt‚|d dk�sŒt‚|d dk�sžt‚|d dk�s°t‚tt‡ ‡fdd„ƒ ˆt	dƒ } t
| t ƒ�sàt‚| d tk�sòt‚| d d	t k�st‚| d
 dt k�st‚| d dk�s0t‚tˆ }| |k�sFt‚dˆ } t
| t ƒ�s^t‚| d dk�spt‚| d dk�s‚t‚| d
 dk�s”t‚| d dk�s¦t‚ztdƒ W n tk
�rÈ   Y nZX t
| t ƒ�sÚt‚| d dk�sìt‚| d dk�sþt‚| d
 dk�st‚| d dk�s"t‚ttddƒƒ}tdd	ƒ }t|||gƒ}| |¡t|g|g|ggƒk�snt‚d S )N)r¨   r  rÓ   )r¨   )r?   r   c                      s   ˆˆ  S rQ   rA   rA   ©r€   r�   rA   rD   rW   -  rX   z%test_multiplication.<locals>.<lambda>c                      s   ˆ i  S rQ   rA   rA   rÖ   rA   rD   rW   .  rX   r}   r�   r~   r>   r   rn   ro   )r>   r   é   r  r   z	c = a @ br@   c                      s
   ˆ   ˆ¡S rQ   )Úmultiply_elementwiserA   r(  rA   rD   rW   L  rX   r2   r?   rm   r»   é   z	c = 5 @ br=   )rg   r   r   Ú	TypeErrorrI   ÚevalÚSyntaxErrorr*  r&   r   rH   r2   r#   r'   r   )r‚   ÚhÚc2r£   Ú_hr¤   rA   r(  rD   Útest_multiplication!  sz    

ýr2  c                  C   s¤   t ddgddggƒ} |  d¡tks&t‚|  d¡tks8t‚ztdƒ W n& tk
rX   Y n tk
rj   Y nX ztdƒ W n& tk
rŒ   Y n tk
rž   Y nX d S )Nr=   r>   r?   r@   z2 @ aza @ 2)r#   Ú
__matmul__ÚNotImplementedrI   Ú__rmatmul__r-  r.  r,  rÖ   rA   rA   rD   Útest_matmult  s    r6  c                  C   s†   G dd„ dt ƒ} tddgddggƒ}| ƒ }|| t|d| gd| d| ggƒksVt‚|| t|d| gd| d| ggƒks‚t‚dS )zd
    Test that if explicitly specified as non-matrix, mul reverts
    to scalar multiplication.
    c                   @   s   e Zd ZdZdZdZdS )ztest_non_matmul.<locals>.fooFro   N)rN   rO   rP   Z	is_MatrixZis_MatrixLiker©   rA   rA   rA   rD   Úfoo’  s   r7  r=   r>   r?   r@   N)r   r#   rI   )r7  r£   r�   rA   rA   rD   Útest_non_matmul�  s
    ,r8  c                  C   s$  t tdd„ ƒ tddgddggƒ} | d d d … dks:t‚tdddgdddgd	d
dggƒ} | d d d … dksrt‚| d tdƒks†t‚| d | ks–t‚tdggƒd d dd ks¶t‚tddgddggƒtdƒ tddgddggƒksêt‚tddgddggƒ} | jddd�| jddd�k�s t‚d S )Nc                   S   s   t dƒd S )Nr¨   r>   ©r#   rA   rA   rA   rD   rW   ž  rX   ztest_power.<locals>.<lambda>r>   r?   r@   rm   )iü  i¡  i,*  i�7  r=   rn   r  )	i"  i  éû   iÀ  i¸  ip  i¾  iº  i±  r   éd   r}   r�   r»   r+  é   é   Zcayley)ÚmethodÚmultiply)r   r   rg   rI   r%   r   r#   ÚpowrË   rA   rA   rD   Ú
test_power�  s      4rA  c                  C   s.   t ddddgƒ} |  t ddddgƒks*t‚d S )Nr=   r>   rœ   r�   ©rg   rI   rZ   rA   rA   rD   Útest_neg«  s    rC  c                  C   s0   t ddddgƒ} | |  t ddddgƒks,t‚d S )Nr=   r>   r   rB  rZ   rA   rA   rD   Útest_sub°  s    rD  c                  C   s:   t ddddgƒ} | d t ddtjtdƒd gƒks6t‚d S rÜ   )rg   r   r‰   rI   rZ   rA   rA   rD   Útest_divµ  s    rE  c                   C   sr   t t dd¡ƒddddgks t‚t t d¡ƒddddgks>t‚tt d¡ƒtksTt‚ttjdtd�ƒtksnt‚d S )Nr>   r=   r   rý   )rt   rk   r%   rI   Útyper#   rA   rA   rA   rD   Útest_eyeº  s     rG  c                   C   sš   t t dd¡ƒddddgks t‚t t d¡ƒddddgks>t‚t dd¡tdddgdddggƒksft‚tt d¡ƒtks|t‚ttjdtd�ƒtks–t‚d S )Nr>   r=   r?   rý   )rt   rk   r'   rI   r#   rF  rA   rA   rA   rD   Ú	test_onesÁ  s
     (rH  c                   C   sš   t t dd¡ƒddddgks t‚t t d¡ƒddddgks>t‚t dd¡tdddgdddggƒksft‚tt d¡ƒtks|t‚ttjdtd�ƒtks–t‚d S )Nr>   r   r?   rý   )rt   rk   r(   rI   r#   rF  rA   rA   rA   rD   Ú
test_zerosÉ  s
     (rI  c                      s  t j‰tddgddggƒ‰ tdtgtdggƒ‰tdtdgtdtgtttggƒ‰ˆˆ ˆˆƒtddddddgddddddgdddtddgddtdddgdddddtgddddtdggƒksºt‚ˆˆ ˆˆƒtdddddddgdddddddgdddtdddgddtddddgdddddtdgddddtdtgddddtttggƒk�sDt‚ˆˆ ˆˆƒtdddddddgdddddddgdddtdddgddtdtddgddtttddgddddddtgdddddtdggƒk�sÎt‚ttttgƒ‰ tddgddggƒ‰tddggƒ‰ˆˆ dˆˆƒttdddddgtdddddgtdddddgddddddgddddddgddddddgddddddggƒk�s|t‚tt‡ ‡‡‡fd	d
„ƒ ˆdƒtdggƒk�s®t‚ˆddd�tddgddggƒk�sÔt‚ˆddd�tddgddggƒk�sút‚ˆdddd�tddgddgddggƒk�s(t‚ˆddgŽ tddgddggƒk�sNt‚ˆtddgƒƒtdgdggƒk�stt‚ˆdddgdgdd�ˆdgddgdggdd�  k�rÊtddgddgddggƒk�sÐn t‚t	ˆdƒƒt k�sæt‚t	ˆdtd�ƒtk�s t‚t dddg¡t ddd¡k�s$t‚tjdddgdd�j
dk�sDt‚t dddgg¡j
dk�sbt‚tjdddggdd�j
dk�s„t‚t dddggg¡j
dk�s¤t‚t tddƒdd¡tddddgddddggƒk�sÚt‚t tddƒdd¡tddgddgddgddggƒk�st‚d S )Nr=   r>   r?   r   r@   rm   rn   r�   c                      s   ˆˆ dˆˆdd�S )Nr�   rm   ©rr   rA   rA   ©r€   r�   r‚   r$   rA   rD   rW   þ  rX   z test_diag_make.<locals>.<lambda>rJ  )rs   )rr   rs   F)Úunpackrý   r  r	  )rk   r$   r#   r2   r3   r4   rI   r   r  rF  r©   r'   rA   rA   rK  rD   Útest_diag_makeÑ  s¢     úù	ù	ù&&.þþÿ
ýÿ$ " 

þürM  c                     sB  t ddtdƒƒ‰ˆ ¡ } | ˆ d¡ks*t‚t| ƒdks:t‚tˆ d¡ƒdksPt‚tˆ d¡ƒdksft‚tˆ d	¡ƒd
ks|t‚tˆ ¡ ƒtˆƒks”t‚tddddiƒ}t| ¡ ƒt|ƒks¼t‚tˆƒt|ƒksÐt‚tt‡fdd„ƒ tt‡fdd„ƒ tt‡fdd„ƒ t	d	dƒ‰ t
‡ fdd„tdˆ j ˆ jƒD ƒƒˆ k�s>t‚d S )Nr?   r’   r   )r   r@   r‘   r=   )r=   rm   rœ   )r?   r�   r>   )r>   ro   c                      s
   ˆ   d¡S rº   ©ÚdiagonalrA   rª   rA   rD   rW   ,  rX   ztest_diagonal.<locals>.<lambda>c                      s
   ˆ   d¡S )Nr
  rN  rA   rª   rA   rD   rW   -  rX   c                      s
   ˆ   t¡S rQ   )rO  r   rA   rª   rA   rD   rW   .  rX   c                    s   i | ]}|t ˆ  |¡ƒ“qS rA   )rt   rO  ró   rî   rA   rD   Ú
<dictcomp>0  s   ÿ z!test_diagonal.<locals>.<dictcomp>)r#   rz   rO  rI   ÚtuplerF  r)   r   r  r'   r*   rr   rs   )rƒ   ÚsrA   )rC   r{   rD   Útest_diagonal   s(    
ÿÿrS  c                   C   s  t  dd¡t jddd�  kr‚t jddd�  kr‚t jdddd�  kr‚t jdddd�  kr‚tddd	gd	ddgd	d	dggƒksˆn t‚t jddd
d�tdd	d	gddd	gd	ddggƒks¼t‚ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ ttdd„ ƒ t jddd�t jddd�k�st‚d S )Nr?   r>   ©Ú
eigenvalue)ÚsizerU  Úupper)Zband)rV  ÚeigenvalrU  r=   r   Úlowerc                   S   s
   t  d¡S ræ   ©rk   Újordan_blockrA   rA   rA   rD   rW   D  rX   z#test_jordan_block.<locals>.<lambda>c                   S   s   t  dd¡S )Ng      @r>   rZ  rA   rA   rA   rD   rW   F  rX   c                   S   s   t jdd�S )Nr>   rT  rZ  rA   rA   rA   rD   rW   H  rX   c                   S   s   t jddd�S )Nr>   r@   )rU  rX  rZ  rA   rA   rA   rD   rW   K  s    ÿ)rV  rX  )rk   r[  r#   rI   r   r  rA   rA   rA   rD   Útest_jordan_block4  s>    ÿþ  ÿýýû
ýÿÿr\  c                     s6  t ddgddggƒ} |  t dgdggƒ¡t dgdggƒgks@t‚| jt dgdggƒdd�t dtdƒ d gtdƒd ggƒgks„t‚|  t dgdggƒt dgdggƒ¡t dgdggƒt td	dƒgtd
dƒggƒgksØt‚|  t dgdggƒt dgdggƒ¡t dgdggƒgk�st‚|  t dgdggƒ¡g k�s4t‚t dddgdd
dgdddggƒ}t dgdggƒt dgdggƒt dgdggƒg‰ |jˆ Ž t dgdggƒt tddƒgtddƒggƒgk�s¾t‚t dddgƒt dddgƒt dddgƒg‰ tt‡ fdd„ƒ t dddgƒt ddd
gƒt dddgƒg‰ tt‡ fdd„ƒ d S )Nr=   r>   r?   r@   T)Ú	normalizerm   rœ   iôÿÿÿrn   r   r’   r»   r‘   r™   r�   é   é   c                      s   t jˆ ddiŽS ©NZ	rankcheckT©r#   ÚorthogonalizerA   ©ZvecsrA   rD   rW   d  rX   z$test_orthogonalize.<locals>.<lambda>r�   c                      s   t jˆ ddiŽS r`  ra  rA   rc  rA   rD   rW   g  rX   )r#   rb  rI   r   r   r   r  r&  rA   rc  rD   Útest_orthogonalizeS  s*    ,$ÿ"*ÿ"ÿ
  .*ÿ
((rd  c                  C   sr  t  d¡\} }| t dddgdddgdddggƒks6t‚|t dddgdddgdddggƒks^t‚t  d¡\} }| t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggƒksìt‚|t dddddddgdddddddgdddddddgdddddddgdddddddgdddddddgdddddddggƒk�snt‚d S )Nr=   rœ   r   r?   r
  r�   r>   )r#   Z	wilkinsonrI   )ZwminusZwplusrA   rA   rD   Útest_wilkinsoni  s<    ýýø
ùre  c                  C   s>   t dƒ\} }tdd| |gƒ}| | ¡tddddgƒks:t‚d S )Núx yr>   r=   r   )r   rl   Údiffr#   rI   ©r2   r3   r{   rA   rA   rD   Ú	test_diff‹  s    ri  c                  C   sJ   t dƒ\} }tdd| |gƒ}| | ¡tdd| d d ||  gƒksFt‚d S )Nrf  r>   r=   )r   rl   Z	integrater#   rI   rh  rA   rA   rD   Útest_integrate“  s    rj  c                     sÞ   t dƒ\} }tdd| t|ƒ | t|ƒ | d gƒ}tdd| |gƒ}tt|ƒ|  t|ƒ gt|ƒ| t|ƒ gd|  dggƒ}| |¡|ksŒt‚tddddddgƒ‰ tddddddgƒ‰tt‡ fdd„ƒ tt‡ ‡fd	d„ƒ d S )
Nzrho,phir?   r=   r>   r   r@   c                      s   ˆ   tddgƒ¡S rÜ   )Újacobianr#   rA   rª   rA   rD   rW   ¦  rX   z test_jacobian2.<locals>.<lambda>c                      s
   ˆ  ˆ ¡S rQ   )rk  rA   rÁ   rA   rD   rW   §  rX   )	r   rl   r   r   r#   rk  rI   r   r,  )ÚrhoÚphiÚXÚYÚJrA   rÁ   rD   Útest_jacobian2™  s    &
ýrq  c                  C   sJ   t dƒ\} }tddd|  |gƒ}| | d¡tddtddƒ|gƒksFt‚d S )Nrf  r>   r=   rm   )r   rl   Úlimitr#   r   rI   rh  rA   rA   rD   Ú
test_limitª  s    rs  c                      sV   t dddgdddgddd	ggƒ‰ dddg‰tt‡ ‡fd
d„ƒ tt‡ ‡fdd„ƒ d S )Nr=   r>   r?   r@   rm   rn   r�   r‘   r’   c                      s   ˆ ˆ S rQ   rA   rA   ©rC   ÚvrA   rD   rW   ³  rX   z"test_issue_13774.<locals>.<lambda>c                      s   ˆˆ  S rQ   rA   rA   rt  rA   rD   rW   ´  rX   )r#   r   r,  rA   rA   rt  rD   Útest_issue_13774°  s     
rv  c                     s   t dƒ‰ t dƒ‰ttdd„ ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ ‡fdd„ƒ tdƒ\} }}t td	| gˆ ƒ¡t|  gƒksˆt‚t td	|| gˆ ƒ¡td
|  gd	| ggƒksºt‚t td	||| gˆ ƒ¡td
d
|  gd	d
| gd
d	| ggƒksüt‚d S )Nr2   r3   c                   S   s
   t  d¡S rç   )r#   Ú	companionrA   rA   rA   rD   rW   ¹  rX   z test_companion.<locals>.<lambda>c                      s   t  tdgˆ ƒ¡S rç   ©r#   rw  r/   rA   ru   rA   rD   rW   º  rX   c                      s   t  tddgˆ ƒ¡S rÇ   rx  rA   ru   rA   rD   rW   »  rX   c                      s   t  tˆ ˆ ˆ ˆgƒ¡S rQ   rx  rA   ©r2   r3   rA   rD   rW   ¼  rX   zc0:3r=   r   )r   r   r  r   r#   rw  r/   rI   )Zc0Úc1r0  rA   ry  rD   Útest_companion¶  s    $ÿ$ÿr{  c               	   C   sÌ   t dƒ\} }}t| ||gƒ}| t| ||gdddgƒ¡}|tdgdgdggƒksTt‚t| | | | | g| | | | | g| | | | | ggƒ}| t| gdgƒ¡}|tdddddgdddddgdddddggƒksÈt‚d S )Nzx, y zr=   r>   r?   )r   r#   r  ÚziprI   )r2   r3   r4   rÂ   rÃ   rA   rA   rD   Útest_issue_10589Å  s    ,r}  c                  C   sn   G dd„ dt ƒ} tddddddgƒ}| ddddddgƒ}|| }t|| ƒsNt‚|tddgd	d
ggƒksjt‚d S )Nc                   @   s   e Zd Zejd ZdS )ztest_rmul_pr19860.<locals>.Foog{®Gáz„?N)rN   rO   rP   r+   Z_op_priorityrA   rA   rA   rD   ÚFooÐ  s   r~  r>   r=   r?   r@   r�   r»   r+  r<  )r-   r#   rH   rI   )r~  r€   r�   r‚   rA   rA   rD   Útest_rmul_pr19860Ï  s    r  c                      sT   t ddgddggƒ‰ tddgddggƒ‰tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ d S )Nr=   r>   r?   r@   c                      s   ˆˆ  S rQ   rA   rA   ©r£   r¤   rA   rD   rW   á  rX   z"test_issue_18956.<locals>.<lambda>c                      s   ˆ ˆ S rQ   rA   rA   r€  rA   rD   rW   â  rX   )ÚArrayr#   r   r,  rA   rA   r€  rD   Útest_issue_18956Þ  s    r‚  c                  C   sP   G dd„ dt ƒ} tddddgƒ}|| ƒ ks.t‚G dd„ d| ƒ}||ƒ ksLt‚d S )Nc                   @   s   e Zd Zdd„ Zdd„ ZdS )ztest__eq__.<locals>.Myc                 s   s   dV  dV  d S rÜ   rA   ©ÚselfrA   rA   rD   Ú__iter__ç  s    ztest__eq__.<locals>.My.__iter__c                 S   s   t | ƒ| S rQ   )rt   )r„  rU   rA   rA   rD   Ú__getitem__ë  s    z"test__eq__.<locals>.My.__getitem__N)rN   rO   rP   r…  r†  rA   rA   rA   rD   ÚMyæ  s   r‡  r>   r=   c                   @   s   e Zd Zdd„ ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | ƒS rQ   r9  rƒ  rA   rA   rD   Ú_sympy_ð  s    z$test__eq__.<locals>.My_sympy._sympy_N)rN   rO   rP   rˆ  rA   rA   rA   rD   ÚMy_sympyï  s   r‰  )Úobjectr#   rI   )r‡  r€   r‰  rA   rA   rD   Ú
test__eq__å  s
    r‹  N)¨Zsympy.testing.pytestr   r   r   Zsympy.assumptionsr   Zsympy.core.exprr   Zsympy.core.addr   Zsympy.core.functionr   Zsympy.core.kindr	   r
   Zsympy.core.numbersr   r   r   r   r   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   Z(sympy.functions.elementary.miscellaneousr   Z(sympy.functions.elementary.trigonometricr   r   Zsympy.matrices.exceptionsr   r   Zsympy.matrices.kindr   rF   r   r   r   r   r   r    r!   rG   r"   Zsympy.matricesr#   r$   r%   r&   r'   r(   r)   r*   r+   r,   r-   r.   Zsympy.polys.polytoolsr/   Zsympy.utilities.iterablesr0   Z#sympy.tensor.array.dense_ndim_arrayr1   r�  Z	sympy.abcr2   r3   r4   rK   rL   r\   r^   r_   ra   rb   rc   re   rf   rg   ri   rj   rk   rl   rv   rx   r|   r‡   rŒ   r�   rŸ   r¢   r§   r«   r®   r±   r³   r´   r¸   r¹   r¿   rÄ   rÆ   rÈ   rÉ   rÌ   rÒ   rÕ   r×   rØ   rÙ   rÚ   rÛ   rÝ   rÞ   rß   rà   rå   rè   ré   rê   rï   rñ   r÷   rù   rû   r  r  r  r  r  r  r  r  r!  r#  r%  r'  r2  r6  r8  rA  rC  rD  rE  rG  rH  rI  rM  rS  r\  rd  re  ri  rj  rq  rs  rv  r{  r}  r  r‚  r‹  rA   rA   rA   rD   Ú<module>   sô   $8A
			
 		$!!SO"

