U
    ZÊ¹j“ ã                   @   sJ  d dl Zd dlZd dlmZ d dlmZmZmZm	Z	m
Z
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z?m@Z@mAZAmBZBmCZCmDZDmEZEmFZFmGZGmHZHmIZImJZJmKZK d dlLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZT d dlUmVZVmWZW d dlXmYZY d dlZm[Z[m\Z\m]Z] d dl^m_Z_ d d	l`maZambZbmcZc d d
ldmeZe d dlfmgZgmhZhmiZimjZjmkZkmlZl d dlmmnZnmoZo d dlpmqZq ee%eefZree%fZseefZtdd„ Zudd„ Zvdd„ Zwdd„ Zxdd„ Zydd„ Zzd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…d0d1„ Z†d2d3„ Z‡d4d5„ Zˆd6d7„ Z‰d8d9„ ZŠd:d;„ Z‹d<d=„ ZŒd>d?„ Z�d@dA„ ZŽdBdC„ Z�dDdE„ Z�dFdG„ Z‘dHdI„ Z’dJdK„ Z“dLdM„ Z”dNdO„ Z•dPdQ„ Z–dRdS„ Z—dTdU„ Z˜dVdW„ Z™dXdY„ ZšdZd[„ Z›d\d]„ Zœd^d_„ Z�d`da„ Zždbdc„ ZŸddde„ Z dfdg„ Z¡dhdi„ Z¢djdk„ Z£dldm„ Z¤dndo„ Z¥dpdq„ Z¦drds„ Z§dtdu„ Z¨dvdw„ Z©dxdy„ Zªdzd{„ 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Í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Þekdâ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 �d&�d'„ �Z�d(�d)„ �Z�d*�d+„ �Z�d,�d-„ �Z�d.�d/„ �Z�d0�d1„ �Z�d2�d3„ �Z�d4�d5„ �Z�d6�d7„ �Z	�d8�d9„ �Z
�d:�d;„ �Z�d<�d=„ �Z�d>�d?„ �Z�d@�dA„ �Z�dB�dC„ �Z�dD�dE„ �Z�dF�dG„ �Z�dH�dI„ �Z�dJ�dK„ �Z�dL�dM„ �Z�dN�dO„ �Z�dP�dQ„ �Z�dR�dS„ �Z�dT�dU„ �Z�dV�dW„ �Z�dX�dY„ �Z�dZ�d[„ �Z�d\�d]„ �Z�d^�d_„ �Z�d`�da„ �Z�db�dc„ �Z�dd�de„ �Z �df�dg„ �Z!�dh�di„ �Z"�dj�dk„ �Z#�dl�dm„ �Z$�dn�do„ �Z%�dp�dq„ �Z&�dr�ds„ �Z'�dt�du„ �Z(�dv�dw„ �Z)�dx�dy„ �Z*�dz�d{„ �Z+�d|�d}„ �Z,�d~�d„ �Z-�d€�d�„ �Z.�d‚�dƒ„ �Z/�d„�d…„ �Z0�d†�d‡„ �Z1�dˆ�d‰„ �Z2�dŠ�d‹„ �Z3�dŒ�d�„ �Z4�dŽ�d�„ �Z5�d��d‘„ �Z6ek�d’�d“„ ƒ�Z7�d”�d•„ �Z8�d–�d—„ �Z9�d˜�d™„ �Z:�dš�d›„ �Z;�dœ�d�„ �Z<�dž�dŸ„ �Z=�d �d¡„ �Z>�d¢�d£„ �Z?�d¤�d¥„ �Z@�d¦�d§„ �ZA�d¨�d©„ �ZB�dª�d«„ �ZC�d¬�d­„ �ZD�d®�d¯„ �ZE�d°�d±„ �ZF�d²�d³„ �ZG�d´�dµ„ �ZH�d¶�d·„ �ZI�d¸�d¹„ �ZJ�dº�d»„ �ZK�d¼�d½„ �ZL�d¾�d¿„ �ZM�dÀ�dÁ„ �ZN�dÂ�dÃ„ �ZOej�dÄƒ�dÅ�dÆ„ ƒ�ZP�dÇ�dÈ„ �ZQdS (É  é    N)ÚHashable)FÚAbsÚAddÚArrayÚDeferredVectorÚEÚExprÚ	FiniteSetÚFloatÚFunctionÚGramSchmidtÚIÚImmutableDenseMatrixÚImmutableMatrixÚImmutableSparseMatrixÚIntegerÚKroneckerDeltaÚMatPowÚMatrixÚMatrixSymbolÚMaxÚMinÚMutableDenseMatrixÚMutableSparseMatrixÚPolyÚPowÚPurePolyÚQÚ
QuaternionÚRationalÚRootOfÚSÚSparseMatrixÚSymbolÚTupleÚWildÚbandedÚ
casoratianÚcosÚdiagÚdiffÚexpÚexpandÚeyeÚhessianÚ	integrateÚlogÚmatrix_multiply_elementwiseÚnanÚonesÚooÚpiÚ
randMatrixÚ	rot_axis1Ú	rot_axis2Ú	rot_axis3Úrot_ccw_axis1Úrot_ccw_axis2Úrot_ccw_axis3ÚsignsimpÚsimplifyÚsinÚsqrtÚsstrÚsymbolsÚsympifyÚtanÚtrigsimpÚ	wronskianÚzerosÚcancel)ÚaÚbÚcÚdÚtÚxÚyÚz)Ú
NumberKindÚUndefinedKind)Ú_find_reasonable_pivot_naive)ÚMatrixErrorÚNonSquareMatrixErrorÚ
ShapeError)Ú
MatrixKind)Ú_dotprodsimp_stateÚ	_simplifyÚdotprodsimp)ÚArrayDerivative)Úignore_warningsÚraisesÚskipÚskip_under_pyodideÚslowÚwarns_deprecated_sympy)ÚcaptureÚiterable)Úversionc               	   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 )Né   é   é   é   é   é   ©rg   rg   ©rg   re   rf   ©rh   ri   rj   )rl   rm   )r   ÚrowsÚAssertionErrorÚcolsÚlist©rN   © rs   úc/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_matrixbase.pyÚtest__MinimalMatrix#   s     " $""ru   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 ©Nrg   re   rf   rh   r   )r   ÚkindrW   rQ   ro   rN   rR   r"   rs   rs   rs   rt   Ú	test_kind6   s    ""$rx   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   rg   ©rg   r   rk   )rB   r   r   r   r   Útodokro   )rI   rJ   rK   rL   Úm1Úm2Úm3Zm4rs   rs   rt   Ú
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 )Nre   rf   rh   )
r!   ÚOneÚHalfrN   rO   ÚZerorP   r   Útolistro   )ÚlstZflat_lstÚmrs   rs   rt   Útest_tolistJ   s    82r‡   c                  C   sN   t 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sJt‚d S )Nr   rg   ©r   rg   re   )r   r!   r�   r‚   rN   Ztododro   )r†   Údictrs   rs   rt   Ú
test_tododQ   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 )Nrf   rg   re   rh   ri   rj   é   é   é	   c                      s
   ˆ   d¡S ©Nri   ©Úrow_delrs   ©Úers   rt   Ú<lambda>Y   ó    z"test_row_col_del.<locals>.<lambda>c                      s
   ˆ   d¡S ©Néûÿÿÿr�   rs   r‘   rs   rt   r“   Z   r”   c                      s
   ˆ   d¡S rŽ   ©Úcol_delrs   r‘   rs   rt   r“   [   r”   c                      s
   ˆ   d¡S r•   r—   rs   r‘   rs   rt   r“   \   r”   éÿÿÿÿéþÿÿÿ)r   r]   Ú
IndexErrorr�   r   ro   r˜   rs   rs   r‘   rt   Útest_row_col_delW   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 ©Nrg   re   rf   )r   rN   rO   rP   Úget_diag_blocksro   )rI   rJ   rK   rs   rs   rt   Útest_get_diag_blocks1e   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   rN   rO   rP   r)   rn   rp   rž   ro   )rI   rJ   rK   ÚAÚBÚCÚDrs   rs   rt   Útest_get_diag_blocks2n   s     4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 )Nrf   rg   re   rh   ri   rj   r‹   rŒ   r�   r   )r   Úrowro   Úcol©r†   rs   rs   rt   Ú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 ©Nrf   r‹   rg   r   )r-   Úrow_joinr   ro   rs   rs   rs   rt   Ú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-   Úcol_joinr   ro   rs   rs   rs   rt   Útest_col_join‹   s    
ýÿr­   c                  C   s\   t dddggƒ} tddƒD ]<}dddg}| |d¡ tdƒ || ¡ d¡ ¡ |kst‚qd S )Nrh   éüÿÿÿri   rg   r   rf   )r   ÚrangeÚinsertr-   Ú
row_insertr¦   Úflatro   )Zr4ÚiÚlrs   rs   rt   Útest_row_insert“   s
    
rµ   c                  C   s  t dddgƒ} tddƒD ]<}dddg}| |d¡ 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 )	Nrh   r®   ri   r   rf   rj   re   rg   )	r   r¯   r°   rG   Ú
col_insertr¥   r²   ro   r-   )Zc4r³   r´   rs   rs   rt   Útest_col_insert›   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 )Nrh   rf   c                 S   s   | d | S ©Nrf   rs   ©r³   Újrs   rs   rt   r“   ¬   r”   ztest_extract.<locals>.<lambda>r   rg   re   r�   é
   é   c                      s   ˆ   dgdg¡S )Nrh   r   ©Úextractrs   r§   rs   rt   r“   °   r”   c                      s   ˆ   dgdg¡S )Nr   rf   r½   rs   r§   rs   rt   r“   ±   r”   )r   r¾   ro   r¯   r]   r›   rs   rs   r§   rt   Útest_extract«   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 )Nrh   rf   c                 S   s   | d | S r¸   rs   r¹   rs   rs   rt   r“   µ   r”   ztest_hstack.<locals>.<lambda>c                 S   s   | d | S r¸   rs   r¹   rs   rs   rt   r“   ¶   r”   r   rg   re   ri   rj   r‹   rŒ   r�   r»   r¼   c                      s   ˆ   ˆ ˆ¡S ©N)Úhstackrs   ©r†   r~   rs   rt   r“   ½   r”   )r   rÁ   ro   r]   rV   rG   rn   rp   )ÚM1ÚM2ZM3ZM4rs   rÂ   rt   Útest_hstack´   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 )Nrh   rf   c                 S   s   | d | S r¸   rs   r¹   rs   rs   rt   r“   Ê   r”   ztest_vstack.<locals>.<lambda>c                 S   s   | d | S r¸   rs   r¹   rs   rs   rt   r“   Ë   r”   r   rg   re   ri   rj   r‹   rŒ   r�   r»   r¼   c                      s   ˆ   ˆ ˆ¡S rÀ   )Úvstackrs   rÂ   rs   rt   r“   Ú   r”   )r   rÆ   ro   r]   rV   rs   rs   rÂ   rt   Útest_vstackÉ   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©re   rf   re   )r   rN   rO   Úhasro   rP   r#   ©r    rs   rs   rt   Ú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 )NrN   re   rg   Frf   r   T©r>   c                 S   s   | S rÀ   rs   rr   rs   rs   rt   r“   î   r”   z(test_is_anti_symmetric.<locals>.<lambda>c                 S   s   g | ]}|  ¡ ‘qS rs   ©r,   ©Ú.0rN   rs   rs   rt   Ú
<listcomp>ð   s     z*test_is_anti_symmetric.<locals>.<listcomp>c                 S   s   g | ]}|  ¡ ‘qS rs   rÍ   rÎ   rs   rs   rt   rÐ   ò   s     )rB   r   Úis_anti_symmetricro   rO   r!   r�   rq   )rN   r†   rs   rs   rt   Útest_is_anti_symmetricè   s    D*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 )Nrg   re   F©r   r   Zis_hermitianro   rN   ©rI   rs   rs   rt   Útest_is_hermitianö   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 )NTrg   re   rf   rh   ri   rj   r‹   rŒ   F)r   rN   Zis_symbolicro   rÔ   rs   rs   rt   Útest_is_symbolic  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 ©Nrg   re   )r   Z	is_squarero   rÂ   rs   rs   rt   Ú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 )Nre   r   rg   )r   Úis_symmetricro   r§   rs   rs   rt   Ú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 )	Nrf   rh   rg   re   ri   r   r™   F)r   Úis_upper_hessenbergro   Úis_lower_hessenbergrÊ   rs   rs   rt   Útest_is_hessenberg   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 )Nre   r   rg   rf   rN   T©Úreal)Úsetr   Úvaluesro   r#   rr   rs   rs   rt   Útest_values-  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   ri   rg   re   )r   r   ÚTro   r¢   Ú	conjugateÚH©ÚMrs   rs   rt   Útest_conjugate5  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   re   )r   r   rN   ro   ÚdoitrÔ   rs   rs   rt   Ú	test_doitG  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 )	Nre   rg   ri   rj   c                 3   s&   | ]}ˆ   ¡ | ˆ |   ¡ kV  qd S rÀ   ©Úevalf©rÏ   r³   rÔ   rs   rt   Ú	<genexpr>O  s     ztest_evalf.<locals>.<genexpr>c                 3   s*   | ]"}ˆ   d ¡| ˆ |   d ¡kV  qdS ©re   Nrí   rï   rÔ   rs   rt   rð   P  s     c                 3   s*   | ]"}ˆ   d ¡| ˆ |   d ¡kV  qdS rñ   ©Únrï   rÔ   rs   rt   rð   Q  s     )r   r@   Úallr¯   ro   rs   rs   rÔ   rt   Ú
test_evalfM  s    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©Úclsre   c                    s   ˆ | | ƒS rÀ   rs   r¹   ©ÚGrs   rt   r“   V  r”   ztest_replace.<locals>.<lambda>c                    s   ˆ | | ƒS rÀ   rs   r¹   ©ÚFrs   rt   r“   W  r”   ©rB   r   r   Úreplacero   )ÚKrç   ÚNrs   ©rü   rú   rt   Útest_replaceT  s
    r  c                     s†   t dtd�\‰ ‰tdd‡ fdd„ƒ} |  ˆ ˆd¡\}}|tdd‡fdd„ƒksRt‚|ˆ dƒˆdƒˆ d	ƒˆd	ƒˆ dƒˆdƒiks‚t‚d S )
Nrö   r÷   re   c                    s   ˆ | | ƒS rÀ   rs   r¹   rû   rs   rt   r“   ^  r”   z"test_replace_map.<locals>.<lambda>Tc                    s   ˆ | | ƒS rÀ   rs   r¹   rù   rs   rt   r“   `  r”   r   rg   rý   )rç   r   rL   rs   r  rt   Útest_replace_map\  s
    r  c                     s´   zddl m‰m}  W n tk
r0   tdƒ Y nX tddgddggƒ‰ ˆddgddggƒ}| ˆˆ ƒ|ƒslt‚| ˆˆ dd	�|ƒs‚t‚ttd
ƒ 	d¡d ƒdkr°t
t‡ ‡fdd„ƒ d S )Nr   )ÚarrayÚarray_equalú?NumPy must be available to test creating matrices from ndarraysrg   re   rf   rh   T©ÚcopyÚnumpyÚ.c                      s   ˆˆ dd�S )NFr  rs   rs   ©r    r  rs   rt   r“   m  r”   z'test_numpy_conversion.<locals>.<lambda>)r	  r  r  ÚImportErrorr^   r   ro   Úintrd   Úsplitr]   Ú	TypeError)r  Znp_arrayrs   r  rt   Útest_numpy_conversionc  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 )Nrg   re   rf   rh   r   rš   rj   ))rh   rf   ©re   rg   r™   r‹   ))re   rh   ©rg   rf   éùÿÿÿéýÿÿÿ)©rf   rg   )rh   re   )r   Zrot90ro   rÊ   rs   rs   rt   Ú
test_rot90o  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 )
Nrg   rh   ri   re   r™   rš   r  T)Zsimultaneous)r   rN   Úsubsro   rO   rs   rs   rs   rt   Ú	test_subsw  s    4(ÿ(ÿ$ÿ(ÿ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 )Nrf   rh   rg   re   ri   rj   r‹   rŒ   r�   r»   r¼   é   c                      s   ˆ   ddgg¡S )Nr   ri   )Úpermuters   rÔ   rs   rt   r“   †  r”   ztest_permute.<locals>.<lambda>c                      s   ˆ   tdƒ¡S )NrN   )r  r#   rs   rÔ   rs   rt   r“   ‡  r”   r   rp   )ÚorientationZbackward)Ú	direction)r  r  )ÚPermutation)
r   r]   r›   Ú
ValueErrorZpermute_rowsr  ro   Zpermute_colsZsympy.combinatoricsr  )rJ   r  rs   rÔ   rt   Ú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 )Nrg   re   r   rš   )r   Zupper_triangularro   )r    ÚRrs   rs   rt   Ú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 )Nrg   r   re   rš   )r   Zlower_triangularro   ©r    ÚLrs   rs   rt   Útest_lower_triangularÉ  s6    



ü



ü




ü




ü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 )
Nrg   re   rf   éÎÿÿÿrh   rj   éœÿÿÿc                      s   ˆ ˆ S rÀ   rs   rs   ©r†   ró   rs   rt   r“   í  r”   ztest_add.<locals>.<lambda>©r   rN   rO   rP   ro   r]   rV   rs   rs   r'  rt   Útest_addé  s    (Dr)  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 )Nrg   re   rf   rh   z2 @ aza @ 2)r   Ú
__matmul__ÚNotImplementedro   Ú__rmatmul__ÚevalÚSyntaxErrorr  rÔ   rs   rs   rt   Útest_matmulð  s    r/  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>.fooFrk   N)Ú__name__Ú
__module__Ú__qualname__Z	is_MatrixZis_MatrixLikeÚshapers   rs   rs   rt   Úfoo  s   r4  rg   re   rf   rh   N)r   r   ro   )r4  r    rJ   rs   rs   rt   Útest_non_matmul	  s
    ,r5  c                  C   s.   t ddddgƒ} |  t ddddgƒks*t‚d S )Nrg   re   r™   rš   ©r   ro   rò   rs   rs   rt   Útest_neg  s    r7  c                  C   s0   t ddddgƒ} | |  t ddddgƒks,t‚d S )Nrg   re   r   r6  rò   rs   rs   rt   Útest_sub  s    r8  c                  C   s:   t ddddgƒ} | d t ddtjtdƒd gƒks6t‚d S r×   )r   r!   r‚   ro   rò   rs   rs   rt   Útest_div#  s    r9  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 )Nre   rg   r   r÷   )rq   r   r-   ro   Útypers   rs   rs   rt   Útest_eye(  s     r;  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 )Nre   rg   rf   r÷   )rq   r   r3   ro   r:  rs   rs   rs   rt   Ú	test_ones/  s
     (r<  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 )Nre   r   rf   r÷   )rq   r   rG   ro   r:  rs   rs   rs   rt   Ú
test_zeros7  s
     (r=  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 )Nrg   re   rf   r   rh   ri   rj   r‹   c                      s   ˆˆ dˆˆdd�S )Nr‹   ri   ©rn   rs   rs   ©rI   rJ   rK   r)   rs   rt   r“   l  r”   z test_diag_make.<locals>.<lambda>r>  )rp   )rn   rp   F)Úunpackr÷   r  r  )r   r)   rN   rO   rP   ro   r]   r  r:  r3  r3   rs   rs   r?  rt   Útest_diag_make?  s¢     úù	ù	ù&&.þþÿ
ýÿ$ " 

þürA  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 )Nrf   r�   r   )r   rh   rŒ   rg   ©rg   ri   r™   )rf   r‹   re   ©re   rk   c                      s
   ˆ   d¡S r¸   ©Údiagonalrs   r§   rs   rt   r“   š  r”   ztest_diagonal.<locals>.<lambda>c                      s
   ˆ   d¡S )Nr  rD  rs   r§   rs   rt   r“   ›  r”   c                      s
   ˆ   t¡S rÀ   )rE  r5   rs   r§   rs   rt   r“   œ  r”   c                    s   i | ]}|t ˆ  |¡ƒ“qS rs   )rq   rE  rï   ræ   rs   rt   Ú
<dictcomp>ž  s   ÿ z!test_diagonal.<locals>.<dictcomp>)r   r¯   rE  ro   Útupler:  r"   r]   r  r3   r&   rn   rp   )rL   Úsrs   )rç   r†   rt   Útest_diagonalŽ  s(    
ÿÿrI  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 )Nrf   re   ©Ú
eigenvalue)ÚsizerK  Úupper)Zband)rL  ÚeigenvalrK  rg   r   Úlowerc                   S   s
   t  d¡S ©Nre   ©r   Újordan_blockrs   rs   rs   rt   r“   ²  r”   z#test_jordan_block.<locals>.<lambda>c                   S   s   t  dd¡S )Ng      @re   rQ  rs   rs   rs   rt   r“   ´  r”   c                   S   s   t jdd�S )Nre   rJ  rQ  rs   rs   rs   rt   r“   ¶  r”   c                   S   s   t jddd�S )Nre   rh   )rK  rN  rQ  rs   rs   rs   rt   r“   ¹  s    ÿ)rL  rN  )r   rR  ro   r]   r  rs   rs   rs   rt   Útest_jordan_block¢  s>    ÿþ  ÿýýû
ýÿÿrS  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 )Nrg   re   rf   rh   T©Ú	normalizeri   r™   éôÿÿÿrj   r   r�   r»   rŒ   r–   rš   é   é   c                      s   t jˆ ddiŽS ©NZ	rankcheckT©r   Úorthogonalizers   ©Úvecsrs   rt   r“   Ò  r”   z$test_orthogonalize.<locals>.<lambda>r‹   c                      s   t jˆ ddiŽS rY  rZ  rs   r\  rs   rt   r“   Õ  r”   )r   r[  ro   r@   r   r]   r  r'  rs   r\  rt   Útest_orthogonalizeÁ  s*    ,$ÿ"*ÿ"ÿ
  .*ÿ
((r^  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 )Nrg   r™   r   rf   r  rš   re   )r   Z	wilkinsonro   )ZwminusZwplusrs   rs   rt   Útest_wilkinson×  s<    ýýø
ùr_  c                  C   sž   t dƒ\} }tddd|  |gƒ}| | d¡tddtddƒ|gƒksFt‚tddt| ƒ|  f|ddfdd| d d ffƒ}| | d¡td|ddfd	fƒksšt‚d S )
Núx yre   rg   ri   rh   r»   r   )rg   rh   rg   )r»   ri   rg   )rB   r   Úlimitr   ro   r?   )rN   rO   r†   r    rs   rs   rt   Ú
test_limitø  s
    &0rb  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 )Nrg   re   rf   rh   ri   rj   r‹   rŒ   r�   c                      s   ˆ ˆ S rÀ   rs   rs   ©rç   Úvrs   rt   r“     r”   z"test_issue_13774.<locals>.<lambda>c                      s   ˆˆ  S rÀ   rs   rs   rc  rs   rt   r“     r”   )r   r]   r  rs   rs   rc  rt   Útest_issue_13774   s     
re  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 )NrN   rO   c                   S   s
   t  d¡S ©Nrg   )r   Ú	companionrs   rs   rs   rt   r“   
  r”   z test_companion.<locals>.<lambda>c                      s   t  tdgˆ ƒ¡S rf  ©r   rg  r   rs   rr   rs   rt   r“     r”   c                      s   t  tddgˆ ƒ¡S )Nre   rg   rh  rs   rr   rs   rt   r“     r”   c                      s   t  tˆ ˆ ˆ ˆgƒ¡S rÀ   rh  rs   ©rN   rO   rs   rt   r“     r”   zc0:3rg   r   )r#   r]   r  rB   r   rg  r   ro   )Zc0Úc1Úc2rs   ri  rt   Útest_companion  s    $ÿ$ÿrl  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 zrg   re   rf   )rB   r   r  Úzipro   )rN   rO   rP   rÃ   rÄ   rs   rs   rt   Útest_issue_10589  s    ,rn  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)r0  r1  r2  r   Z_op_priorityrs   rs   rs   rt   ÚFoo#  s   ro  re   rg   rf   rh   r‹   r»   é   é   )r   r   Ú
isinstancero   )ro  rI   rJ   rK   rs   rs   rt   Útest_rmul_pr19860"  s    rs  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 )Nrg   re   rf   rh   c                      s   ˆˆ  S rÀ   rs   rs   ©r    r¡   rs   rt   r“   4  r”   z"test_issue_18956.<locals>.<lambda>c                      s   ˆ ˆ S rÀ   rs   rs   rt  rs   rt   r“   5  r”   )r   r   r]   r  rs   rs   rt  rt   Útest_issue_189561  s    ru  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×   rs   ©Úselfrs   rs   rt   Ú__iter__:  s    ztest__eq__.<locals>.My.__iter__c                 S   s   t | ƒ| S rÀ   )rq   )rw  r³   rs   rs   rt   Ú__getitem__>  s    z"test__eq__.<locals>.My.__getitem__N)r0  r1  r2  rx  ry  rs   rs   rs   rt   ÚMy9  s   rz  re   rg   c                   @   s   e Zd Zdd„ ZdS )ztest__eq__.<locals>.My_sympyc                 S   s   t | ƒS rÀ   ©r   rv  rs   rs   rt   Ú_sympy_C  s    z$test__eq__.<locals>.My_sympy._sympy_N)r0  r1  r2  r|  rs   rs   rs   rt   ÚMy_sympyB  s   r}  )Úobjectr   ro   )rz  rI   r}  rs   rs   rt   Ú
test__eq__8  s
    r  c                  C   s´   t tƒD ]¦\} }| dd¡}|jdkr:tdd„ |jD ƒƒs>t‚|jdkrVt|jƒtksZt‚|j	dkrrt|j	ƒtksvt‚| d sšt| 
¡ ƒtttfks®t‚qt| ¡ ƒtkst‚qd S )Nrf   re   )rf   re   c                 s   s   | ]}t |ƒtkV  qd S rÀ   )r:  r  rï   rs   rs   rt   rð   L  s     ztest_args.<locals>.<genexpr>)Ú	enumerateÚall_classesrG   r3  rô   ro   rn   r:  r  rp   r²   rq   rG  r$   r|   r‰   )ró   rø   r†   rs   rs   rt   Ú	test_argsH  s    "r‚  c               
   C   sˆ   t tfD ]8} |  dd¡}tƒ � |j}W 5 Q R X || ¡ kst‚qttfD ]8} |  dd¡}tƒ � |j	}W 5 Q R X || 
¡ ksJt‚qJd S ©Nrf   re   )r   r   rG   ra   Z_matr²   ro   r"   r   Z_smatr|   )rø   r†   ÚmatZsmatrs   rs   rt   Útest_deprecated_mat_smatU  s    r…  c                  C   s8   t ddttgƒ} | t t ddtt tt gƒks4t‚d S r×   )r   rN   rO   rP   ro   )rd  rs   rs   rt   Útest_divisionb  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 )
Nrg   re   rf   r%  rh   rj   r&  c                      s   ˆ ˆ S rÀ   rs   rs   r'  rs   rt   r“   k  r”   ztest_sum.<locals>.<lambda>r(  rs   rs   r'  rt   Útest_sumg  s    (Dr‡  c                  C   st   t ddgttggƒ} t| ƒt ddgttƒttƒggƒks<t‚t dddtgƒ} t dddttƒgƒ}t| ƒ|kspt‚d S )Nrg   rš   re   r  rf   )r   rN   rO   Úabsr   ro   r'  rs   rs   rt   Útest_absn  s
    (r‰  c                  C   sH   t dƒ} t dƒ}| | |  |¡  kr>t ddgddggƒksDn t‚d S )N)©rg   re   r  ©rŠ  )rf   r   re   rh   rj   rg   )r   Úaddro   ©rI   rJ   rs   rs   rt   Útest_additionv  s    rŽ  c               
   C   sz  t tfD �]š} | ddtdƒƒ}||d d …d d …f ks:t‚|dd d …f t dddddgƒks`t‚|d d …df t dddgƒks‚t‚|ddgd d …f t dddgdddggƒks²t‚|ddgdf |ddgdgf ksØt‚|dddgf |dgddgf ksþt‚|d d …ddgf t ddgddgd	dggƒk�s2t‚|d
 dk�sDt‚|dd…d d …f t dddgdddggƒk�svt‚|d d …dd…f t ddgddgd	dggƒk�sªt‚|d d d…df |ddgdf k�sÒt‚|dd d d…f |dddgf k�sút‚| ddtdƒƒ}|dddddgd d …f t dddgd	ddgdddgd	ddgdddggƒk�sZt‚|d d …dddddgf t dddddgdddddgd	ddddggƒkst‚qt d¡}d|d< d|d< d|d< | ddgdg¡t dgdggƒk�sðt‚| ddgdddg¡t dddgdddggƒk�s$t‚| ddddgddddg¡t ddddgddddgddddgddddggƒk�svt‚d S )Nrf   r�   rg   rh   ri   r‹   r   re   rj   ry   rŒ   rŠ  rz   ©re   r   )r   r"   r¯   ro   rG   r¾   )rç   rI   rs   rs   rt   Útest_fancy_index_matrix„  sZ    &"0&&424((ûý
þþ



ür�  c                     s4  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‚ˆ ˆ } | 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�s&t‚|d dk�s8t‚|d dk�sJt‚|d
 dk�s\t‚|d dk�snt‚|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�st‚t	ˆ }| |k�s(t‚dˆ } t| t ƒ�s@t‚| d dk�sRt‚| d dk�sdt‚| d
 dk�svt‚| d dk�sˆt‚t t
dgdt
ggƒ}|d	 |k�s®t‚t t
t
gddggƒ}|d	 t ttgttggƒk�sät‚t tddƒƒ}tdd	ƒ }t |||gƒ}| |¡t |g|g|ggƒk�s0t‚d S )N)rŠ  r  ©r   rj   r‹  c                      s   ˆˆ  S rÀ   rs   rs   r�  rs   rt   r“   ¼  r”   z%test_multiplication.<locals>.<lambda>c                      s   ˆ i  S rÀ   rs   rs   rÔ   rs   rt   r“   ½  r”   ry   r‹   rz   re   r{   rj   rk   r�  é   r  r   rh   c                      s
   t ˆ ˆƒS rÀ   )r1   rs   r�  rs   rt   r“   ×  r”   rN   rf   ri   r»   rp  rg   )r   r]   rV   r  ro   r1   Zmultiply_elementwiser#   rr  rN   r4   r2   r3   r   )rK   Úhrk  rç   r    Ú_hr¡   rs   r�  rt   Útest_multiplication°  sj    
"
ýr•  c                
      sv	  t tdd„ ƒ tddgddggƒ‰ ˆ d tddgd	d
ggƒksBt‚tdddgdddgdddggƒ‰ ˆ d tdddgdddgdddggƒksŽt‚ˆ 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‚ˆ tdƒ td"dgd#d$ggƒk�sdt‚tdƒd% tdƒk�s~t‚td$d#gd&d'ggƒ‰ ˆ tj d d … ddddgk�s¶t‚tddgd(dggƒ‰ ˆ tj d ˆ k�sât‚tddgddggƒtj tddgtjdggƒk�st‚tddgddggƒd) tddgd)dggƒk�sJt‚dd*l	m
‰ tdtgddggƒˆ tdtˆ gddggƒk�sŒt‚tttgdtggƒˆ ttˆ ttˆd   ˆ gdtˆ ggƒk�sÖt‚ttˆ tˆd  ˆ tˆ ˆd  tˆ ˆ  dtd   gdtˆ tˆd  ˆ gddtˆ ggƒ�sDt‚ttddgdtdgddtggƒˆ ttˆ tˆd  ˆ dgdtˆ dgddtˆ ggƒk�s¦t‚tddgddggƒ‰ ˆ  tdƒ¡ˆ  d¡k�sØt‚tdggƒ‰ ˆ d td+ggƒ  k�r$ˆ  tdƒ¡  k�r$ˆ  d¡k�s*n t‚tddddd,gdd,d,ddgdddddgdddddgdddddggƒ‰t t‡fd-d„ƒ t td.d„ ƒ tdddgdddgdddggƒ‰ ˆ d/ tdddgdddgdddggƒk�sÜt‚t t‡ fd0d„ƒ t t‡ fd1d„ƒ td2dgddggƒ‰ ˆ d/ td3d4gd5d6ggƒk�s6t‚tdddgdddgdddggƒ‰ ˆ d/ tdddgdddgdddggƒk�s„t‚tdddgdddgdddggƒ‰ ˆ d/ tdddgdddgdddggƒk�sÒt‚td7d8d9�‰tˆ ˆ tƒ�sòt‚td7d8d8d:�‰t t‡ ‡fd;d„ƒ td7d8d8d<�‰ˆ ˆ ttdˆƒtdˆƒtdˆƒ tdˆƒ d gdtdˆƒdtdˆƒ gdddggƒk�s‚t‚ˆ ˆd  tdddgdddgdddggƒk�s´t‚t t‡ fd=d„ƒ tdddgdddgdddggƒ‰ ˆ d> td?d@dAgdBdCdDgdEdFdGggƒk�st‚ˆ d> ˆ d k�s*t‚tdddgd(ddgdddggƒ‰ td7ƒ‰ˆ ˆ ‰ˆ ˆd¡ ¡ ˆ d k�sxt‚t t‡‡fdHd„ƒ ˆˆ ˆ dˆ  k�s¦t‚tdddgdddgdddggƒ‰ td7d8d8dI�‰ˆ ˆ ˆ k�sæt‚td7d8d8d<�‰ˆ ˆ tdˆ dˆ dˆ ƒk�st‚ˆ ˆ  ˆd¡tdƒk�s8t‚ˆ ˆ  ˆd¡tdƒk�sVt‚tdddgdddgdddggƒ‰ ˆ dJ tdKdKdKƒk�s�t‚ˆ t tdt dt dt ƒk�s¶t‚tdddgdddgdddggƒ‰ t t‡ fdLd„ƒ t t‡ fdMd„ƒ ttjtjgtjtjggƒ‰ ˆ tj ˆ k�	s*t‚tddgddggƒ‰ ˆ tj ttjtjgdtj dtj ggƒk�	srt‚d S )NNc                   S   s   t dƒd S ©NrŠ  re   r{  rs   rs   rs   rt   r“   û  r”   ztest_power.<locals>.<lambda>re   rf   rh   ri   iü  i¡  i,*  i�7  rg   rj   r  i"  i  éû   iÀ  i¸  ip  i¾  iº  i±  r   éd   ry   r‹   r»   rp  rq  é   Zcayley©ÚmethodÚmultiplyr�   é   é!   i€–˜ é0   é9   r™   g      à?rò   i   r  c                      s   ˆ   tdƒ¡S ©Nr»   )Ú_matrix_pow_by_jordan_blocksr!   rs   r§   rs   rt   r“   %  r”   c                   S   s   t ddgddggƒ tdƒ¡S )Nrg   rf   éöÿÿÿ)r   r¢  r!   rs   rs   rs   rt   r“   (  r”   ç      $@c                      s   ˆ d S ©NçÍÌÌÌÌÌ @rs   rs   rÊ   rs   rt   r“   +  r”   c                      s   ˆ t ddƒ S rƒ  ©r   rs   rÊ   rs   rt   r“   ,  r”   rŒ   i«ÒòhiÒO<ivï´0i¿óˆró   T)Úinteger)r¨  Únegativec                      s   ˆ ˆ S rÀ   rs   rs   )r    ró   rs   rt   r“   6  r”   )r¨  Znonnegativec                      s   ˆ t ddƒ S rƒ  r§  rs   rÊ   rs   rt   r“   =  r”   g      @é¨   éH   éY   i#  é�   é¡   i<  i  iI  c                      s   ˆ   ˆd¡ ¡ S )Nrš   )r  rë   rs   )ÚAnró   rs   rt   r“   E  r”   )r¨  Úpositiver¦  gd%îû%@c                      s   ˆ d S r¥  rs   rs   rÊ   rs   rt   r“   T  r”   c                      s   ˆ t  S rÀ   ©r   rs   rÊ   rs   rt   r“   U  r”   )r]   rU   r   ro   r-   r   Úpowr!   r‚   Ú	sympy.abcró   rI   rJ   r¢  Z_eval_pow_by_recursionrT   r  r#   rr  r   r   r  rë   r)   rG   r   rs   rs   )r    r¯  r†   ró   rt   Ú
test_powerú  s²      , 6"&$626J<ý$ý0ÿD ." . .*ý2 .  & & r´  c               	   C   s´   t dt dt gdt dt ggƒ} tdƒ�~ |  ¡  ¡ t tdt ƒtdƒ d tdt ƒ tdƒ d gtdt ƒ tdƒ d tdt ƒtdƒ d ggƒks¦t‚W 5 Q R X d S )Nrg   Tre   )r   rN   rZ   r+   r,   ro   ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_1\  s    $
00þrµ  c               	   C   s\   t dt dt gdt dt ggƒ} tdƒ�& |  ¡ \}}|| | ¡  sNt‚W 5 Q R X d S ©Nrg   T)r   rN   rZ   Újordan_formÚinvro   ©rç   ÚPÚJrs   rs   rt   Ú$test_issue_17247_expression_blowup_2d  s    $
r¼  c               	   C   sŒ   t dt dt gdt dt ggƒ} tdƒ�V | d t dtd  d ddtd   gddtd   dtd  d ggƒks~t‚W 5 Q R X d S )Nrg   Tr˜  l                )r   rN   rZ   ro   ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_3k  s    $
þr½  c               	   C   s<   t tdƒƒ} tdƒ� | d t tdƒƒks.t‚W 5 Q R X d S )Na1  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128]]Tr»   aŸ  [
            [     7369525394972778926719607798014571861/604462909807314587353088 - 229284202061790301477392339912557559*I/151115727451828646838272,   -19704281515163975949388435612632058035/1208925819614629174706176 + 14319858347987648723768698170712102887*I/302231454903657293676544,      -3623281909451783042932142262164941211/604462909807314587353088 - 6039240602494288615094338643452320495*I/604462909807314587353088,    109260497799140408739847239685705357695/2417851639229258349412352 - 7427566006564572463236368211555511431*I/2417851639229258349412352, -16095803767674394244695716092817006641/2417851639229258349412352 + 10336681897356760057393429626719177583*I/1208925819614629174706176,    -42207883340488041844332828574359769743/2417851639229258349412352 - 182332262671671273188016400290188468499*I/4835703278458516698824704],
            [50566491050825573392726324995779608259/1208925819614629174706176 - 90047007594468146222002432884052362145*I/2417851639229258349412352,  74273703462900000967697427843983822011/1208925819614629174706176 + 265947522682943571171988741842776095421*I/1208925819614629174706176, -116900341394390200556829767923360888429/2417851639229258349412352 - 53153263356679268823910621474478756845*I/2417851639229258349412352, 195407378023867871243426523048612490249/1208925819614629174706176 - 1242417915995360200584837585002906728929*I/9671406556917033397649408,   -863597594389821970177319682495878193/302231454903657293676544 + 476936100741548328800725360758734300481*I/9671406556917033397649408, -3154451590535653853562472176601754835575/19342813113834066795298816 - 232909875490506237386836489998407329215*I/2417851639229258349412352],
            [   -1715444997702484578716037230949868543/302231454903657293676544 + 5009695651321306866158517287924120777*I/302231454903657293676544,     -30551582497996879620371947949342101301/604462909807314587353088 - 7632518367986526187139161303331519629*I/151115727451828646838272,           312680739924495153190604170938220575/18889465931478580854784 - 108664334509328818765959789219208459*I/75557863725914323419136,    -14693696966703036206178521686918865509/604462909807314587353088 + 72345386220900843930147151999899692401*I/1208925819614629174706176,  -8218872496728882299722894680635296519/1208925819614629174706176 - 16776782833358893712645864791807664983*I/1208925819614629174706176,      143237839169380078671242929143670635137/2417851639229258349412352 + 2883817094806115974748882735218469447*I/2417851639229258349412352],
            [   3087979417831061365023111800749855987/151115727451828646838272 + 34441942370802869368851419102423997089*I/604462909807314587353088, -148309181940158040917731426845476175667/604462909807314587353088 - 263987151804109387844966835369350904919*I/9671406556917033397649408,   50259518594816377378747711930008883165/1208925819614629174706176 - 95713974916869240305450001443767979653*I/2417851639229258349412352,  153466447023875527996457943521467271119/2417851639229258349412352 + 517285524891117105834922278517084871349*I/2417851639229258349412352,  -29184653615412989036678939366291205575/604462909807314587353088 - 27551322282526322041080173287022121083*I/1208925819614629174706176,   196404220110085511863671393922447671649/1208925819614629174706176 - 1204712019400186021982272049902206202145*I/9671406556917033397649408],
            [     -2632581805949645784625606590600098779/151115727451828646838272 - 589957435912868015140272627522612771*I/37778931862957161709568,     26727850893953715274702844733506310247/302231454903657293676544 - 10825791956782128799168209600694020481*I/302231454903657293676544,      -1036348763702366164044671908440791295/151115727451828646838272 + 3188624571414467767868303105288107375*I/151115727451828646838272,     -36814959939970644875593411585393242449/604462909807314587353088 - 18457555789119782404850043842902832647*I/302231454903657293676544,      12454491297984637815063964572803058647/604462909807314587353088 - 340489532842249733975074349495329171*I/302231454903657293676544,      -19547211751145597258386735573258916681/604462909807314587353088 + 87299583775782199663414539883938008933*I/1208925819614629174706176],
            [  -40281994229560039213253423262678393183/604462909807314587353088 - 2939986850065527327299273003299736641*I/604462909807314587353088, 331940684638052085845743020267462794181/2417851639229258349412352 - 284574901963624403933361315517248458969*I/1208925819614629174706176,      6453843623051745485064693628073010961/302231454903657293676544 + 36062454107479732681350914931391590957*I/604462909807314587353088,  -147665869053634695632880753646441962067/604462909807314587353088 - 305987938660447291246597544085345123927*I/9671406556917033397649408,  107821369195275772166593879711259469423/2417851639229258349412352 - 11645185518211204108659001435013326687*I/302231454903657293676544,     64121228424717666402009446088588091619/1208925819614629174706176 + 265557133337095047883844369272389762133*I/1208925819614629174706176]])r   r!   rZ   ro   ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_4s  s    
r¾  c               	   C   sl   t dddd„ ƒ} tdƒ�J |  d¡ttd ddt  td   dt td	   td
d�ks^t‚W 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S ©Nrg   r™   r±  r¹   rs   rs   rt   r“   ¡  r”   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>TrN   éúÿÿÿri   é$   rh   ZEX©Údomain)r   rZ   Úcharpolyr   rN   r   ro   ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_5   s    
rÅ  c               	   C   sD   t dddd„ tdƒD ƒƒ} tdƒ� |  d¡dks6t‚W 5 Q R X d S )NrŒ   c                 S   s   g | ]}t | ‘qS rs   rr   rï   rs   rs   rt   rÐ   §  s     z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>é@   TZbareissr   ©r   r¯   rZ   Údetro   ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_6¦  s    
rÉ  c               	   C   s:   t dddd„ ƒ} tdƒ� |  d¡dks,t‚W 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r¿  r±  r¹   rs   rs   rt   r“   ­  r”   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>TÚ	berkowitzr   )r   rZ   rÈ  ro   ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_7¬  s    
rË  c               	   C   sD   t dddd„ tdƒD ƒƒ} tdƒ� |  d¡dks6t‚W 5 Q R X d S )NrŒ   c                 S   s   g | ]}t | ‘qS rs   rr   rï   rs   rs   rt   rÐ   ³  s     z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>rÆ  TZlur   rÇ  ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_8²  s    
rÌ  c                  C   sÚ   t dddd„ tdƒD ƒƒ} tdƒ�® |  ¡ 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ddddddddgddddddddggƒdfksÌt‚W 5 Q R X d S )NrŒ   c                 S   s   g | ]}t | ‘qS rs   rr   rï   rs   rs   rt   rÐ   ¹  s     z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>rÆ  Trg   r   r™   rš   r  r®   r–   rÀ  re   rf   rh   ri   rj   r‹   rz   )r   r¯   rZ   Úrrefro   ræ   rs   rs   rt   Ú$test_issue_17247_expression_blowup_9¸  s    
øørÎ  c               	   C   s<   t dddd„ ƒ} tdƒ� |  dd¡dks.t‚W 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r¿  r±  r¹   rs   rs   rt   r“   Ç  r”   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>Tr   )r   rZ   Zcofactorro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_10Æ  s    
rÏ  c               	   C   sF   t dddd„ ƒ} tdƒ�$ |  ¡ t dddgd ƒks8t‚W 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r¿  r±  r¹   rs   rs   rt   r“   Í  r”   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>Tr   rÁ  )r   rZ   Zcofactor_matrixro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_11Ì  s    
rÐ  c               	   C   sH   t dddd„ ƒ} tdƒ�& |  ¡ dddt dddiks:t‚W 5 Q R X d S )Nrj   c                 S   s   dd| |  t   S r¿  r±  r¹   rs   rs   rt   r“   Ó  r”   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Trg   r   rh   )r   rZ   Z	eigenvalsr   ro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_12Ò  s    
rÑ  c               	   C   s„  t ddt td dt gdt td dtd gddt td dt gdddt dggƒ} |  ¡ }|d ddt ddddgƒgfks„t‚|d d ttdƒtd   d ks¬t‚|d d dksÀt‚|d d d jddd�t t tdƒtd   d td  gdt td dt  d  td ttdƒtd   d  td dt  d   gt tdƒtd   d td  gdggƒk�s€t‚|d d ttdƒtd   d k�sªt‚|d d dk�sÀt‚|d d d jddd�t t tdƒtd   d td  gdt td dt  d  td ttdƒtd   d  td dt  d   gt tdƒtd   d td  gdggƒk�s€t‚d S )	Nr   rg   re   r™   FT)ÚdeepZnumerr®   )r   rN   Z
eigenvectsro   r@   r,   )rç   Zevrs   rs   rt   Ú%test_issue_17247_expression_blowup_13Ø  s0    ü$("P"ü*"P"ürÓ  c                  C   s"  t dddt dt gd dt dt gd  d ƒ} tdƒ�Ü |  ¡ t td dt td dt td dt td dt gddt ddt ddt ddt 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ddddddddggƒk�st‚W 5 Q R X d S ©NrŒ   rg   rh   Tr   )r   rN   rZ   Zechelon_formro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_14ô  s    4
2"ørÕ  c                  C   s¼   t dddt dt gd dt dt gd  d ƒ} tdƒ�v |  ¡ t td dt td dt td dt td dt ggƒt ddt ddt ddt ddt ggƒgks®t‚W 5 Q R X d S rÔ  )r   rN   rZ   Zrowspacero   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_15  s    4
rÖ  c                  C   sè   t dddt dt gd dt dt gd  d ƒ} tdƒ�¢ |  ¡ t td gdt gtd gdt gtd gdt gtd gdt ggƒt dt gtd gdt gtd gdt gtd gdt gtd ggƒgksÚt‚W 5 Q R X d S )NrŒ   rg   rh   T)r   rN   rZ   Zcolumnspacero   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_16  s    4
r×  c                  C   s(  t dddd„ tdƒD ƒƒ} tdƒ�ü |  ¡ t dgdgdgdgdgdgdgdggƒt d	gd
gdgdgdgdgdgdggƒt dgdgdgdgdgdgdgdggƒt dgdgdgdgdgdgdgdggƒt dgdgdgdgdgdgdgdggƒt dgdgdgdgdgdgdgdggƒgk�st‚W 5 Q R X d S )NrŒ   c                 S   s   g | ]}t | ‘qS rs   rr   rï   rs   rs   rt   rÐ     s     z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>rÆ  Trg   rš   r   re   r  rf   r®   rh   r–   ri   rÀ  rj   r  )r   r¯   rZ   Z	nullspacero   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_17  s    
&&&&&&úrØ  c               	   C   sX   t dddt dt gd dt dt gd  d ƒ} tdƒ� |  ¡ rJt‚W 5 Q R X d S )Nrj   rg   rf   T)r   rN   rZ   Úis_nilpotentro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_18  s    4
rÚ  c               	   C   s0   t tdƒƒ} tdƒ� |  ¡ r"t‚W 5 Q R X d S )Nay  [
        [             -3/4,                     0,         1/4 + I/2,                     0],
        [                0, -177/128 - 1369*I/128,                 0, -2063/256 + 541*I/128],
        [          1/2 - I,                     0,                 0,                     0],
        [                0,                     0,                 0, -177/128 - 1369*I/128]]T)r   r!   rZ   Úis_diagonalizablero   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_19   s    
rÜ  c                  C   sì   t td dt ddgdt td dtd gddt td dgdddtd ggƒ} tdƒ�Š |  ¡ t dddtd t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t ddgddtd dgdddtd ggƒfksÞt‚W 5 Q R X d S )Nrg   r   Tr™   re   )r   rN   rZ   Údiagonalizero   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_20*  s(    ü



ü
üûrÞ  c               	   C   s@   t tdƒƒ} tdƒ�" | jdd�t tdƒƒks2t‚W 5 Q R X d S )Ná�  [
        [             -3/4,       45/32 - 37*I/16,                   0,                     0],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,                   0, -2063/256 + 541*I/128],
        [                0,         9/4 + 55*I/16, 2473/256 + 137*I/64,                     0],
        [                0,                     0,                   0, -177/128 - 1369*I/128]]TÚGErš  áv  [
            [-26194832/3470993 - 31733264*I/3470993, 156352/3470993 + 10325632*I/3470993, 0, -7741283181072/3306971225785 + 2999007604624*I/3306971225785],
            [4408224/3470993 - 9675328*I/3470993, -2422272/3470993 + 1523712*I/3470993, 0, -1824666489984/3306971225785 - 1401091949952*I/3306971225785],
            [-26406945676288/22270005630769 + 10245925485056*I/22270005630769, 7453523312640/22270005630769 + 1601616519168*I/22270005630769, 633088/6416033 - 140288*I/6416033, 872209227109521408/21217636514687010905 + 6066405081802389504*I/21217636514687010905],
            [0, 0, 0, -11328/952745 + 87616*I/952745]]©r   r!   rZ   r¸  ro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_21=  s    
rã  c               	   C   s@   t tdƒƒ} tdƒ�" | jdd�t tdƒƒks2t‚W 5 Q R X d S )Nrß  TÚLUrš  rá  râ  ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_22K  s    
rå  c               	   C   sD   t tdƒƒ} tdƒ�& | jdd� ¡ t tdƒƒks6t‚W 5 Q R X d S )Nrß  TÚADJrš  rá  )r   r!   rZ   r¸  r,   ro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_23Y  s    
rç  c               	   C   s@   t tdƒƒ} tdƒ�" | jdd�ttdƒƒks2t‚W 5 Q R X d S )Nrß  TÚCHrš  rá  ©r"   r!   rZ   r¸  r   ro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_24g  s    
rê  c               	   C   s@   t tdƒƒ} tdƒ�" | jdd�ttdƒƒks2t‚W 5 Q R X d S )Nrß  TÚLDLrš  rá  ré  ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_25u  s    
rì  c               	   C   s4   t tdƒƒ} tdƒ� |  ¡ dks&t‚W 5 Q R X d S )Na¹  [
        [             -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,      1/4 - 5*I/16,      65/128 + 87*I/64,         -9/32 - I/16,      183/256 - 97*I/128],
        [-149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,  85/256 - 33*I/16,  805/128 + 2415*I/512, -219/128 + 115*I/256, 6301/4096 - 6609*I/1024],
        [          1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,         1/4 + I/2,      -129/64 - 9*I/64,         1/4 - 5*I/16,        65/128 + 87*I/64],
        [   -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,  125/64 + 87*I/64, -2063/256 + 541*I/128,     85/256 - 33*I/16,    805/128 + 2415*I/512],
        [            1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,              -3/4,       45/32 - 37*I/16,            1/4 + I/2,        -129/64 - 9*I/64],
        [         21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64, -149/64 + 49*I/32, -177/128 - 1369*I/128,     125/64 + 87*I/64,   -2063/256 + 541*I/128],
        [               -2,         17/4 - 13*I/2,             1 + I,         -19/4 + 5*I/4,           1/2 - I,         9/4 + 55*I/16,                 -3/4,         45/32 - 37*I/16],
        [     1/4 + 13*I/4,    -825/64 - 147*I/32,          21/8 + I,    -537/64 + 143*I/16,    -5/8 - 39*I/16,   2473/256 + 137*I/64,    -149/64 + 49*I/32,   -177/128 - 1369*I/128]]Trh   ©r   r!   rZ   Úrankro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_26ƒ  s    	
rï  c               	   C   s¬   t ddt td dt gdt td dtd gddt td dt gdddt dggƒ} tdƒ�B |  ¡ \}}| ¡ t tdƒƒ ¡ ksŠt‚|t tdƒƒksžt‚W 5 Q R X d S )Nr   rg   Ta±  [
            [    0,  4*x/(x**2 - 2*x + 1), -(-17*x**4 + 12*sqrt(2)*x**4 - 4*sqrt(2)*x**3 + 6*x**3 - 6*x - 4*sqrt(2)*x + 12*sqrt(2) + 17)/(-7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 + 8*x**3 - 2*x**2 + 8*x + 6*sqrt(2)*x - 5*sqrt(2) - 7), -(12*sqrt(2)*x**4 + 17*x**4 - 6*x**3 - 4*sqrt(2)*x**3 - 4*sqrt(2)*x + 6*x - 17 + 12*sqrt(2))/(7*x**4 + 5*sqrt(2)*x**4 - 6*sqrt(2)*x**3 - 8*x**3 + 2*x**2 - 8*x + 6*sqrt(2)*x - 5*sqrt(2) + 7)],
            [x - 1, x/(x - 1) + 1/(x - 1),                       (-7*x**3 + 5*sqrt(2)*x**3 - x**2 + sqrt(2)*x**2 - sqrt(2)*x - x - 5*sqrt(2) - 7)/(-3*x**3 + 2*sqrt(2)*x**3 - 2*sqrt(2)*x**2 + 3*x**2 + 2*sqrt(2)*x + 3*x - 3 - 2*sqrt(2)),                       (7*x**3 + 5*sqrt(2)*x**3 + x**2 + sqrt(2)*x**2 - sqrt(2)*x + x - 5*sqrt(2) + 7)/(2*sqrt(2)*x**3 + 3*x**3 - 3*x**2 - 2*sqrt(2)*x**2 - 3*x + 2*sqrt(2)*x - 2*sqrt(2) + 3)],
            [    0,                     1,                                                                                            -(-3*x**2 + 2*sqrt(2)*x**2 + 2*x - 3 - 2*sqrt(2))/(-x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x + 1 + sqrt(2)),                                                                                            -(2*sqrt(2)*x**2 + 3*x**2 - 2*x - 2*sqrt(2) + 3)/(x**2 + sqrt(2)*x**2 - 2*sqrt(2)*x - 1 + sqrt(2))],
            [1 - x,                     0,                                                                                                                                                                                               1,                                                                                                                                                                                             1]]a  [
            [0, 1,                       0,                       0],
            [0, 0,                       0,                       0],
            [0, 0, x - sqrt(2)*(x - 1) + 1,                       0],
            [0, 0,                       0, x + sqrt(2)*(x - 1) + 1]])r   rN   rZ   r·  r,   r!   ro   r¹  rs   rs   rt   Ú%test_issue_17247_expression_blowup_27‘  s    ü
rð  c               	   C   s8   t tdƒƒ} tdƒ� |  ¡ tdƒks*t‚W 5 Q R X d S )Nrß  Ta�  [
            sqrt(14609315/131072 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) + 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2 + sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 + sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2),
            sqrt(14609315/131072 - sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))/2 - sqrt(64789115132571/2147483648 - 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3) - 76627253330829751075/(35184372088832*sqrt(64789115132571/4294967296 + 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)) + 2*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3))) - 3546944054712886603889144627/(110680464442257309696*(25895222463957462655758224991455280215303/633825300114114700748351602688 + sqrt(1213909058710955930446995195883114969038524625997915131236390724543989220134670)*I/22282920707136844948184236032)**(1/3)))/2)])r   r!   rZ   Zsingular_valuesro   ræ   rs   rs   rt   Ú%test_issue_17247_expression_blowup_28¥  s    
rñ  c               	   C   s4   t tdƒƒ} tdƒ� |  ¡ dks&t‚W 5 Q R X d S )Na¢	  [
        [1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I,15/128-3/32*I,19/256+551/1024*I],
        [21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I,129/256-549/512*I,42533/16384+29103/8192*I],
        [-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I,3/64+13/64*I,-23/32-59/256*I],
        [1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I,119/128+143/128*I,-10879/2048+4343/4096*I],
        [-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I,-9/32-1/16*I,183/256-97/128*I],
        [1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I,-219/128+115/256*I,6301/4096-6609/1024*I],
        [-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I,1/4-5/16*I,65/128+87/64*I],
        [-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I,85/256-33/16*I,805/128+2415/512*I],
        [0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I,1/4+1/2*I,-129/64-9/64*I],
        [1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I,125/64+87/64*I,-2063/256+541/128*I],
        [0,-4*I,0,-6,-4,9-5*I,-4*I,27/2+6*I,-2,17/4-13/2*I,1+I,-19/4+5/4*I,1/2-I,9/4+55/16*I,-3/4,45/32-37/16*I],
        [0,1/4+1/2*I,1,-9/4+3*I,-2*I,119/8+29/4*I,1/4+5/2*I,-23/8-57/16*I,1/4+13/4*I,-825/64-147/32*I,21/8+I,-537/64+143/16*I,-5/8-39/16*I,2473/256+137/64*I,-149/64+49/32*I,-177/128-1369/128*I]]TrŒ   rí  ræ   rs   rs   rt   Útest_issue_16823³  s    
rò  c                  C   sæ  t dddddddddg	dtdƒ dtdƒ dtdƒ tdƒ d dddddg	ddtdƒ  ddtdƒ  ddtdƒ  ddtdƒ  dddddg	dtdƒ d dd	tdƒ  dd	tdƒ  dd	tdƒ  ddd
dd	g	d
dtdƒ  dtdƒ d
 dtdƒ d
 d
dtdƒ  d
dd
ddg	dd	tdƒ  dd	tdƒ  dtdƒ d dd	tdƒ  d
dddd	g	ddtdƒ  ddtdƒ  ddtdƒ  ddtdƒ  dddddg	dtdƒ tdƒ d dtdƒ dtdƒ dddddg	gƒ} tdƒ�ø |  ¡ t ddddddddtdƒd g	ddddddddtdƒ d g	ddddddddtdƒd g	ddddddddtdƒ d g	dddddddddg	ddddddddtdƒ d g	dddddddddg	ddddddddtdƒ d g	gƒdfk�sØt‚W 5 Q R X d S )Nrg   r   re   r™   r–   r  rš   r  rf   r‹   rh   rV  r  T)r   rg   re   rf   rh   ri   rj   r‹   )r   r@   rZ   rÍ  r!   ro   ræ   rs   rs   rt   Útest_issue_18531Æ  s.    6DDDDD6ø

øøró  c            
      C   sÚ  t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tƒ� dtdƒd< W 5 Q R X tƒ tg ƒ  krltddg ƒksrn t‚tg gƒtd	dg ƒksŒt‚tg g gƒtd
dg ƒks¨t‚tƒ �* td	gdggƒ ¡ d	gdggksÔt‚W 5 Q R X tƒ �0 td	gdggƒj ¡ d	ggdggk�st‚W 5 Q R X tdggƒ} tƒ � tj	| d< W 5 Q R X tt
dgddggƒ}|}|j|jk�slt‚|jd
k�s|t‚|d d … t
dddgk�sšt‚td
d
t
dddgƒ}|}|j|jk�sÄt‚|jd
k�sÔt‚|d d … t
dddgk�sòt‚||k�s t‚t|ƒ|k�st‚td
dtd	dƒƒ}td	dtddƒƒ}t||gƒ}|jdk�sRt‚|jdk�sbt‚|d d … d	d
dddddddg	k�sŠt‚ttd
ƒƒtd
ƒk�s¤t‚tttd
ƒƒƒttd
ƒƒk�sÆt‚t|ƒ| ¡ k�sÜt‚tt|ƒƒt|ƒ ¡ k�sút‚|t|ƒk	�st‚tdd
ƒtddƒd
 gtd
dƒd td
d
ƒd gg}t|ƒ} | td	d	d
d
d
gd	d	d
d
d
gd	d	d
d
d
gdddddgdddddggƒk�s–t‚|  ¡ |k�s¨t‚t|dd� ¡ |k�sÂt‚tdd
d
ƒ}td
ƒ|g}t|ƒtd	d	gd	d	g|d |d g|d |d ggƒk�st‚tƒ �* t|dd� ¡ dd„ |D ƒk�sDt‚W 5 Q R X ttd
ƒtdƒgƒttd
ƒgƒk�svt‚t tdd„ ƒ t tdd„ ƒ td	d
gddggƒ} t| dgƒ}	|	td	d
gddgddggƒk�sÖt‚d S )Nc                   S   s   t ddtdƒƒS )Nri   r™  )r   r¯   rs   rs   rs   rt   r“   ß  r”   ztest_creation.<locals>.<lambda>c                   S   s   t ddg ƒS )Nri   r™   r{  rs   rs   rs   rt   r“   à  r”   c                   S   s   t dƒd S r–  r{  rs   rs   rs   rt   r“   á  r”   ri   rŠ  rf   r   rg   re   rC  ry   r‹   r»   rh   rj   rŒ   r�   Fré   r    rz   r{   rk   c                 S   s   g | ]
}|g‘qS rs   rs   rï   rs   rs   rt   rÐ   #  s     z!test_creation.<locals>.<listcomp>c                   S   s   t tdƒtddƒgƒS )Nre   r   rf   ©r   r3   rs   rs   rs   rt   r“   '  r”   c                   S   s   t tdƒtddƒgƒS )Nre   rf   r   rô  rs   rs   rs   rt   r“   (  r”   )ri   rj   )r]   r  r›   r   ro   ra   r„   rã   r!   ZEmptySetrN   rp   rn   r¯   r-   r   Úas_immutableZ
as_mutabler3   r   )
rç   rI   r†   rJ   Zc23Zc13rK   Údatr    rÄ   rs   rs   rt   Útest_creationÞ  s‚    
(.4("4ûü.(r÷  c                   C   s¢   t  dtddƒtddƒd tddƒd tddƒd tddƒd tddƒd tddƒd ¡t 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‚d S )Nrf   re   rg   rh   ri   rj   r‹   )r   Z	irregularr3   ro   rs   rs   rs   rt   Útest_irregular_block0  s    &   ÿüÿrø  c                  C   s*  t dƒ} | d d…d d…f t dƒks(t‚| dd…dd…f tdƒksHt‚tdddd„ ƒ}|dd d …f tdddƒksxt‚|dd…df tddd	ƒ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ƒ}|d d …df tddddddgƒksðt‚|dd …d d …f tddddgddddggƒk�s&t‚d S )Nrh   rf   re   r   c                 S   s   | | S rÀ   rs   r¹   rs   rs   rt   r“   >  r”   ztest_slicing.<locals>.<lambda>rg   rˆ   rÈ   ri   rj   r‹   rŒ   r�   r»   r¼   r  é   é   rp  r™   rš   )r-   ro   rG   r   )Úm0r}   r~   rs   rs   rt   Útest_slicing9  s        0(rü  c                  C   sü   t dƒ} tdƒ| dd…dd…f< | tdƒks0t‚tdƒ| d d…d d…f< | tdƒksXt‚tdddƒ| d d …df< | tdƒks€t‚t dƒ| d d …d d …f< | t dƒks¨t‚ddd	d
g| d d …d d …f< | tdƒksÔt‚ddg| d d…df< | tdƒksøt‚d S )Nrh   re   )©r   r   r   r   rý  )r   r   rg   r   )r   r   r   rg   rg   ©rg   re   rf   rh   r   ))rg   r   r   r   )re   rg   r   r   )rf   r   rg   r   )rh   r   r   rg   ©ri   rj   r‹   rŒ   ©r�   r»   r¼   r  ©rù  rú  rp  é   ©rþ  rÿ  r   r  ))r   re   rf   rh   )r   rj   r‹   rŒ   r   r  )rG   r-   r   ro   r§   rs   rs   rt   Útest_submatrix_assignmentG  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 )Nrf   rg   r�   )	rg   r   r   r   rg   r   r   r   rg   rh   c                 S   s   | | S rÀ   rs   r¹   rs   rs   rt   r“   f  r”   ztest_reshape.<locals>.<lambda>)rˆ   )rf   rg   re   )rf   rh   re   )rf   rh   ri   re   rj   ))r   rg   re   rf   rg   re   )rf   rh   re   rf   rh   ri   )r-   Úreshaper   ro   ©rû  r}   rs   rs   rt   Útest_reshapec  s     ÿÿr  c                  C   sD   t dƒ} |  dd„ ¡t dƒd ks&t‚|  dd„ ¡tdƒks@t‚d S )Nrf   c                 S   s   d|  S rP  rs   rr   rs   rs   rt   r“   n  r”   z test_applyfunc.<locals>.<lambda>re   c                 S   s   dS ©Nr   rs   rr   rs   rs   rt   r“   o  r”   )r-   Ú	applyfuncro   rG   )rû  rs   rs   rt   Útest_applyfuncl  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 tt| ƒgƒjdd�t t|ƒtt	|ƒ  gƒksØt‚t dddgddd	gdddggƒ ¡ t ddt
ddƒgddd	gdddggƒk�s(t‚d S )
Nre   rf   rI   TrÞ   )Úcomplexr   rg   r™   )r   rN   rO   r,   ro   r#   r+   r   r(   r?   r   )rû  r}   rI   rs   rs   rt   Útest_expandr  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 rP  )r   r   rN   r@   rO   Zrefiner   rß   ro   r°  r©  r  rs   rs   rt   Útest_refine…  s    .ÿ<0r  c                  C   s6  t ddƒ} t dddd�} | t dddd�ks.t‚t ddddƒ} t dddd�} | t dddd�ks`t‚|  ¡ }| ¡  || ks|t‚t d¡}| t dd|d�ksœt‚d	D ],}d
D ]"}t |d||d�} | | jks¨t‚q¨q t dddd�} d}t| jd ƒD ]4}t| jd ƒD ] }| ||f dk�r |d7 }�q qî|dk�s2t‚d S )Nrf   )Úseedrh   r   é–   T)r  Ú	symmetric)r  Úprng)r»   r¼   )r˜  éF   é   )r  Úpercentr  r»   rg   r  )Úminr  r  )	r6   ro   r  r>   ÚrandomÚRandomrã   r¯   r3  )rç   r!   ÚrngrL  r  Z
zero_countr³   rº   rs   rs   rt   Útest_random’  s,    

r  c               2      s
  t dƒ} |  ¡ t dƒkst‚| jdd�t dƒks4t‚| jdd�t dƒksLt‚| jdd�t dƒksdt‚| jdd�t dƒks|t‚| jdd�t dƒks”t‚tdd	d
gd	ddgdd	dggƒ} |  ¡ }| | t d	ƒksÐt‚| jdd�|ksät‚| jdd�|ksøt‚| jdd�|k�st‚| jdd�|k�s$t‚| jdd�|k�s:t‚tdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddgdddddddddddddddddddddddddggƒ}|jdd�| t |jd ƒk�szt‚t‰ ˆ dddgdddgdddggƒ‰t‡ ‡fdd„d ¡ D ƒƒ�sÀt‚t‰ ˆ dddgdddgdddggƒ‰t‡ ‡fdd„d ¡ D ƒƒ�st‚d S )Nrh   rä  rš  ræ  rè  rë  ZQRre   rf   ri   rj   rŒ   r   rg   ZBLOCKrŸ  é1   é   r�   éG   é^   é;   é   éA   c                 3   s    | ]}t ˆ |¡ƒˆ kV  qd S rÀ   ©r:  r¸  ©rÏ   rH  ©rø   r†   rs   rt   rð   ã  s     ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   s    | ]}t ˆ |¡ƒˆ kV  qd S rÀ   r!  r"  r#  rs   rt   rð   è  s     )	r-   r¸  ro   r   r3  r   rô   r  r   )r    ZAinvZAArs   r#  rt   Útest_inverse±  sr    
þ6444444444444444444444444è$
þ"
þr$  c                  C   sˆ  t dƒ\} }}}}t dƒ}tdddddd|  | d| |  d|  d|   d|  | d|  d|   gdddddd|  | d| |  d|  | d|d    dgdd|  | d| |  d|  d|   d|  | d|  d|   ddddgdd|  | d| |  d|  | d|d    dddddgdddd|  | d| |  d|  d|   d|  | d|  d|   ddgdddd|  | d| |  d|  | d|d    dddgdd|  | | d| |  d| |   dd|  | | d| |  d| |   dd|  | | d| |  d| |   dggƒ}| ¡ }|| tdƒ  t¡tdƒk�sbt‚td	d
„ | 	t
¡D ƒƒdk �s„t‚d S )Nz)Tau Tau_syn_in Tau_syn_ex C_m Tau_syn_gapÚ__hr   ç      ð?ç       @ç      ð¿re   r‹   c                 s   s   | ]}t |ƒV  qd S rÀ   ©rˆ  ©rÏ   Úfrs   rs   rt   rð   ÿ  s     z:test_inverse_symbolic_float_issue_26821.<locals>.<genexpr>ç     @�@)rB   r   r¸  r-   r	  rH   rG   ro   ÚmaxÚatomsr
   )ÚTauZ
Tau_syn_inZ
Tau_syn_exZC_mZTau_syn_gapr%  rç   ZMirs   rs   rt   Ú'test_inverse_symbolic_float_issue_26821ë  s    L<L<L<|ù
$r0  c                  C   s  t dƒ\} }}}}t dƒ}tdddddddgd|d  d| dddddgdddddddgddd|d  d| dddgdddddddgddddd|d  d| dgd| dd| dd| dd|  ggƒ}||  ¡ }| |¡||   t¡td	ƒksöt‚td
d„ | 	t
¡D ƒƒdk �st‚d S )Nz-Tau, Tau_syn_in, Tau_syn_ex, C_m, Tau_syn_gapr%  r   r&  r™   re   rš   rg   r‹   c                 s   s   | ]}t |ƒV  qd S rÀ   r)  r*  rs   rs   rt   rð     s     z6test_matrix_exponential_issue_26821.<locals>.<genexpr>r,  )rB   r   r+   r*   r	  rH   rG   ro   r-  r.  r
   )rI   rJ   rK   rL   r’   rM   rç   ZMers   rs   rt   Ú#test_matrix_exponential_issue_26821  s     ù
$r1  c                  C   sB  t ddtd t dtd  tt  gƒ} ttg}|  |¡t dt t td gtdt t ggƒksft‚t ddttd td  gƒ} |  |¡t ddgdt td  td d td  ggƒksÀt‚td t }ttg}t||ƒt dt dt gdt dggƒk�st‚td td  }t||ƒt dtd  dt td  gdt td  dtd  t ggƒk�sdt‚tttd   }td dtd   }t ddt gdt dt ggƒ}|t|t ttgƒƒk�sÄt‚|t|t ttgƒjƒk�sât‚t|ttf|gƒt ddtd  dt gdtd  dt dt gdt dt dggƒk�s>t‚d S )Nrg   re   rh   rf   r   rj   )r   rN   rO   Újacobianro   r.   rP   rã   )r#  Zsymsr+  ÚgÚansrs   rs   rt   Útest_jacobian_hessian  s0    (6>0>ÿ
ÿýr5  c                  C   s8  t ttƒttƒgtƒttƒd ttƒd  ks2t‚t ttƒtdt ƒgtƒtdt ƒks\t‚t ttƒtgtƒttƒtttƒ  ks†t‚t dttd gtƒdks¢t‚dttƒ ttƒ t dttƒ ttƒ td   dttƒ ttƒ t  ttƒttƒ td   ttƒttƒ td   } t ttƒttƒtd gtƒ ¡ | k�sHt‚t ttƒttƒtd gtdd� ¡ | k�svt‚td  ttƒd  td ttƒd   dt ttƒd   dt ttƒd   }t ttƒttƒtd gtƒ ¡ |k�sòt‚t ttƒttƒtd gtdd� ¡ |k�s t‚t g tƒdk�s4t‚d S )Nre   rf   rg   rÀ  rj   rÊ  rš  )rF   r(   rN   r?   ro   r+   r,   )Zw1Zw2rs   rs   rt   Útest_wronskian4  s&    2**Jÿÿ*"ÿ
R*"ÿ
r6  c                  C   s®   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‚tD ]0} t ddgddggƒ|  d¡ ddi¡ksxt‚qxd S )	Nrg   rh   ri   re   r™   rš   r  r   )r   rN   Úxreplacero   rO   r�  r-   r÷   rs   rs   rt   Útest_xreplaceE  s    ÿ$ÿr8  c               
   C   sª  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ƒ} 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t
ttƒd ttƒd  ggƒƒt
dggƒk�srt‚tddgddggƒ}d| ¡   ¡ tdd	ƒk�s¦t‚d S )
Nró   r+  rg   re   )Úratior  rf   rh   é"   )r#   r   r   rN   rO   r(   r5   r>   ro   r4   r   r?   Útracer   )ró   r+  rç   Úeqr†   rs   rs   rt   Útest_simplifyN  sD     :ÿ&ÿ:þ&þ&"
ÿ
r=  c                  C   s¨   t ddddddddd	d
g
ddddddddd	d
g
gƒ} | jt ddgddgddgddgddgddgddgddgd	d	gd
d
gg
ƒks‚t‚| jj| ks’t‚| j|  ¡ ks¤t‚d S )Nrg   re   rf   rh   ri   rj   r‹   rŒ   r�   r   )r   rã   ro   Z	transposeræ   rs   rs   rt   Útest_transposev  s     ÿ÷
r>  c               	   C   s†   t tdd„ ƒ tdtttgddttgdddtgddddggƒ} | jtddddgt dddgt t ddgt t tdggƒks‚t‚d S )Nc                   S   s
   t dƒjS r¸   )r-   r£   rs   rs   rs   rt   r“   ˆ  r”   z!test_conj_dirac.<locals>.<lambda>rg   r   r™   )r]   ÚAttributeErrorr   r   r£   ro   ræ   rs   rs   rt   Útest_conj_dirac‡  s    


ýýr@  c                  C   s4   t dddgdddgdddggƒ} |  ¡ dks0t‚d S )Nrg   r   ri   rŒ   rú  )r   r;  ro   ræ   rs   rs   rt   Ú
test_trace•  s
    
þrA  c                  C   sH   t ddddgƒ} | jdkst‚t tddgdtdggƒ}|jdksDt‚d S )Nrg   re   r   rŠ  rÈ   )r   r3  ro   rN   rO   )r†   rç   rs   rs   rt   Ú
test_shapeœ  s    
ÿrB  c                  C   st  t tddgdtdggƒ} |  ddd„ ¡ | t tddgdtd dggƒksLt‚|  ddd„ ¡ | t td ddgdt td dggƒksˆt‚|  d¡t td ddggƒksªt‚|  d¡}d|d< | d	 td ksÐt‚| dd d
…f }d|d< | d	 td ksüt‚|  d¡}|t td dt gƒk�s$t‚d|d< | d	 td k�sBt‚| d d …df }d|d< | d	 td k�spt‚d S )Nr   rg   c                 S   s   | | d S rf  rs   )Úrrº   rs   rs   rt   r“   §  r”   z!test_col_row_op.<locals>.<lambda>re   rf   c                 S   s   | t |  S rÀ   )rO   )rK   rº   rs   rs   rt   r“   «  r”   é*   ry   r™   )r   rN   rO   Zrow_opro   Zcol_opr¥   r¦   )rç   Úr1rj  rs   rs   rt   Útest_col_row_op¤  s2    
ÿÿÿ"

rF  c                  C   sX   t dddgdddggƒ} |  dd¡ | d dks4t‚| d	 dksDt‚| d
 dksTt‚d S )Nrg   re   rf   rh   ri   rj   r{   r  ry   rŠ  r’  )r   Zrow_multro   ræ   rs   rs   rt   Útest_row_multÁ  s    
ÿrG  c                  C   sb   t dddgdddgdddggƒ} |  ddd¡ | d dks>t‚| d	 dksNt‚| d
 dks^t‚d S )Nrg   re   rf   rh   ri   rj   r   ry   r{   ©r   re   rŒ   )r   Zrow_addro   ræ   rs   rs   rt   Útest_row_addÊ  s    
þrI  c                  C   s¦   t D ]œ} |  d¡}| dddd„ ¡ || dddgdddgdddggƒksLt‚|  d¡d }d|d< | ddd	d„ ¡ | || dddgd
ddgdddggƒkst‚qd S )Nrf   rg   r   c                 S   s   | d|  S rP  rs   ©rd  Úurs   rs   rt   r“   ×  r”   z!test_zip_row_op.<locals>.<lambda>re   r™   rz   c                 S   s   | d|  S rP  rs   rJ  rs   rs   rt   r“   Þ  r”   rh   )Úmutable_classesr-   Z
zip_row_opro   )rø   rç   rs   rs   rt   Útest_zip_row_opÔ  s    
þ þrM  c                  C   sj   t dddgƒ} t dddgƒ}t dddgƒ}| dks6t‚| dksBt‚| dksNt‚| |ksZt‚| |ksft‚d S )Nrg   re   rf   rs   )rg   r6  )r†   rI   rJ   rs   rs   rt   Útest_issue_3950ä  s    rN  c                  C   s  G dd„ dƒ} G dd„ dƒ}| ƒ }|ƒ }t dddgƒ}|| dksFt‚d||< |d dks^t‚t dddgd	dd
ggƒ}|||f d
ksŠt‚|d|f d
ksžt‚||df d
ks²t‚d	|||f< |d d	ksÎt‚d
|d|f< |d d
ksêt‚d||df< |d dk�st‚d S )Nc                   @   s   e Zd Zdd„ ZdS )ztest_issue_3981.<locals>.Index1c                 S   s   dS rf  rs   rv  rs   rs   rt   Ú	__index__ñ  s    z)test_issue_3981.<locals>.Index1.__index__N©r0  r1  r2  rO  rs   rs   rs   rt   ÚIndex1ð  s   rQ  c                   @   s   e Zd Zdd„ ZdS )ztest_issue_3981.<locals>.Index2c                 S   s   dS rP  rs   rv  rs   rs   rt   rO  õ  s    z)test_issue_3981.<locals>.Index2.__index__NrP  rs   rs   rs   rt   ÚIndex2ô  s   rR  rg   re   rf   ri   rh   rj   rŠ  rŒ   r6  )rQ  rR  Zindex1Úindex2r†   rs   rs   rt   Útest_issue_3981ï  s$    rT  c                  C   s\   t dddggƒ} | jdkst‚t dgdgdggƒ} | jdks@t‚tddƒ} | jdksXt‚d S )Nrg   re   rf   TFrh   )r   Zis_upperro   rG   rÔ   rs   rs   rt   Útest_is_upper  s    
rU  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 )Nrg   re   rf   FT)r   Úis_lowerro   rÔ   rs   rs   rt   Útest_is_lower  s    rW  c                  C   sp   t ddddddddddddddddddgƒ} |  ¡ s8t‚t ddgddggƒ} |  ¡ rXt‚t g ƒ} |  ¡ slt‚d S )Nrh   r   re   rg   rj   rf   )r   rÙ  ro   rÔ   rs   rs   rt   Útest_is_nilpotent  s    ,rX  c                  C   s  d\} }t | |ƒ}| d¡ dt| |ƒ }||ks6t‚|j|j  krNdksTn t‚|j|j  krldksrn t‚|j|j  krŠdks�n t‚t dƒt ddƒks¦t‚tdƒtddƒks¼t‚t ddƒtdddgd ƒksÜt‚tddƒtdddgd ƒksüt‚| d¡ |t | |ƒk�st‚d S )N)rf   ri   ri   rf   re   r   rj   rg   )rG   Úfillr3   ro   rn   rp   r3  r   )ró   r†   rI   rJ   rs   rs   rt   Útest_zeros_ones_fill'  s    

  
rZ  c                  C   sf   t dƒ} | tƒ kst‚t ddƒ} | jdks.t‚| jdks<t‚t ddƒ} | jdksTt‚| jdksbt‚d S )Nr   re   )rG   r   ro   rn   rp   rÔ   rs   rs   rt   Útest_empty_zeros<  s    

r[  c                  C   sŒ  t td tt gtttƒ tttƒ ggƒ} |  t¡t dt tgttƒttƒggƒksZt‚t tt td gttƒdt tt ƒ tdt  ggƒ tt	¡t t	t	 t	gt	dt	ggƒks¸t‚t ttƒd t dt tt  tt gdt t
tƒt
ttd ƒƒggƒ td¡t dddgt	dtdƒggƒk�s*t‚|  t¡t tddƒtd  ttd  d gtd ttƒ d td ttƒ d ggƒk�sˆt‚d S )Nre   rg   r   rf   )r   rN   rO   r?   r(   r*   ro   r+   ra  r4   rˆ  r/   r   rÔ   rs   rs   rt   Útest_issue_3749G  s0    ,."þ þý$þ þý

 &þr\  c                  C   sD   t dƒ} |  dd¡ dD ]&}| j|dd„ d�| jdd	�kst‚qd S )
Nrh   r   rg   )rà  rä  c                 S   s   | dkS r  rs   rr   rs   rs   rt   r“   [  r”   z%test_inv_iszerofunc.<locals>.<lambda>)r›  Ú
iszerofuncræ  rš  )r-   Zcol_swapr¸  ro   )r    r›  rs   rs   rt   Útest_inv_iszerofuncW  s    
ÿr^  c                  C   sÂ   t dƒ\} }t| t|ƒ | t|ƒ gƒ}t| |gƒ}| |¡}|| |j¡ksRt‚||j |¡ksft‚||j |j¡ks|t‚|jt|jd ƒ | }| 	t
¡}|tddgd| d ggƒks¾t‚d S )Núrho,phir   rg   re   )rB   r   r(   r?   r2  rã   ro   r-   r3  r	  rE   )ÚrhoÚphiÚXÚYr»  r3  rs   rs   rt   Útest_jacobian_metrics_  s    

rd  c                  C   sˆ   t dƒ\} }t| t|ƒ | t|ƒ | d gƒ}t| |gƒ}tt|ƒ|  t|ƒ gt|ƒ| t|ƒ gd|  dggƒ}| |¡|ks„t‚d S )Nr_  re   r   )rB   r   r(   r?   r2  ro   )r`  ra  rb  rc  r»  rs   rs   rt   Útest_jacobian2l  s    "
ýre  c                  C   sØ   t ttt t ƒttt t ƒttt t ƒgƒ} t tttgƒ}tddƒD ]ˆ}tddƒD ]x}| d |…d d …f }|d |…d d …f }| |¡}|j|ksœt‚|j	|ksªt‚t|ƒD ]}|d d …|f |ks²t‚q²qXqJd S ©Nrg   rf   )
r   r+   rN   rO   rP   r¯   r2  rn   ro   rp   )rb  rc  r³   rº   ZX_sliceZY_slicer»  Úkrs   rs   rt   Útest_issue_4564x  s    2
rh  c                      s¤   t ttt t ƒttt t ƒgttt t ƒttt t ƒggƒ‰ tt‡ fdd„ƒ ˆ dd d …f ‰ t ttgttggƒ‰tt‡ ‡fdd„ƒ tt‡ fdd„ƒ d S )Nc                      s   ˆ   ttttgƒ¡S rÀ   ©r2  r   rN   rO   rP   rs   ©rb  rs   rt   r“   ‰  r”   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
   ˆ   ˆ¡S rÀ   )r2  rs   ©rb  rc  rs   rt   r“   Œ  r”   c                      s   ˆ   tttgttggƒ¡S rÀ   ri  rs   rj  rs   rt   r“   �  r”   )r   r+   rN   rO   rP   r]   r  rs   rs   rk  rt   Útest_nonvectorJacobian†  s     ÿrl  c                  C   sP   t ddgddggƒ} |  ¡ }|jdks*t‚tdƒD ]}|| |d ks2t‚q2d S ©Nrg   rf   re   rh   )r   Zvecrp   ro   r¯   )r†   Zm_vecr³   rs   rs   rt   Útest_vec�  s
    rn  c                  C   s6  t ddgddggƒ} |  ¡ }|jdks*t‚tdƒD ]}|| |d ks2t‚q2| jdd�}|d dksht‚t dttt  gtt td  dggƒ} | jdd�}|d tt td  ks¸t‚t dttt  gtt dggƒ} | jddd�}|d tt ksút‚ttdd	„ ƒ tt	d
d	„ ƒ ttdd	„ ƒ tt	dd	„ ƒ d S )Nrg   re   rf   FrD  r   )rE  Zcheck_symmetryc                   S   s   t ddggƒ ¡ S rf  ©r   Úvechrs   rs   rs   rt   r“   ©  r”   ztest_vech.<locals>.<lambda>c                   S   s   t ddgddggƒ ¡ S rm  ro  rs   rs   rs   rt   r“   ª  r”   c                   S   s   t ddggƒ ¡ S rf  ro  rs   rs   rs   rt   r“   «  r”   c                   S   s   t ddgddggƒ ¡ S rm  ro  rs   rs   rs   rt   r“   ¬  r”   )
r   rp  rp   ro   r¯   rN   rO   r]   rV   r  )r†   Zm_vechr³   rs   rs   rt   Ú	test_vech˜  s"    ( rq  c                      s`   t dddgƒtdddgƒks t‚dddgg‰ tt‡ fdd„ƒ t ˆ dd�tdddgƒks\t‚d S )Nrg   re   rf   c                      s   t ˆ ƒS rÀ   )r)   rs   r§   rs   rt   r“   ³  r”   ztest_diag.<locals>.<lambda>F)Ústrict)r)   r   ro   r]   r  rs   rs   r§   rt   Ú	test_diag¯  s     rs  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| ||ƒ}|jdd�t|  ¡ | ¡ | ¡ ƒks|t‚t| ||ƒ}|jdd�t|  ¡ | ¡ | ¡ ƒks°t‚t| ||ƒ}|jdd�t|  ¡ | ¡ | ¡ ƒksät‚t| | || || ƒ}|jdd�t|  ¡ |  ¡ | ¡ |  ¡ | ¡ |  ¡ ƒk�s2t‚|jddd�t| jdd�| jdd�|jdd�| jdd�|jdd�| jdd�ƒk�sˆt‚d S )	Nrg   re   rf   T)Útry_block_diagræ  )rt  r›  rš  )r   rN   rO   rP   r)   r¸  ro   )rI   rJ   rK   r    rs   rs   rt   Útest_inv_block·  s4     (((     ÿ
 
 

 
 
þru  c                   C   sæ   t tdd„ ƒ t tdd„ ƒ ttdƒƒtdƒks4t‚ttdƒƒtdƒksLt‚t tdd„ ƒ ttdƒƒtdƒksrt‚ttdƒƒtdƒksŠt‚t tdd„ ƒ ttdƒtdƒƒtddƒks¸t‚t tdd„ ƒ t td	d„ ƒ t td
d„ ƒ dS )zg
    Check that matrix dimensions can be specified using any reasonable type
    (see issue 4614).
    c                   S   s
   t ddƒS )Nrf   r™   ©rG   rs   rs   rs   rt   r“   Î  r”   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddƒS ©Nrg   re   rf   rh   rv  rs   rs   rs   rt   r“   Ï  r”   rf   c                   S   s   t dƒS ©Nç      @rv  rs   rs   rs   rt   r“   Ò  r”   c                   S   s   t dƒS rx  ©r-   rs   rs   rs   rt   r“   Õ  r”   rh   c                   S   s   t dƒS rŽ   r{  rs   rs   rs   rt   r“   ×  r”   c                   S   s
   t ddƒS r×   r{  rs   rs   rs   rt   r“   Ø  r”   c                   S   s   t ddggƒS r×   r{  rs   rs   rs   rt   r“   Ù  r”   N)	r]   r  r  rG   r  ro   r   r-   r3   rs   rs   rs   rt   Útest_creation_argsÉ  s     r{  c                  C   sv  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dƒ} |  ¡ stt‚|  ¡ 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	ƒ} |  ¡ �sJt‚| jdd��r\t‚|  ¡ jdd��srt‚d S )	Nre   r   rg   FrÌ   rf   ))ri   r   r‘  ry   ))ri   r   r   )r   rj   r   )	r   Úis_diagonalro   rÙ   r)   rG   rN   rO   r,   r§   rs   rs   rt   Útest_diagonal_symmetricalÜ  s,    6r}  c                     s´  t ddt gdt dggƒ‰ ˆ  ¡ s(t‚t ddddddddgƒ‰ ˆ  ¡ rLt‚ˆ  ¡ rXt‚tt‡ fdd„ƒ tdddƒ‰ ˆ  ¡ \} }| t	dƒks’t‚|ˆ ksžt‚t ddd	ddd	gƒ‰ ˆ  ¡ s¾t‚ˆ  ¡ sÊt‚ˆ  ¡ \} }|  
¡ ˆ  |  |ksît‚t dddd	d	dgƒ‰ ˆ  ¡ �st‚ˆ  ¡ �st‚ˆ  ¡ \} }|  
¡ ˆ  |  |k�sDt‚| t	dƒk�sVt‚|ˆ k�sdt‚t ddddd	d	gƒ‰ ˆ  ¡ �s†t‚ˆ  ¡ \} }|  
¡ ˆ  |  |k�s¬t‚t ddddd	d	dd	dd
dg	ƒ‰ ˆ  ¡ �sØt‚ˆ  ¡ \} }|  
¡ ˆ  |  |k�sþt‚| D ]}| ¡ d dk�st‚�qt dddd	d	d	gƒ‰ ˆ  ¡ �sBt‚ˆ  ¡ �sPt‚ˆ  ¡ \} }|  
¡ ˆ  |  |k�svt‚| t d	dgdd	ggƒk�s”t‚t ddd	ddd	gƒ‰ ˆ  d¡�r¸t‚tt‡ fdd„ƒ ˆ  ¡ �sØt‚ˆ  ¡ \} }|  
¡ ˆ  |  |k�sþt‚t ddd	dd	d	gƒ‰ ˆ  ¡ �r t‚tt‡ fdd„ƒ t dddddddddddg	ƒ‰ ˆ  ¡ �r^t‚tt‡ fdd„ƒ tdƒ\}}}}t dd||||gƒ‰ ˆ  ¡ �s¢t‚ˆ  ¡ �s°t‚d S )Nrg   re   rf   r  r™  r»   c                      s   ˆ   ¡ S rÀ   ©rÝ  rs   r§   rs   rt   r“   	  r”   z&test_diagonalization.<locals>.<lambda>r   r®   r™   Tc                      s
   ˆ   d¡S )NTr~  rs   r§   rs   rt   r“   /	  r”   c                      s   ˆ   ¡ S rÀ   r~  rs   r§   rs   rt   r“   7	  r”   rš   rh   c                      s   ˆ   ¡ S rÀ   r~  rs   r§   rs   rt   r“   ;	  r”   za b c d)r   r   rÛ  ro   rÙ   r]   rU   r)   rÝ  r-   r¸  Zas_numer_denomr|  rT   rB   )rº  r£   r³   rI   rJ   rK   rL   rs   r§   rt   Útest_diagonalizationü  sl    r  c                      sv   t ddgddggƒ‰ ˆ  ¡ dks$t‚dˆ d< ˆ  ¡ dks<t‚t ddgddggƒ‰ ˆ  ¡  dˆ d< tt‡ fdd„ƒ d S )Nr   rg   Tr{   Fc                      s   ˆ   ¡ S rÀ   r~  rs   rÔ   rs   rt   r“   N	  r”   z"test_issue_15887.<locals>.<lambda>)r   rÛ  ro   rÝ  r]   rT   rs   rs   rÔ   rt   Útest_issue_15887D	  s    r€  c                     sf  t ddddddddgƒ‰ tt‡ fdd„ƒ t ddd	d
dddddddg	ƒ‰ t dddddddddddg	ƒ} ˆ  ¡ \}}| |ks~t‚| ˆ  ¡ d ks’t‚t dddddddddddg	ƒ‰ t dddddddddddg	ƒ} ˆ  ¡ \}}| |ksæt‚t dddddddddddg	ƒ‰ t dddddddddddg	ƒ} ˆ  ¡ \}}| |k�s<t‚t dddddddddddg	ƒ‰ t dddddddddddg	ƒ} ˆ  ¡ \}}| |k�s’t‚t ddddddddddddddddddgƒ‰ t ddddddddddddddddddgƒ} ˆ  ¡ \}}| |k�st‚t ddddddddddddddddddgƒ‰ t ddddddddddddddddddgƒ} ˆ  ¡ \}}| |k�svt‚t ddddddddddddddddddgƒ‰ ˆ  ¡ �r°t‚t ddddddddddddddddddgƒ} ˆ  ¡ \}}| |k�söt‚t tddd�td dd�gtd!dd�td"dd�ggƒ‰ ˆ  ¡ \}}| ¡ D ]"}t	|tƒ�r>|j
dk�s>t‚�q>d S )#Nrf   re   r  rg   r™  r»   c                      s   ˆ   ¡ S rÀ   )r·  rs   r§   rs   rt   r“   T	  r”   z"test_jordan_form.<locals>.<lambda>r‹   rV  rj   iíÿÿÿr  ièÿÿÿrù  r™   r   r®   rh   rš   éñÿÿÿr–   rÀ  ri   r  é÷ÿÿÿéøÿÿÿr�   z1.0én   )Ú	precisionz2.0z3.14159265358979323846264338327z4.0)r   r]   rU   r·  ro   rÝ  rÛ  r
   rá   rr  Z_prec)ZJmustrº  r»  Útermrs   r§   rt   Útest_jordan_formQ	  s‚    
,         ý,         ý,,ÿ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dt  }ddt  }t |dddgd|ddgdd|dgddd|ggƒ}t |dddgd|ddgdd|dgddd|ggƒ}|  ¡ \}}||ksÈ||ksÈt‚t|| | ¡  ƒ| ksät‚d S )Nre   rh   rg   r   r®   )r   r   r·  ro   r>   r¸  )r    ÚpÚqZJmust1ZJmust2rº  r»  rs   rs   rt   Ú#test_jordan_form_complex_issue_9274œ	  s(    


ý


ý


ý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stt‚|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 )Nrg   r   )r   r·  ro   r¹  rs   rs   rt   Útest_issue_10220°	  s"    


ý


ý



ü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 t t d ttd gdt ddt dgdtdƒ d td  dtdƒ d td  gddddggƒks°t‚|t t dddgdt ddgddtdgdddtggƒksìt‚d S )Nrg   r   rš   r™   re   )r   r·  r,   r   r!   ro   )r    rº  r»  rs   rs   rt   Útest_jordan_form_issue_15858Â	  s&    



ü.
ü

ürŒ  c                  C   sx  t dƒ\} }}t| |  |d ||   || ||  g|| ||  | |d ||   ggƒ}| t¡}|ttd ||  ||   d| |  ||  t  || |  ||   tdd�ksÂt‚t|ƒtksÒt‚tddgddggƒ}| ¡ | t¡  k�rttd t d ƒk�sn t‚tddgtdggƒ}| t¡}|jtk�sLt‚| 	¡  
|jt¡td dt  k�stt‚d S )	Nz
UA K_i K_wre   zZZ(K_i,K_w,UA)rÂ  rg   rf   r   rj   )rB   r   rÄ  rN   r   ro   r:  r   ÚgenZas_exprr  )ZUAZK_iZK_wr    rÄ  rˆ  rs   rs   rt   Útest_Matrix_berkowitz_charpolyÕ	  s(    *$ÿ
0ÿ ÿÿ8
rŽ  c                  C   sˆ   t dƒ} t d| ¡}| ¡ tt| ƒggƒks0t‚t d| ¡}| ¡ tt| ƒt| ƒt| ƒd gdt| ƒt| ƒgddt| ƒggƒks„t‚d S )NÚlamdarg   rf   re   r   )r#   r   rR  Z_eval_matrix_exp_jblockr+   ro   )r´   r†   rs   rs   rt   Útest_exp_jordan_blockì	  s    ýÿr�  c                  C   s  t ddgddggƒ} t tdƒdtdƒ d dtdƒ d  gdtdƒggƒ}|  ¡ |ks\t‚t| ƒ|kslt‚t ddgddggƒ} |  ¡ t tdgdtggƒks t‚t| ƒt tdgdtggƒksÀt‚t ddgddggƒ} |  ¡ t ttdƒ t tdƒ gttdƒ ttdƒ ggƒk�st‚d S )	Nrf   rh   r   rš   r®   ri   rg   r™   )r   r+   ro   r   r(   r?   )r†   Zm_exprs   rs   rt   Útest_expú	  s    8  r‘  c               
      sî   t dƒ} t d| ¡‰ ˆ  ¡ tt| ƒggƒks0t‚t d| ¡‰ ˆ  ¡ tt| ƒd|  dd| d   dd| d   gdt| ƒd|  dd| d   gddt| ƒd|  gdddt| ƒggƒks¸t‚tdddgdddgdddggƒ‰ tt‡ fdd	„ƒ d S )
Nr�  rg   rh   r™   re   rf   r   c                      s   ˆ   ¡ S rÀ   )r0   rs   r§   rs   rt   r“   
  r”   ztest_log.<locals>.<lambda>)r#   r   rR  Z_eval_matrix_log_jblockr0   ro   r]   rT   )r´   rs   r§   rt   Útest_log
  s(    *üÿÿ
þÿr’  c                  C   sR   t dƒ} tdd| t| ƒd t| ƒd  tjgƒ}t|ƒ\}}}}|tjksNt‚d S )NrN   rf   rg   re   )r#   r   r(   r?   r!   r‚   rS   ro   ©rN   ÚcolumnZpivot_offsetZ	pivot_valZpivot_assumed_nonzeroZ
simplifiedrs   rs   rt   Ú:test_find_reasonable_pivot_naive_finds_guaranteed_nonzero1!
  s
    (ÿ
r•  c                  C   sn   t dƒ} tdd| t| ƒd t| ƒd  | d  t| ƒd t| ƒd  gƒ}t|td�\}}}}|dksjt‚d S )NrN   rf   rg   re   ©Zsimpfunc)r#   r   r(   r?   rS   rY   ro   r“  rs   rs   rt   Ú:test_find_reasonable_pivot_naive_finds_guaranteed_nonzero2.
  s    þÿ
ÿ
r—  c                  C   sÂ   t dƒ} tdd| t| ƒd t| ƒd  |  t| ƒd t| ƒd  gƒ}t|td�\}}}}t|ƒdksjt‚|d d dks~t‚|d d d|  ks–t‚|d d dksªt‚|d d dks¾t‚d S )NrN   rf   rg   re   r–  r   )r#   r   r(   r?   rS   rY   Úlenro   r“  rs   rs   rt   Ú+test_find_reasonable_pivot_naive_simplifies>
  s    þÿ
ÿ
r™  c                      sÆ  t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t td	d„ ƒ t td
d„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t td d„ ƒ t td!d„ ƒ t td"d„ ƒ t td#d„ ƒ t td$d„ ƒ t td%d„ ƒ t td&d„ ƒ t td'd„ ƒ t td(d„ ƒ t td)d„ ƒ td*ƒ‰ t t‡ fd+d„ƒ td,d,d,ggƒ‰td-d.d/gd.d/d0gd/d0d1ggƒ‰ t t‡ ‡fd2d„ƒ td-d.d/gd.d/d0gd/d0d1ggƒ‰ t t‡ ‡fd3d„ƒ d S )4Nc                   S   s   t ddgdggƒS r×   r{  rs   rs   rs   rt   r“   R
  r”   ztest_errors.<locals>.<lambda>c                   S   s   t ddggƒd S )Nrg   re   )g333333ó?ri   r{  rs   rs   rs   rt   r“   S
  r”   c                   S   s   t ddggƒd S )Nrg   re   )rg   gÍÌÌÌÌÌ@r{  rs   rs   rs   rt   r“   T
  r”   c                   S   s   t dddd�S )Nrf   rh   T)rK   r  )r6   rs   rs   rs   rt   r“   U
  r”   c                   S   s   t ddgƒ dd¡S )Nrg   re   rh   rj   )r   r  rs   rs   rs   rt   r“   V
  r”   c                   S   s(   t ddgddggƒ ddgt ddgƒ¡S rv   )r   Zcopyin_matrixrs   rs   rs   rt   r“   X
  r”   c                   S   s"   t ddgddggƒ ddgtƒ ¡S rv   )r   Zcopyin_listrà   rs   rs   rs   rt   r“   Y
  s   ÿÿc                   S   s   t dddgdddggƒ ¡ S ©Nrg   re   rf   r   ©r   r¸  rs   rs   rs   rt   r“   [
  r”   c                   S   s&   t ddddgƒ t ddgddggƒ¡S rw  )r   rª   rs   rs   rs   rt   r“   ]
  r”   c                   S   s"   t ddgƒ t ddgddggƒ¡S rw  )r   r¬   rs   rs   rs   rt   r“   _
  r”   c                   S   s"   t dgƒ dt ddgddggƒ¡S rw  )r   r±   rs   rs   rs   rt   r“   `
  s   ÿÿc                   S   s"   t dgƒ dt ddgddggƒ¡S rw  )r   r¶   rs   rs   rs   rt   r“   b
  s   ÿÿc                   S   s   t ddgƒ ¡ S r×   )r   r;  rs   rs   rs   rt   r“   d
  r”   c                   S   s   t dgƒ d¡S rf  )r   r	  rs   rs   rs   rt   r“   e
  r”   c                   S   s   t ddgddggƒ dd¡S ©Nrg   re   rf   rh   ri   )r   Úminorrs   rs   rs   rt   r“   f
  r”   c                   S   s   t ddgddggƒ dd¡S rœ  )r   Zminor_submatrixrs   rs   rs   rt   r“   g
  r”   c                   S   s   t dddgƒ d¡S r�   ©r   Úcrossrs   rs   rs   rt   r“   h
  r”   c                   S   s   t dddgƒ d¡S r�   ©r   Údotrs   rs   rs   rt   r“   i
  r”   c                   S   s   t dddgƒ t ddgƒ¡S r�   r   rs   rs   rs   rt   r“   j
  r”   c                   S   s   t ddgƒ g ¡S r×   r   rs   rs   rs   rt   r“   k
  r”   c                   S   s   t ddgƒ d¡S )Nrg   re   rI   r   rs   rs   rs   rt   r“   l
  r”   c                   S   s   t ddgƒ dddg¡S r�   r   rs   rs   rs   rt   r“   m
  r”   c                   S   s   t dddgƒ ¡ S r�   )r   r+   rs   rs   rs   rt   r“   n
  r”   c                   S   s   t ddgddggƒ ¡ S rw  )r   Ú
normalizedrs   rs   rs   rt   r“   o
  r”   c                   S   s   t ddgƒjdd�S )Nrg   re   znot a methodrš  r›  rs   rs   rs   rt   r“   p
  r”   c                   S   s   t ddgƒ ¡ S r×   ©r   Z
inverse_GErs   rs   rs   rt   r“   q
  r”   c                   S   s   t ddgddggƒ ¡ S r×   r£  rs   rs   rs   rt   r“   r
  r”   c                   S   s   t ddgƒ ¡ S r×   ©r   Zinverse_ADJrs   rs   rs   rt   r“   s
  r”   c                   S   s   t ddgddggƒ ¡ S r×   r¤  rs   rs   rs   rt   r“   t
  r”   c                   S   s   t ddgƒ ¡ S r×   )r   Z
inverse_LUrs   rs   rs   rt   r“   u
  r”   c                   S   s   t ddgƒ ¡ S r×   )r   rÙ  rs   rs   rs   rt   r“   v
  r”   c                   S   s   t ddgƒ ¡ S r×   ©r   rÈ  rs   rs   rs   rt   r“   w
  r”   c                   S   s   t ddgddggƒjdd�S )Nrg   re   rf   rh   zNot a real methodrš  r¥  rs   rs   rs   rt   r“   y
  r”   c                   S   s8   t ddddgddddgd	d
ddgddddggƒjdd�S )Nrg   re   rf   rh   ri   rj   r‹   rŒ   r�   r»   r¼   r  rù  rú  rp  r  zNot function©r]  r¥  rs   rs   rs   rt   r“   {
  s
   
 
ÿÿc                   S   s8   t ddddgddddgd	d
ddgddddggƒjdd�S )Nrg   re   rf   rh   ri   rj   r‹   rŒ   r�   r»   r¼   r  rù  rú  rp  r  Fr¦  r¥  rs   rs   rs   rt   r“   ~
  s
   
 
ÿÿc                   S   s*   t tddgddggƒtddgddggƒƒS rw  ©r.   r   rs   rs   rs   rt   r“   �
  r”   c                   S   s   t tddgddggƒg ƒS rw  r§  rs   rs   rs   rt   r“   ‚
  r”   c                   S   s   t tdƒd dƒS )NrN   re   rI   )r.   r#   rs   rs   rs   rt   r“   ƒ
  r”   c                   S   s   t dƒd S )Nrf   )ri   re   rz  rs   rs   rs   rt   r“   „
  r”   c                   S   s   t dƒd S )Nrf   )re   ri   rz  rs   rs   rs   rt   r“   …
  r”   r  c                      s
   ˆ   d¡S )Nzmethod=LU_decomposition())rÈ  rs   ræ   rs   rt   r“   ‡
  r”   r»   rg   re   rf   rh   ri   c                      s   ˆ   dˆ¡S )NgÍÌÌÌÌÌ@)r±   rs   ©rç   ÚVrs   rt   r“   Š
  r”   c                      s   ˆ   dˆ¡S )NgÍÌÌÌÌÌÀ)r¶   rs   r¨  rs   rt   r“   Œ
  r”   )r]   r  r›   rV   r  rU   r   rs   rs   r¨  rt   Útest_errorsQ
  s|    ÿÿ ÿÿÿÿÿ  rª  c                   C   sâ   t tƒ ƒdkst‚t tddggƒƒt tdgdggƒƒ  krDdksJn t‚t tdddd„ ƒƒt tdddd„ ƒƒ  kr~dks„n t‚t tdddgddd	ggƒƒd
ks¨t‚tdgƒtdggƒksÂt‚tƒ rÌt‚tƒ tg ƒksÞt‚d S )Nr   rg   re   c                 S   s   dS r  rs   r¹   rs   rs   rt   r“   ’
  r”   ztest_len.<locals>.<lambda>c                 S   s   dS r  rs   r¹   rs   rs   rt   r“   “
  r”   rf   rh   ri   rj   )r˜  r   ro   rs   rs   rs   rt   Útest_len�
  s    8ÿÿ$
r«  c               	   C   s  t ddtftddfddtd ffƒ} |  t¡t tdt td d ftt dt dt fdt dt td d ffƒkszt‚|  t¡t tdt tt ftd d dt dt fdt dt ttd  ffƒksÐt‚t ddttgƒ}| t¡t ddtd d tt gƒk�st‚d S )Nrg   rh   re   r»   ri   rf   )r   rN   rO   r/   ro   )r    r†   rs   rs   rt   Útest_integrateš
  s    $FÿFÿr¬  c                  C   sž  t ddtftddfddtd d ffƒ} t|  t¡t| ƒƒs@t‚|  t¡t dddddt ffƒksft‚|  t¡t d	ƒks|t‚t| tƒt dddddt ffƒks¢t‚t| tƒt d	ƒks¸t‚|  ¡ }t| t¡t|ƒƒsØt‚| t¡tdddddt ffƒksþt‚| t¡td	ƒk�st‚t|tƒtdddddt ffƒk�s>t‚t|tƒtd	ƒk�sVt‚| jtd
d�t	| td
d�k�sxt‚t| td
d�t	| td
d�k�sšt‚d S )Nrg   rh   re   r»   ri   ©r   r   rg   ©r   r   r   r   )r®  ©rg   r   r   r®  Fré   )
r   rN   rO   rr  r*   r:  ro   rõ  r   r[   )r    ÚA_immrs   rs   rt   Ú	test_diff¤
  s    (&&&("r±  c               
      sv  t ttgttggƒ} |  | ¡tddgddggddgddgggddgddggddgddggggƒksft‚t| | ƒtddgddggddgddgggddgddggddgddggggƒks¸t‚|  ¡ }| |¡tddgddggddgddgggddgddggddgddggggƒk�st‚t||ƒtddgddggddgddgggddgddggddgddggggƒk�sht‚|  t	¡t ddgddggƒk�sŒt‚t
t	tgƒ}|  |¡t dddd¡k�s¸t‚|  | ¡tddgddggddgddgggddgddggddgddggggƒk�st‚| t	tgg¡}|jdk�s,t‚|tdgdggdgdgggƒk�sRt‚tdƒ}|tttƒ‰ ˆ  tttgg¡tˆ  t¡ˆ  t¡ˆ  t¡gƒk�sžt‚ˆ  tttgdf¡tˆ  td¡ˆ  tt¡ˆ  tt¡gˆ  tt¡ˆ  td¡ˆ  tt¡gˆ  tt¡ˆ  tt¡ˆ  td¡ggƒk�s t‚ttƒttƒ }| ttgg¡tttƒttƒ ttƒttƒ gƒk�sjt‚| tttff¡tttƒttƒ ttƒttƒ gƒk�s¦t‚| tttff¡tttƒ ttƒ ttƒttƒ gƒk�sät‚| ttffttgg¡tttƒttƒ ttƒ ttƒ gttƒttƒ ttƒttƒ ggƒk�sHt‚ˆ  t¡ t¡ t¡ˆ  tttffd¡d k�s|t‚ˆ  t¡ t¡ t¡ˆ  tttffd¡d k�s°t‚ˆ  tttggtttff¡t‡ fd	d
„tttfD ƒƒk�sît‚t tttggƒ¡}t|t
ƒ�st‚|tddggƒk�s*t‚td  tttggƒ¡}t|t
ƒ�sRt‚|tdtd  dggƒk�srt‚d S )Nrg   r   re   )re   re   rg   r+  rf   ©r   rg   r   )re   rg   r   c                    s&   g | ]‰ ‡‡ fd d„t ttfD ƒ‘qS )c                    s   g | ]}ˆ   |¡  ˆ¡‘qS rs   )r*   rï   )Úfxyzrº   rs   rt   rÐ   å
  s     z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)rN   rO   rP   )rÏ   ©r³  )rº   rt   rÐ   å
  s     z'test_diff_by_matrix.<locals>.<listcomp>)r   rN   rO   rP   rM   r*   r   ro   rõ  rI   r   rJ   rG   r3  r   r?   r+   r(   r   rr  )r    r°  r¡   ZdBr+  ÚexprÚresrs   r´  rt   Útest_diff_by_matrix¹
  sF    RRTT$ T&8   ý:<>d44>r·  c                      sh   t ddtftddfddtd d ffƒ‰ tt‡ fdd„ƒ tˆ dƒtƒt d	d
dddt ffƒksdt‚d S )Nrg   rh   re   r»   ri   c                      s   ˆ j S rÀ   )Znonexistantattributers   rÊ   rs   rt   r“   ò
  r”   ztest_getattr.<locals>.<lambda>r*   r­  r®  r   )r   rN   rO   r]   r?  Úgetattrro   rs   rs   rÊ   rt   Útest_getattrð
  s    (r¹  c                  C   s’   t dddgdddgdddggƒ} | js*t‚| j} | js:t‚d| d< | jdksPt‚t dddgdddgdddggƒ} | jrzt‚tddƒ} | jsŽt‚d S )	Nrf   rh   rg   re   ri   r   )r   r™   F)r   rÛ   ro   rã   rÜ   rG   rÊ   rs   rs   rt   Útest_hessenbergö
  s     

 

rº  c                  C   s6  t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ tdt dfd	fƒjd
d�ttdt ƒdgddggƒks‚t‚tdƒ} | jd
d�}|tddgddtdƒ t ggƒks¾t‚||j | ksÐt‚tdƒ} |  ¡ }||j | ksòt‚|j	süt‚|tdddgdddgdddggƒk�s&t‚tddt ddt  fdt ddt fddt  dt dffƒ} |  ¡  
¡ tdtddfdt ddffƒk�s–t‚t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ t tdd„ ƒ tdt dfd	fƒjd
d�ttdt ƒdgddggƒk�st‚tdƒ} | jd
d�}|tddgddtdƒ t ggƒk�sXt‚||j | k�slt‚tdƒ} |  ¡ }||j | k�s�t‚|j	�sœt‚|tdddgdddgdddggƒk�sÆt‚tddt ddt  fdt ddt fddt  dt dffƒ} |  ¡ tdtddfdt ddffƒk�s2t‚d S )Nc                   S   s   t dƒ ¡ S ©NrŠ  ©r   Úcholeskyrs   rs   rs   rt   r“     r”   ztest_cholesky.<locals>.<lambda>c                   S   s   t dƒ ¡ S ©N©rŠ  )rf   rh   r¼  rs   rs   rs   rt   r“     r”   c                   S   s   t dt dfdfƒ ¡ S ©Nri   r   rz   )r   r   r½  rs   rs   rs   rt   r“     r”   c                   S   s   t dƒ ¡ S ©N©rB  )ri   rg   r¼  rs   rs   rs   rt   r“   	  r”   c                   S   s   t dƒjdd�S ©Nr¿  F©Ú	hermitianr¼  rs   rs   rs   rt   r“   
  r”   ri   r   rz   FrÄ  rg   rÂ  re   rj   ))rX  rp  r–   )rp  r’  r   )r–   r   r¼   rf   r™   rh   rš   r¼   )re   r   r   c                   S   s   t dƒ ¡ S r»  ©r"   r½  rs   rs   rs   rt   r“     r”   c                   S   s   t dƒ ¡ S r¾  rÆ  rs   rs   rs   rt   r“     r”   c                   S   s   t dt dfdfƒ ¡ S rÀ  )r"   r   r½  rs   rs   rs   rt   r“     r”   c                   S   s   t dƒ ¡ S rÁ  rÆ  rs   rs   rs   rt   r“     r”   c                   S   s   t dƒjdd�S rÃ  rÆ  rs   rs   rs   rt   r“     r”   )r]   rU   r  r   r   r½  r@   ro   rã   rV  r,   r"   r"  rs   rs   rt   Útest_cholesky  sP     ÿ(
*@0 ÿ**@rÇ  c                  C   sü  t ddd�} tt| ƒt| ƒgƒ}t| d¡ƒdks6t‚| d¡tt| ƒd t| ƒd  tddƒƒksht‚tdtddƒggƒ}| ¡ td	td
dƒ t	j
ƒksžt‚| t¡t|ƒks´t‚| t ¡t|ƒksÌt‚tddgddggƒ}| d¡dksòt‚| d¡dk�st‚| d¡dk�st‚tdƒ d¡tdƒ d¡  k�rFdk�sLn t‚| t¡dk�s`t‚tdttg| t	j
t ggƒ}| d¡ttddƒdttƒd   td  | d  ƒk�sºt‚tdddgddtddƒggƒ}| d¡ttddƒtdƒd  ƒk�st‚| d¡t	jk�st‚| d¡tdƒd k�s4t‚tddgddggƒ}tddgddggƒ}tdt gtdggƒ}tddgddggƒ}||||g}t ddd�}dD ]®}tdƒ |¡t	jk�sÀt‚|D ]B}	|D ]6}
|	 |¡|
 |¡ |	|
  |¡ }|dk�sÌt‚�qÌ�qÄ||||fD ]8}t||  |¡t|ƒ| |¡  ƒ}|dk�st‚�q�q¢tdddt  dgƒ}tt	j
dt dgƒ}tdddgƒ}tddtgƒ}ttdƒtddƒdgƒ}|||||g}t ddd�}ddddt	jt	jtfD ]ä}|dk�rtdddgƒ |¡t	jk�st‚|dk�rj|D ]L}	|D ]@}
|	 |¡|
 |¡ |	|
  |¡ }t|dkƒt	jk�s$t‚�q$�q|ddddt	jt	jfk�rà|D ]8}	t||	  |¡t|ƒ|	 |¡  ƒ}|dk�sˆt‚�qˆ�qàtdddddddddd
dg	ƒ}| d¡dk�søt‚d S )NrN   TrÞ   re   rg   r»   ri   rf   rX  r�   rh   rš   r   Z	frobeniusÚfroé%   r  rù  i…  rŒ   iI3 r™   Úalpha)rÈ  re   rš   g      Y@rj   )r#   r   r(   r?   rE   Únormro   r   r   r!   r‚   r4   r-  r  r-   rO   r5   r@   rˆ  rƒ   r   rG   r>   r   ÚInfinityÚNegativeInfinityÚtrue)rN   rd  r    r¡   r¢   r£   r#  rÊ  Úorderrb  rc  Zdifrç   rI   rJ   rK   rL   r’   rs   rs   rt   Útest_matrix_norm-  s„    2"2,ÿ
*ÿÿ
 
ÿ ÿrÐ  c                     sú   t ddd�‰tdƒ} d| d< tddƒ| d< |  ¡ d	ks:t‚ˆ| d
< |  ¡ tdtˆƒƒttddƒtˆƒƒ kspt‚tt	ˆƒt
ˆƒgt
ˆƒ t	ˆƒggƒ}| ¡ ‰ t‡ ‡fdd„tddƒtjtddƒtd tttddƒ fD ƒƒsât‚tg ƒ ¡ dksöt‚d S )NrN   TrÞ   rf   r»   ry   rg   ©re   re   r˜  rk   c                 3   s(   | ] }t d ƒ ˆ  ˆ|¡ ¡ ¡V  qdS )r&  N)r
   Z
epsilon_eqr  rî   )rÏ   Úval©ZMcrN   rs   rt   rð   –  s     z(test_condition_number.<locals>.<genexpr>ri   re   r‹   rh   r   )r#   r-   r   Zcondition_numberro   r   r   r   r   r(   r?   rô   r!   r‚   r5   )r    rç   rs   rÓ  rt   Útest_condition_numberŠ  s    .&*ÿrÔ  c                  C   s¤   t dƒ} t dƒ}| | d d …d d …f ks,t‚| | d d …d d …f krHt‚| |krTt‚| |ks`t‚| dkslt‚| dkrxt‚tdƒ}t dƒ}||ks”t‚||kr t‚d S )N)rl   rm   )r‹   rŒ   r�   ))r�   rŒ   r‹   )rj   ri   rh   )rf   re   rg   r»   )r¯  r²  r­  )r   ro   r"   )r    r¡   r¢   r£   rs   rs   rt   Útest_equality�  s    rÕ  c                  C   s„   t ddgƒ ¡ t tddƒtddƒgƒks,t‚t dddgƒ ¡ t dddgƒksPt‚t dddgƒ} | jdd„ d�t dddgƒks€t‚d S )	Nrf   rh   ri   r   g0Žä.ÿ++c                 S   s   | j ddd�jS )Nr»   T)ró   Zchop)rî   Úis_zerorr   rs   rs   rt   r“   ¸  r”   z!test_normalized.<locals>.<lambda>r¦  )r   r¢  r   ro   r§   rs   rs   rt   Útest_normalized®  s    ÿ$ÿþr×  c                   C   s,   t dd„ ƒdkst‚t dd„ ƒdks(t‚d S )Nc                   S   s   t dƒ ¡ S r¸   ©r-   Zprint_nonzerors   rs   rs   rt   r“   ½  r”   z$test_print_nonzero.<locals>.<lambda>z[X  ]
[ X ]
[  X]
c                   S   s   t dƒ d¡S )Nrf   r
  rØ  rs   rs   rs   rt   r“   ¿  r”   z[.  ]
[ . ]
[  .]
)rb   ro   rs   rs   rs   rt   Útest_print_nonzero¼  s    
ÿ
ÿrÙ  c                  C   sö   t  d¡tdƒkst‚t  d¡tdƒks,t‚tddƒt dddgd ƒksLt‚t ddgddggƒ} t ddgddggƒ}tD ]x}| d¡}| |ks’t‚| td|d�ks¦t‚t|ƒ|ks¶t‚| d¡}||ksÌt‚|td|d�ksàt‚t|ƒ|ksxt‚qxd S )Nrf   rh   rg   r  r   re   r÷   )r   r-   ro   rG   r3   r�  r:  )r³   rP   rø   r†   rs   rs   rt   Útest_zeros_eyeÃ  s     

rÚ  c                  C   s
  t ƒ jst‚t ddgddggƒjs&t‚tddƒjs6t‚tdƒjrDt‚t tdgddggƒjd ksbt‚ttdgddggƒjd ks€t‚ttdgddggƒjd ksžt‚ttdgddggƒjd ks¼t‚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   rf   rh   rg   FrI   T)Znonzero)
r   Zis_zero_matrixro   rG   r-   rN   r"   r   r   r#   rÔ   rs   rs   rt   Útest_is_zeroÕ  s    rÛ  c            
      C   s  t d } t| ƒ}t|  ƒ}t| ƒ}t|  ƒ}t| ƒ}t|  ƒ}|| tdƒ tdƒksZt‚|| tdƒ tdƒksvt‚|| tdƒ tdƒks’t‚| ¡ ddt| ƒ  ks®t‚| ¡ ddt| ƒ  ksÊt‚| ¡ ddt| ƒ  ksæt‚tdƒtdƒksút‚tdƒtdƒk�st‚tdƒtdƒk�s&t‚t 	dddgt d ¡}t 	dddgt d ¡}t 	dddgt d ¡}	tt  d ƒ| 
¡ k�s„t‚tt  d ƒ| 
¡ k�s t‚tt  d ƒ|	 
¡ k�s¼t‚tt 
 d ƒ| 
¡ k�sØt‚tt 
 d ƒ| 
¡ k�sôt‚tt 
 d ƒ|	 
¡ k�st‚d S )Nrf   rg   re   r   )r5   r9   r8   r7   r-   ro   r;  r(   r   Zfrom_axis_angleZto_rotation_matrixr:   r;   r<   )
ÚthetaZr3_plusZr3_minusZr2_plusZr2_minusZr1_plusZr1_minusÚq1Úq2Zq3rs   rs   rt   Útest_rotation_matricesã  s2    


rß  c                   C   sj   t tdƒd ƒdkst‚ttdƒƒtdƒks0t‚ttdd„ ƒ t tdƒƒdksRt‚ttdƒƒdksft‚d S )	NZvectorrh   z	vector[4]rL   c                   S   s   t dƒd S )NrL   r™   )r   rs   rs   rs   rt   r“     r”   z%test_DeferredVector.<locals>.<lambda>ÚtestzDeferredVector('test'))Ústrr   ro   rC   r]   r›   Úreprrs   rs   rs   rt   Útest_DeferredVector  s
    rã  c                   C   s   t tdƒƒrt‚d S )Nrb  )rc   r   ro   rs   rs   rs   rt   Ú test_DeferredVector_not_iterable  s    rä  c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t tdƒƒS )Nr©  )r   r   rs   rs   rs   rt   r“     r”   z,test_DeferredVector_Matrix.<locals>.<lambda>)r]   r  rs   rs   rs   rt   Útest_DeferredVector_Matrix  s    rå  c                  C   s<  t } tddddgƒ}tddddgƒ}t||gƒtddddgƒtdd| dƒd | dƒd gƒgksdt‚t|j|jgƒtddddgƒtdd| dƒd | dƒd gƒgks¨t‚ttddgƒtddgƒgdƒtdtdƒ d tdƒd gƒttdƒ d dtdƒ d gƒgk�st‚ttdgƒƒ}t|ƒtdggƒgk�s8t‚d S )Nrg   re   rf   ri   r™   Tr»   )r   r   r   ro   rã   r@   r	   )r   r}   r~   r#  rs   rs   rt   Útest_GramSchmidt  s    
.ÿ.ÿ þræ  c                   C   s<   t ddddgdƒdkst‚t ddddgddd�dks8t‚d S )Nrg   re   rf   rh   r   F)Úzero)r'   ro   rs   rs   rs   rt   Útest_casoratian)  s    rè  c                   C   s^   t ƒ tddƒ jdkst‚tddƒtddƒ tddƒks<t‚tddƒtddƒ t ƒ ksZt‚d S )Nr   rf   )r   rf   )r   rG   r3  ro   rs   rs   rs   rt   Útest_zero_dimension_multiply.  s    "ré  c                      sÄ   t ddtdƒƒ‰ ˆ dd d …f t ddggƒks2t‚ˆ dd d …f t ddggƒksTt‚ˆ d d …df t ddggƒjksxt‚ˆ d d …df t ddggƒjksœt‚tt‡ fdd„ƒ tt‡ fdd„ƒ d S )	Nre   rh   rg   rf   r™   c                      s   ˆ dd d …f S rP  rs   rs   r§   rs   rt   r“   :  r”   z'test_slice_issue_2884.<locals>.<lambda>c                      s   ˆ d S )NrÑ  rs   rs   r§   rs   rt   r“   ;  r”   )r   r¯   ro   rã   r]   r›   rs   rs   r§   rt   Útest_slice_issue_28844  s    ""$$rê  c                   C   sJ   t ddƒd d …df jdks t‚t ddƒdd d …f tddg ƒksFt‚d S )Nr   rf   r™   rz   rg   )rG   r3  ro   r   rs   rs   rs   rt   Útest_slice_issue_3401>  s     rë  c                  C   sà  t ddƒ} d| d< | d d …df tdddgƒks4t‚| d dksDt‚| dd… dgksZt‚d| d< | d dksrt‚| ddd …f tddggƒks”t‚tddggƒ| ddd …f< | dd d …f tdddggƒksÒt‚dd	gg| ddd …f< | dd d …f tddd	ggƒk�st‚d
| d< | d d …d d…f td
ddgƒk�s>t‚dddg| d< | d d …df tdddgƒk�spt‚tdddgƒ| d< | d d …df tdddgƒk�s¦t‚tdddgƒ| d< | d d …df tdddgƒk�sÜt‚d S )Nrf   rg   r   rh   rD  rk   ri   rj   é+   é   ry   )rG   r   ro   r"   )rH  rs   rs   rt   Útest_copyinC  s(    
""$&($$rî  c                      sê   t ddgddggƒ ¡ t ddgddggƒdfks4t‚ttdd„ ƒ t dddgtddgdtdggƒ‰ tˆ  ¡ d ƒˆ jks|t‚ˆ  ¡ d tdƒks”t‚ˆ jt	d	�d tdƒks°t‚tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nrg   re   r   )r   c                   S   s   t ddgddggƒ ¡ S r×   r›  rs   rs   rs   rt   r“   ^  r”   z'test_invertible_check.<locals>.<lambda>r™   rf   rÌ   c                      s   ˆ j dd�S )Nræ  rš  ©r¸  rs   r§   rs   rt   r“   i  r”   c                      s   ˆ j dd�S )Nrà  rš  rï  rs   r§   rs   rt   r“   j  r”   c                      s   ˆ j dd�S )Nrä  rš  rï  rs   r§   rs   rt   r“   k  r”   )
r   rÍ  ro   r]   r  rN   r˜  rn   r-   r=   rs   rs   r§   rt   Útest_invertible_checkZ  s    4ýrð  c                  C   sD   t dƒ\} }| | }| | tdddgƒ¡tdddgƒ| ks@t‚d S )Nzx, yrf   ri   )rB   r  r   ro   )rN   rO   r’   rs   rs   rt   Útest_issue_3959n  s    rñ  c                   C   s$   t tddgddggƒƒdks t‚d S )Nrg   re   rf   rh   zMatrix([[1, 2], [3, 4]]))rá  r   ro   rs   rs   rs   rt   Útest_issue_5964t  s    rò  c                  C   s<   t dƒ\} }tt| d| g|d | d ggƒƒdks8t‚d S )Nr`  re   rf   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))rB   rA   r   ro   ri  rs   rs   rt   Útest_issue_7604x  s    "ÿró  c                	   C   s¼   t dƒjst‚t dƒ ¡ js t‚tdƒjr.t‚tdƒjr<t‚tdddggƒjrRt‚tddddddœƒjslt‚tddtdƒƒjr‚t‚tdddddœƒjršt‚tddddddddœƒjr¸t‚d S )	Nrf   rg   r   )ry   rk   rÑ  re   rj   )ry   rk   )ry   rk   rÑ  rz   rH  )	r-   Zis_Identityro   rõ  rG   r3   r   r"   r¯   rs   rs   rs   rt   Útest_is_Identity~  s    rô  c                   C   s,  t ddƒ t ddƒ¡dkst‚t ddƒ dddg¡dks<t‚tdddgƒ tdddgƒ¡dksbt‚tdddt gƒ ttddt gƒ¡dt ks”t‚tdddt gƒjttddt gƒdd�dt ksÊt‚tdddt gƒjttddt gƒdd�d	t k�st‚tdddt gƒjttddt gƒdd
d�d	t k�s<t‚tdddt gƒjtddt dgƒddd�ddt  k�szt‚tdddt gƒjtddt dgƒddd�ddt  k�s¸t‚ttdt gƒjttdt gƒddd�dk�sêt‚ttdt gƒjttdt gƒdd�dk�st‚ttdd„ ƒ d S )Nrg   rf   re   rú  r–   FrÄ  Trù  Zphysics©rÅ  Úconjugate_conventionrh   ri   rj   ÚrightrŒ   Úleft)rö  c                   S   s    t ddgƒjt ddgƒddd�S )Nrg   re   rf   rh   Trà  rõ  r   rs   rs   rs   rt   r“   ˜  r”   ztest_dot.<locals>.<lambda>)r3   r¡  ro   r   r   r]   r  rs   rs   rs   rt   Útest_dotŒ  s    &268:>>20rù  c                  C   sØ   t ddd�\} }}}}}td|||f| d|| f| | d| f| ||  dffƒ}td|  | | f| d|| f|| d|f||| dffƒ}| ¡  |¡s¢t‚tdƒ ¡  tdƒ¡s¼t‚| ¡  ¡  | ¡sÔt‚d S )NzB_x B_y B_z E_x E_y E_zTrÞ   r   rf   )rB   r   ZdualÚequalsro   r-   rG   )ZB_xZB_yZB_zZE_xZE_yZE_zrü   ZFdrs   rs   rt   Ú	test_dual›  s&     ÿ
üürû  c                  C   sü   t ddgƒ ¡ dkst‚t dddtd dt  d ttd d  dtt t t t dg	ƒ} |  ¡ dkslt‚| jdd�d ks€t‚| jdd	„ d�d ks˜t‚| d
  | d
< |  ¡ d ks¶t‚| d
  | d
< |  ¡ } | jdd�dksàt‚d| d< |  ¡ dksøt‚d S )Nrg   re   Frf   r   TrÌ   c                 S   s   | S rÀ   rs   rr   rs   rs   rt   r“   ´  r”   z%test_anti_symmetric.<locals>.<lambda>r  ry   )r   rÑ   ro   rN   rO   r,   r§   rs   rs   rt   Útest_anti_symmetric¯  s    Drü  c                  C   sž   t dƒ} | jdd�\}}||j |j|   kr>t|jƒksDn t‚| jddd�\}}||j |j|   kr|t|jƒks‚n t‚|| | ¡  | ksšt‚d S )N)rŠ  r  TrT  )rU  Úsort)r   rÝ  rã   r-   rp   ro   r¸  )r    rº  r   rs   rs   rt   Ú#test_normalize_sort_diogonalizationÂ  s    ,,rþ  c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t dddgt ddg ƒgƒS rš  r{  rs   rs   rs   rt   r“   Ì  r”   z!test_issue_5321.<locals>.<lambda>)r]   r  rs   rs   rs   rt   Útest_issue_5321Ë  s    rÿ  c                  C   s¼   t  tdƒdtdƒ ¡t ddddgddddggƒks8t‚t  tdƒdtdƒ ¡t ddgddgddgddggƒkstt‚t} |  | tdƒƒ| dtdƒ ƒ¡t ddddgddddggƒks¸t‚d S )Nre   rg   r   )r   rÁ   r-   ro   rÆ   r"   r÷   rs   rs   rt   Útest_issue_5320Ï  s    

þü 

þr   c                  C   sV   t dggƒ} t| ƒ}t  || ¡t ddggƒks2t‚t  || ¡t dgdggƒksRt‚d S rf  )r   rC   rÁ   ro   rÆ   )r    ZAImrs   rs   rt   Útest_issue_11944á  s    r  c                     s¨   dddg} dddg}t dddgƒ}|j}‡ fdd„}tD ]\‰ ˆ | ƒ}ˆ |ƒ}|| |¡|ƒ || |j¡|ƒ ||j |j¡|ƒ ||j |¡|ƒ q8ttd	d
„ ƒ d S )Nrg   re   rf   rh   ri   rš   c                    s    || kst ‚t| ƒˆ kst ‚d S rÀ   )ro   r:  )rç   r4  r÷   rs   rt   rà  î  s    ztest_cross.<locals>.testc                   S   s"   t ddddgƒ t ddddgƒ¡S r×   rž  rs   rs   rs   rt   r“   ø  s    ztest_cross.<locals>.<lambda>)r   rã   r�  rŸ  r]   rV   )rI   rJ   r¦   r¥   rà  r    r¡   rs   r÷   rt   Ú
test_crossè  s    

r  c                  C   s^   t tttgƒ} t tttgƒ}|  ¡ | |  |¡ks6t	‚|  ¡  
¡ sFt	‚|  ¡  ¡ | ksZt	‚d S rÀ   )r   rN   rO   rP   rI   rJ   rK   ZhatrŸ  ro   rÑ   Zvee)Zv1Zv2rs   rs   rt   Útest_hat_veeü  s
    r  c                  C   sb   t D ]:} |  d¡|  d¡h}t|ƒdkr:| ¡ |  d¡kst‚qtD ]} t|  d¡tƒrDt‚qDd S rf  )Úimmutable_classesr-   r˜  Úpopro   rL  rr  r   )rø   rH  rs   rs   rt   Ú	test_hash  s
    $r  c                  C   sH   dt gddgg} tddgt  dggƒ}tD ]}||| ƒ ¡ ks*t‚q*d S ©Nr   rg   )r   r   r�  Zadjointro   )rö  r4  rø   rs   rs   rt   Útest_adjoint  s    r  c                  C   sT   t ddgtddt  ggƒ} |  ¡ tjtdƒtjthks<t‚|  t¡thksPt‚d S r×   )r   rN   r.  r!   r�   ZNegativeOnero   r#   r§   rs   rs   rt   Ú
test_atoms  s     r	  c            	         s´  t ttgttggƒ} t| jdd�ƒt|  ¡ ƒks4t‚t ddgddgddggƒt d	d
dgdddggƒt ttgƒg}|D ]d}|jdd�}|| }|| }t|| ƒ|ks¨t‚t|| ƒ|ks¼t‚|j	|ksÊt‚|j	|kstt‚qt|D ]n}t|jdd�ƒ}|| }|| }t|| ƒ|k�st‚t|| ƒ|k�s.t‚|j	|k�s>t‚|j	|ksÞt‚qÞddl
m‰  | jdd�}|  ¡ }tdtdtdtdi}t‡ fdd„t| |¡| |¡ƒD ƒƒ�s°t‚d S )NZRDrš  rù  éh   i¤  rf   r  ri   rg   r‹   r�   r¼   rí  é   ÚEDr   ©Úcompi_àþÿib,  i¾Ø  ijô  c                 3   s$   | ]\}}ˆ |  ¡ |  ¡ ƒV  qd S rÀ   rò   )rÏ   r³   rº   r  rs   rt   rð   A  s   ÿztest_pinv.<locals>.<genexpr>)r   rI   rJ   rK   rL   r>   Úpinvr¸  ro   rå   Zsympy.core.numbersr  rô   rm  r  )	ÚA1ÚAsr    ÚA_pinvÚAApÚApAr‰  ÚwZrepsrs   r  rt   Ú	test_pinv  s:     
þþr  c                  C   s®   t 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ddddddgddddddggƒg} | D ]F}|jdd�}|| }|| }|j|ks�t‚dd„ }||j|ƒsbt‚qbd S )Né=   r¬  é7   r™  r  r   é>   é`   éU   r  éE   é8   rí  rh   é6   r»   é[   é)   r‹   r  rŸ  éZ   r  rš  c                 S   s<   |   t¡}dd„ |D ƒ}| |  |¡ ¡ }tdd„ |D ƒƒS )Nc                 S   s   i | ]}||  ¡ “qS rs   rí   )rÏ   rC  rs   rs   rt   rF  f  s      zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>c                 s   s   | ]}t |ƒd k V  qdS )g»½×Ùß|Û=Nr)  )rÏ   r’   rs   rs   rt   rð   h  s     zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>)r.  r    r7  rî   rô   )rÃ   rÄ   ZrootofsZrootofs_approxZdiff_approxrs   rs   rt   Úallclosed  s    
zEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose)r   r  rå   ro   )r  r    r  r  r  r"  rs   rs   rt   Ú3test_pinv_rank_deficient_when_diagonalization_failsG  s     úÿ	r#  c                   C   sL   t ddƒt ddƒ tddg ƒks$t‚t ddƒt ddƒ tddg ƒksHt‚d S r  )r3   r   ro   rs   rs   rs   rt   Útest_issue_7201m  s    $r$  c                  C   s2   t tttfD ] } | tgdggƒjthkst‚qd S r  )r   r   r   r"   rN   Zfree_symbolsro   ræ   rs   rs   rt   Útest_free_symbolsr  s    r%  c                      sŽ  zddl m‰  W n tk
r,   tdƒ Y nX tˆ dddgƒƒtdddgƒksRt‚tˆ dddggƒƒtdddggƒkszt‚tˆ dddgddd	ggƒƒtdddgddd	ggƒks²t‚tˆ tttgƒƒttttgƒksÖt‚t	t
‡ fd
d„ƒ tˆ ddgƒˆ ddgƒgƒtddgddggƒk�st‚tˆ ddgƒddggƒtddgddggƒk�sPt‚tˆ g ƒˆ g ƒgƒtddg ƒ  k�r„tg ƒk�sŠn t‚dS )zSee issue 7465.r   ©r  r  rg   re   rf   rh   ri   rj   c                      s(   t ˆ ddgddggddgddgggƒƒS )	Nrg   re   rf   rh   ri   rj   r‹   rŒ   r{  rs   r&  rs   rt   r“   „  r”   z#test_from_ndarray.<locals>.<lambda>N)r	  r  r  r^   r   ro   rN   rO   rP   r]   ÚNotImplementedErrorrs   rs   r&  rt   Útest_from_ndarrayw  s     $(ÿ$
ÿ62r(  c               	   C   sÖ   ddl m}  zddlm}m} W n tk
r<   tdƒ Y nX | |ddgddggƒƒ}|d dksft‚t|ƒddddgks~t‚t	t
ƒ� | |ddgddggƒƒ}W 5 Q R X |d dksºt‚t|ƒddddgksÒt‚d S )	Nr   ©Ú
_matrixify)r  ÚmatrixzPNumPy must be available to test indexing matrixified NumPy ndarrays and matricesrg   re   rf   rh   )Úsympy.matrices.commonr*  r	  r  r+  r  r^   ro   rq   r\   ÚPendingDeprecationWarning)r*  r  r+  r†   rs   rs   rt   Útest_17522_numpyŠ  s    
"r.  c                  C   s~   ddl m}  zddlm} W n tk
r8   tdƒ Y nX | |ddgddggƒƒ}|d d	ksbt‚t|ƒd
ddd	gkszt‚d S )Nr   r)  )r+  zEmpmath must be available to test indexing matrixified mpmath matricesrg   re   rf   rh   ç      @r&  r'  ry  )r,  r*  Zmpmathr+  r  r^   ro   rq   )r*  r+  r†   rs   rs   rt   Útest_17522_mpmath›  s    r0  c                  C   s~   ddl m}  zddlm} W n tk
r8   tdƒ Y nX | |ddgddggƒƒ}|d dksbt‚t|ƒddddgkszt‚d S )	Nr   r)  )Ú
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesrg   re   rf   rh   )r,  r*  Zscipy.sparser1  r  r^   ro   rq   )r*  r1  r†   rs   rs   rt   Útest_17522_scipy§  s    r2  c                  C   sr   t dtgt dggƒ} | js t‚dt | d< | jdks:t‚t| d< | jd ksPt‚| d t | d< | jdksnt‚d S )Nrg   re   ry   Fr{   rz   rÓ   rÔ   rs   rs   rt   Útest_hermitian³  s    
r3  c                     sF  t dddgdddgdddggƒ} |  d¡ | t dddgdddggƒksJt‚t dddgdddgdddggƒ}| d¡ |t dddgdddggƒks”t‚t dddgdddgd	d
dggƒ}| d¡ |t dddgdddggƒksÞt‚t dddgdddgdddggƒ‰ tt‡ fdd„ƒ t dddgdddgdddggƒ‰tt‡fdd„ƒ t dddgdddgdddggƒ} |  d¡ | t ddgddgddggƒk�s�t‚t dddgdddgdddggƒ}| d¡ |t ddgddgddggƒk�sÞt‚t dddgdddgdddggƒ‰ tt‡ fdd„ƒ t dddgdddgdddggƒ‰tt‡fdd„ƒ d S )Nrg   re   rf   rh   ri   rš   rj   r‹   r�   r»   r¼   r™   c                      s
   ˆ   d¡S r¡  r�   rs   ©rº  rs   rt   r“   Ê  r”   z+test_issue_9457_9467_9876.<locals>.<lambda>c                      s
   ˆ   d¡S ©Nr£  r�   rs   ©r   rs   rt   r“   Ì  r”   c                      s
   ˆ   d¡S r¡  r—   rs   r4  rs   rt   r“   Ö  r”   c                      s
   ˆ   d¡S r5  r—   rs   r6  rs   rt   r“   Ø  r”   )r   r�   ro   r]   r›   r˜   )rç   r   ÚOrs   )rº  r   rt   Útest_issue_9457_9467_9876¾  s.     
  
  
    
$ 
$  r8  c                  C   sÈ   t ddd�\} }t dƒ\}}tdƒ}tdd| ||tgƒ}||  | | | | ksTt‚|| | || | kspt‚| | ||  ks„t‚|| || ks˜t‚||  | t||  dgd||  ggƒksÄt‚d S )Nr`  F)Zcommutativeza bre   r   )rB   r-   r   rP   ro   )rN   rO   rI   rJ   rç   rÃ   rs   rs   rt   Útest_issue_9422Û  s    r9  c            	      C   s®   t g ƒ} ddgt dddgƒf}ddg|d jf}ddgt dd	gdd
ggƒf}|||fD ]R\}}|D ]D}t| |ƒ}d|kr€||ƒn|d|ƒ}||kr¢t|ƒt|ƒksbt‚qbqVd S )Nr¶   rª   r�   rj   rf   r±   r¬   rg   re   rh   ÚjoinrD  )r   rã   r¸  Úidro   )	rç   rI   rJ   rK   Zopsr†   Úopr+  Únewrs   rs   rt   Útest_issue_10770ç  s    
r>  c                  C   sl  t dddgdddgddd	ggƒ} |  d
ddgdddg¡t ddgddgddggƒksVt‚|  d
ddgdddg¡t dgdgdggƒks†t‚|  dddgd
ddg¡t dddggƒks²t‚|  dddgd
ddg¡t dddgddd	ggƒksæt‚|  d
ddgdddg¡t dd
g ƒk�st‚|  dddgd
ddg¡t d
dg ƒk�s:t‚|  dddgdddg¡t dgdggƒk�sht‚d S )Nrg   re   rf   rh   ri   rj   r‹   rŒ   r�   r   TF)r   r¾   ro   rÊ   rs   rs   rt   Útest_issue_10658ó  s     ÿ0,ÿ**ÿr?  c                  C   s€  t ddtdƒ  dgdtdƒ d d dtdƒ d ggƒ} |  ¡ dksLt‚t ddtdƒ t  dgdddtdƒ t  ggƒ} t|  ¡ d	 t ddddtdƒ t   gd	d	ggƒ ƒtddƒksÆt‚td
ƒ\}}}}}}}}}	}
}}t |||| || d	g|||| || d	g|||| || dg|||| || dg|	|
d|	 | |	|  d|
 | |
|  d	ggƒ} |  ¡ dk�s|t‚d S )Nr–   ri   re   rg   rf   r‚  rh   r  r   z/a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1)	r   r@   rî  ro   r   r>   rÍ  rG   rB   )r†   ZaxZayZbxZbyZcxÚcyZdxZdyÚexZeyÚt0Út1rs   rs   rt   Ú!test_opportunistic_simplification  s    <4F „rD  c                  C   sÜ   t dddgdddggƒ} |  ¡ d t ddd	gdddggƒ  ¡ d
k sHt‚t dddgdddgdddggƒ}t dddgdddgdddggƒ}t dddgdddgdddggƒ}| ¡ |  ¡ d
k sÀt‚| ¡ |  ¡ d
k sØt‚d S )Ngú~j¼t“h?gR¸…ë‘M@gö(\�Â•M@gD‹lçû)@g…ëQ¸…Àg¤p=
×cG@r   r&  r¤  çVçž¯Ò<gqµô7K‘<rh   r(  rŒ   rg   r/  g        g       @g      À)r   rÍ  rË  ro   r¸  )ÚmmZm_mixedZm_floatZm_invrs   rs   rt   Útest_partial_pivoting  s(    ÿ
ÿ
þ
þ
þrG  c                  C   sŒ   t ddddgddddgddddggƒ} | jdd	„ d
�d }t ddddgddddgddddggƒ}|| }| ¡ dk sxt‚|d dksˆt‚dS )z‘ When doing numerical computations, all elements that pass
    the iszerofunc test should be set to numerically zero if they
    aren't already. gÍÌÌÌÌÌì?gš™™™™™¹¿gš™™™™™É¿r   gš™™™™™é¿gš™™™™™Ù¿g333333ã?c                 S   s   t | ƒdk S )Ng [n‡û<r)  rr   rs   rs   rt   r“   2  r”   z*test_iszero_substitution.<locals>.<lambda>r¦  r&  g¡4iÒ¤IÓ¿g¹lÙ²eËæ¿rE  rÑ  N)r   rÍ  rË  ro   )r†   Zm_rrefZ	m_correctZm_diffrs   rs   rt   Útest_iszero_substitution+  s    &&rH  c            
      C   sR  ddl m}  dtttddƒ ƒ tttddƒ ƒtdƒ  }dtdƒ tttddƒ ƒd  d	tttddƒ ƒ  d
tttddƒ ƒd   }| ddƒ}| dtdƒ ƒ}| ||ƒ}t|t|ƒ |t|ƒ gƒ}t|| || gƒ}tt|| ƒt|| ƒgƒ}dd„ }	|jd|	d�dk�st	‚|jd|	d�dk�s6t	‚|jd|	d�dk�sNt	‚d S )Nr   )ÚPointrŒ   rù  é-   rf   rƒ  re   r�  r  rg   c                 S   s   t |  ¡ ƒdk S )Ng#B’¡œÇ;)rˆ  ró   rr   rs   rs   rt   r“   H  r”   z"test_issue_11238.<locals>.<lambda>T)r>   r]  )
Zsympy.geometry.pointrI  rD   r5   r   r@   r   r>   rî  ro   )
rI  ZxxÚyyÚp1Zp2Úp0r}   r~   r   ÚZrs   rs   rt   Útest_issue_11238:  s    0R

rO  c                  C   sl   t ddddddgƒ} | tj }| | }tD ]<}||ƒ ¡ \}}t|ƒt| ƒksRt‚t|ƒt| ƒks*t‚q*d S )Nre   rg   rf   rh   )r   r!   ZImaginaryUnitr�  Zas_real_imagrq   ro   )r}   r~   r   ZklsrI   rJ   rs   rs   rt   Útest_as_real_imagN  s    
rP  c                  C   sh   t dddddddddddg	ƒ} |  ¡ \}}|d t dddgƒksDt‚|d t ddddddgƒksdt‚d S )Nrf   r   rg   r®   rh   rš   re   )r   Zjordan_cellsro   )r†   rº  ZJcellsrs   rs   rt   Útest_deprecatedY  s    rQ  c                  C   sd   ddl m}  tdddgƒ}tdddgƒ}| |d	ƒtdddgƒksDt‚| |d
ƒtdddgƒks`t‚d S )Nr   )ÚModr™   rg   re   r»   r™  r�  rf   rh   )Zsympy.core.modrR  r   ro   )rR  r    r¡   rs   rs   rt   Útest_issue_14489d  s
    rS  c                  C   s^   zddl m}  W n tk
r,   tdƒ Y nX tddgddggƒ}| |td�jjd	ksZt‚d S )
Nr   r&  r  rg   re   rf   rh   )ÚdtypeZfloat64)	r	  r  r  r^   r   ÚfloatrT  Únamero   )r  rç   rs   rs   rt   Útest_issue_14943m  s    rW  c                  C   s4   t dddƒ} tdƒ}| d dk}t|ƒdks0t‚d S )Nr†   rg   rI   ry   r   zm[0, 0] > 0)r   r#   rá  ro   )r†   rI   rs   rs   rt   Útest_case_6913x  s    rX  c                  C   s.   t dddƒ} tdƒ}|  |¡|| iks*t‚d S )Nr    rf   rI   )r   r%   Úmatchro   )r    rI   rs   rs   rt   Útest_issue_11948  s    rZ  c                  C   sê   t dtgƒt dt gƒg} t j| Ž t dgtggƒt dgt ggƒgksJt‚t dtdgƒt tdt gƒg} t j| Ž t dgtgdggƒt td gtdƒd gt ggƒgks¬t‚t dtgdt ggƒ}| ¡ \}}||j t  d¡ksæt‚d S )Nrg   r   re   )r   r   r[  ro   r!   ZQRdecompositionrå   r-   )r]  r„  r   r   rs   rs   rt   Útest_gramschmidt_conjugate_dot…  s     ÿ4ÿr[  c                  C   sf   t tdddƒƒ} t tdddƒƒ}|  |¡}t|| d ƒ}t|| d ƒ}||d ksVt‚|dksbt‚d S )NrI   rf   rg   rJ   ry   r   )r   r   r¡  r*   ro   )rI   rJ   rK   rL   r’   rs   rs   rt   Útest_issue_8207“  s    
r\  c                     sz  ddl m}  tddgddggƒ‰ ˆ  ttt ƒt¡tttƒtdt ƒttƒ gdtdt ƒggƒksht‚tddgddggƒ‰ tˆ  d  t	tƒt¡tt
dƒd t
dƒ d gt
dƒ d t
dƒd ggƒksÐt‚ttdd	„ ƒ tt‡ fd
d	„ƒ tddddgddddgddddgddddggƒ‰ ˆ  ttƒt¡ˆ  ¡ k�s>t‚tt‡ fdd	„ƒ tddgddggƒ‰ tˆ  t
tƒt¡d ƒˆ k�s†t‚tdddgdddgdddggƒ‰ tˆ  | tdƒt¡d ƒˆ 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ƒ‰ ˆ  ttƒt¡ˆ  ¡ 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ƒ‰ ˆ  ttt ƒt¡ttˆ t  ¡ ƒƒk�svt‚d S )Nr   ©Únthrootrg   re   rf   rj   rh   c                   S   s   t dƒ ttƒt¡S rŽ   )rG   Úanalytic_funcr0   rN   rs   rs   rs   rt   r“   §  r”   ztest_func.<locals>.<lambda>c                      s   ˆ t   tt ƒt ¡S rÀ   )rN   r_  r0   rs   rÊ   rs   rt   r“   ¨  r”   r™   rš   c                      s   ˆ   ttƒt¡S rÀ   )r_  r@   rN   rs   rÊ   rs   rt   r“   ¬  r”   r   r  r:  rV  ri   )Zsympy.simplify.simplifyr^  r   r_  r?   rN   rM   ro   r5   r(   r@   r]   r  r+   r>   r,   r]  rs   rÊ   rt   Ú	test_func�  s$    HT0" $00r`  z$Cannot create threads under pyodide.c               
   C   sL   dd„ } t dƒ�2 tj ¡ �}| | ¡}| ¡ s4t‚W 5 Q R X W 5 Q R X d S )Nc                  S   s&   t jd kst‚tdggƒ} | |  } dS r¶  )rX   Ústatero   r   r§   rs   rs   rt   r+  ¾  s    ztest_issue_19809.<locals>.fT)rZ   Ú
concurrentZfuturesZThreadPoolExecutorZsubmitÚresultro   )r+  ÚexecutorÚfuturers   rs   rt   Útest_issue_19809»  s
    

rf  c                  C   s@   t ttgƒ} t| tddftddfƒt tjgtjggƒks<t‚d S r  )r   rN   rO   r/   r!   r‚   ro   ræ   rs   rs   rt   Útest_issue_23276Ê  s
    þrg  (R  Úconcurrent.futuresrb  r  Úcollections.abcr   Zsympyr   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/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   r³  rI   rJ   rK   rL   rM   rN   rO   rP   Zsympy.core.kindrQ   rR   Zsympy.matrices.determinantrS   Zsympy.matrices.exceptionsrT   rU   rV   Zsympy.matrices.kindrW   Zsympy.matrices.utilitiesrX   rY   rZ   Z$sympy.tensor.array.array_derivativesr[   Zsympy.testing.pytestr\   r]   r^   r_   r`   ra   Zsympy.utilities.iterablesrb   rc   Úimportlib.metadatard   r�  rL  r  ru   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/  r5  r7  r8  r9  r;  r<  r=  rA  rI  rS  r^  r_  rb  re  rl  rn  rs  ru  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$  r0  r1  r5  r6  r8  r=  r>  r@  rA  rB  rF  rG  rI  rM  rN  rT  rU  rW  rX  rZ  r[  r\  r^  rd  re  rh  rl  rn  rq  rs  ru  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  r  r  r  r  r	  r  r#  r$  r%  r(  r.  r0  r2  r3  r8  r9  r>  r?  rD  rG  rH  rO  rP  rQ  rS  rW  rX  rZ  r[  r\  r`  rf  rg  rs   rs   rs   rt   Ú<module>   sâ  ÿ !( 

		
$" O!,Jb-
R		:
	(	
		
 HK>
7(]%
		-%	
