U
    ZÊ¹jAs ã                	   @   sh  d dl Z d dlZd dlmZ d dlmZ d dlmZm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlmZmZ d d	lmZ d d
lmZ d dlm Z m!Z! d dl"m#Z#m$Z$m%Z% d dl&m'Z'm(Z(m)Z) d dl*m+Z+ d dl,m-Z-m.Z. d dl/m0Z0 d dl1m2Z2 d dl3m4Z4 d dl5m6Z6m7Z7 d dl8m9Z9 d dl:m;Z;m<Z<m=Z= d dl>m?Z? d dl@mAZA d dlBmCZC d dlDmEZEmFZFmGZGmHZHmIZImJZJmKZKmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZYmZZZm[Z[m\Z\ d dlBm]Z] d dl^m_Z_m`Z` d dlambZb d dlcmdZdmeZemfZf d dlgmhZh d dlimjZjmkZkmlZlmmZmmnZnmoZo d d lpmqZq d d!lrmsZs d d"ltmuZu d d#lvmwZw d d$lxmyZy d d%lzm{Z{m|Z|m}Z}m~Z~mZm€Z€m�Z�m‚Z‚ eHeIeFeGfZƒd d&l„m…Z…m†Z† d d'l‡mˆZˆm‰Z‰ eoƒ � G d(d)„ d)e…e†eˆƒZŠW 5 Q R X eoƒ � G d*d+„ d+e…e†e‰ƒZ‹W 5 Q R X 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æ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�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 ek�dV�dW„ ƒ�Z!�dX�dY„ �Z"�dZ�d[„ �Z#�d\�d]„ �Z$�d^�d_„ �Z%�d`�da„ �Z&el�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„ �Z0�dv�dw„ �Z1�dx�dy„ �Z2�dz�d{„ �Z3�d|�d}„ �Z4�d~�d„ �Z5�d€�d�„ �Z6�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@en�d–ƒ�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´„ �ZO�dµ�d¶„ �ZPdS (·  é    N)ÚHashable)ÚAdd)ÚFunctionÚdiffÚexpand)ÚEÚFloatÚIÚIntegerÚRationalÚnanÚooÚpi)ÚPow)ÚS)ÚSymbolÚsymbols)Úsympify)ÚAbs)ÚexpÚlog)ÚMaxÚMinÚsqrt)ÚcosÚsinÚtan)Ú	integrate)ÚPolyÚPurePoly)ÚRootOf)Ússtr)Ú	FiniteSet)ÚsignsimpÚsimplify)Útrigsimp)Ú
ShapeErrorÚMatrixErrorÚNonSquareMatrixError©ÚDeferredVector)Ú_find_reasonable_pivot_naive)Ú	_simplify)ÚGramSchmidtÚImmutableMatrixÚImmutableSparseMatrixÚMatrixÚSparseMatrixÚ
casoratianÚdiagÚeyeÚhessianÚmatrix_multiply_elementwiseÚonesÚ
randMatrixÚ	rot_axis1Ú	rot_axis2Ú	rot_axis3Ú	wronskianÚzerosÚMutableDenseMatrixÚImmutableDenseMatrixÚMatrixSymbolÚdotprodsimpÚrot_ccw_axis1Úrot_ccw_axis2Úrot_ccw_axis3)Ú_dotprodsimp_state)ÚTupleÚWild)ÚKroneckerDelta)ÚflattenÚcaptureÚiterable)Úignore_warnings)ÚraisesÚXFAILÚslowÚskipÚskip_under_pyodideÚwarns_deprecated_sympy©ÚQ)ÚArray)ÚArrayDerivative)ÚMatPow)Ú
Quaternion)ÚaÚbÚcÚdÚxÚyÚzÚt)Ú_MinimalMatrixÚ_CastableMatrix)ÚMatrixSubspacesÚMatrixReductionsc                   @   s   e Zd ZdS )ÚSubspaceOnlyMatrixN©Ú__name__Ú
__module__Ú__qualname__© rj   rj   úa/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/matrices/tests/test_matrices.pyre   C   s   re   c                   @   s   e Zd ZdS )ÚReductionsOnlyMatrixNrf   rj   rj   rj   rk   rl   H   s   rl   c                 C   s   t | | dd„ ƒS )Nc                 S   s   t | |kƒS ©N)Úint©ÚiÚjrj   rj   rk   Ú<lambda>M   ó    z eye_Reductions.<locals>.<lambda>©rl   ©Únrj   rj   rk   Úeye_ReductionsL   s    rw   c                 C   s   t | | dd„ ƒS )Nc                 S   s   dS ©Nr   rj   ro   rj   rj   rk   rr   Q   rs   z"zeros_Reductions.<locals>.<lambda>rt   ru   rj   rj   rk   Úzeros_ReductionsP   s    ry   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 )Né   é   )rz   r{   c                 s   s   | ]}t |ƒtkV  qd S rm   )Útypern   ©Ú.0rp   rj   rj   rk   Ú	<genexpr>X   s     ztest_args.<locals>.<genexpr>)Ú	enumerateÚclassesr=   ÚshapeÚallÚAssertionErrorÚrowsr|   rn   ÚcolsÚflatÚlistÚtuplerF   ÚtodokÚdict)rv   ÚclsÚmrj   rj   rk   Ú	test_argsT   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 ©Nrz   r{   )r0   r.   r=   rR   Z_matr‡   r„   r1   r/   Z_smatrŠ   )rŒ   r�   ÚmatZsmatrj   rj   rk   Útest_deprecated_mat_smata   s    r‘   c                  C   s8   t ddttgƒ} | t t ddtt tt gƒks4t‚d S ©Né   r{   )r0   r]   r^   r_   r„   )Úvrj   rj   rk   Útest_divisionn   s    r•   c                      s”   t dddgtttgdt dtt ggƒ‰ ˆ ˆ  t dddgdt dt dt gdt ddt t ggƒkslt‚t ddddgƒ‰tt‡ ‡fdd	„ƒ d S )
Nr“   r{   rz   iÎÿÿÿé   é   iœÿÿÿc                      s   ˆ ˆ S rm   rj   rj   ©r�   rv   rj   rk   rr   w   rs   ztest_sum.<locals>.<lambda>)r0   r]   r^   r_   r„   rM   r&   rj   rj   r˜   rk   Útest_sums   s    (Dr™   c                  C   s8   t dddtgƒ} t dddttƒgƒ}t| ƒ|ks4t‚d S )Nr“   r{   éýÿÿÿrz   )r0   r]   r   Úabsr„   r˜   rj   rj   rk   Útest_absy   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)©r“   r{   ©rz   r“   ©r�   )rz   r   r{   r–   r—   r“   )r0   Úaddr„   ©rY   rZ   rj   rj   rk   Útest_addition~   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 )Nrz   é	   r“   r–   é   é   r   r{   r—   ©r   r   é   r�   ©r   r“   ©r{   r   )r0   r1   Úranger„   r=   Úextract)ÚMrY   rj   rj   rk   Útest_fancy_index_matrixŒ   sZ    &"0&&424((ûý
þþ



ür­   c                     sV  t dƒ‰ t dƒ‰ˆ ˆ } | d dks(t‚| d dks8t‚| d dksHt‚| d	 dksXt‚| d
 dksht‚| d dksxt‚ztdƒ W n tk
r˜   Y nbX | 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�s*t‚|d dk�s<t‚|d dk�sNt‚|d	 dk�s`t‚|d
 dk�srt‚|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 ƒ�s2t‚| d dk�sDt‚| d dk�sVt‚| d dk�sht‚| d	 dk�szt‚ztdƒ W n tk
�rœ   Y nZX t	| t ƒ�s®t‚| d dk�sÀt‚| d dk�sÒt‚| d dk�sät‚| d	 dk�söt‚t td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�sRt‚d S )N)r�   rž   ©r   r—   rŸ   r¦   r¥   r¨   r{   ©r“   r   r—   ©r“   r“   r©   é   ©r{   r“   r   z	c = a @ br–   c                      s
   t ˆ ˆƒS rm   )r6   rj   r¡   rj   rk   rr   à   rs   z%test_multiplication.<locals>.<lambda>r]   rz   r¤   é
   é   z	c = 5 @ b)r0   r„   ÚevalÚSyntaxErrorr6   Zmultiply_elementwiserM   r&   r   Ú
isinstancer]   r   r   )r[   ÚhÚc2r¬   rj   r¡   rk   Útest_multiplication¸   sn    
rº   c               
      s^	  t tdd„ ƒ t} tddgddggƒ‰ ˆ d d d … | dƒd	 | d
ƒd	 | dƒd | dƒd gksft‚ˆ d d d … ddddgks†t‚tdddgdddgdddggƒ‰ ˆ d d d … ddddddddd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  tdƒk�s0t‚tddgddggƒtdƒ td!d"gd#d$ggƒk�sft‚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�s2t‚dd+l	m
‰ tdtgddggƒˆ tdtˆ gddggƒk�stt‚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ƒ�s,t‚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d	dgddggƒ‰ ˆ d/ td2d3gd4d5g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�slt‚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d6d7d8�‰tˆ ˆ tƒ�sÚt‚td6d7d7d9�‰t t‡ ‡fd:d„ƒ td6d7d7d;�‰ˆ ˆ ttdˆƒtdˆƒtdˆƒ tdˆƒ d gdtdˆƒdtdˆƒ gdddggƒk�sjt‚ˆ ˆ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?d@gdAdBdCgdDdEdFggƒk�süt‚ˆ d= ˆ d k�st‚tdddgd)ddgdddggƒ‰ td6ƒ‰ˆ ˆ ‰ˆ ˆd¡ ¡ ˆ d k�s`t‚t t‡‡fdGd„ƒ ˆˆ ˆ dˆ  k�sŽt‚tdddgdddgdddggƒ‰ td6d7d7dH�‰ˆ ˆ ˆ k�sÎt‚td6d7d7d;�‰ˆ ˆ tdˆ dˆ dˆ ƒk�st‚ˆ ˆ  ˆd¡tdƒk�s t‚ˆ ˆ  ˆd¡tdƒk�s>t‚tdddgdddgdddggƒ‰ ˆ dI tdJdJdJƒk�sxt‚ˆ 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dKd„ƒ t t‡ fdLd„ƒ 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�	sZt‚d S )MNc                   S   s   t dƒd S ©Nr�   r{   ©r0   rj   rj   rj   rk   rr     rs   ztest_power.<locals>.<lambda>r{   rz   r–   r¤   rš   ióþÿÿr§   é™   é3   iãÿÿÿiü  i¡  i,*  i�7  r“   r—   é   i"  i  éû   iÀ  i¸  ip  i¾  iº  i±  r   éd   r¦   i€–˜ r¥   r³   r´   é   é!   é   é0   é9   éÿÿÿÿg      à?ru   i   c                      s   ˆ   tdƒ¡S ©Nr³   )Ú_matrix_pow_by_jordan_blocksr   rj   ©r�   rj   rk   rr   /  rs   c                   S   s   t ddgddggƒ tdƒ¡S )Nr“   rz   éöÿÿÿ)r0   rÉ   r   rj   rj   rj   rk   rr   2  rs   ç      $@c                      s   ˆ d S ©NçÍÌÌÌÌÌ @rj   rj   ©ÚArj   rk   rr   5  rs   c                      s   ˆ t ddƒ S r�   ©r   rj   rÏ   rj   rk   rr   6  rs   i«ÒòhiÒO<ivï´0i¿óˆrv   T)Úinteger)rÒ   Únegativec                      s   ˆ ˆ S rm   rj   rj   )rÐ   rv   rj   rk   rr   @  rs   )rÒ   Znonnegativec                      s   ˆ t ddƒ S r�   rÑ   rj   rÏ   rj   rk   rr   G  rs   g      @é¨   éH   éY   i#  é�   é¡   i<  i  iI  c                      s   ˆ   ˆd¡ ¡ S )Néþÿÿÿ)ÚsubsÚdoitrj   )ÚAnrv   rj   rk   rr   O  rs   )rÒ   ÚpositiverÎ   gd%îû%@c                      s   ˆ d S rÍ   rj   rj   rÏ   rj   rk   rr   ^  rs   c                      s   ˆ t  S rm   ©r	   rj   rÏ   rj   rk   rr   _  rs   )rM   r(   r   r0   r„   r4   r
   r   ÚHalfÚ	sympy.abcrv   rY   rZ   rÉ   Z_eval_pow_by_recursionr'   Ú
ValueErrorr   r·   rW   rH   rÚ   rÛ   r3   r=   r	   )ÚRrj   )rÐ   rÜ   r�   rv   rk   Ú
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 )Nr“   Tr{   )r0   r]   rA   r   r   r„   ©r¬   rj   rj   rk   Ú$test_issue_17247_expression_blowup_1f  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 ©Nr“   T)r0   r]   rA   Újordan_formÚinvr„   ©r¬   ÚPÚJrj   rj   rk   Ú$test_issue_17247_expression_blowup_2m  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 )Nr“   TrÁ   l                )r0   r]   rA   r„   rä   rj   rj   rk   Ú$test_issue_17247_expression_blowup_3s  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]])r0   r   rA   r„   rä   rj   rj   rk   Ú$test_issue_17247_expression_blowup_4z  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 )Nr—   c                 S   s   dd| |  t   S ©Nr“   rÇ   rÞ   ro   rj   rj   rk   rr   §  rs   z6test_issue_17247_expression_blowup_5.<locals>.<lambda>Tr]   éúÿÿÿr¤   é$   r–   ZEX©Údomain)r0   rA   Úcharpolyr   r]   r	   r„   rä   rj   rj   rk   Ú$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 rj   ©r]   r}   rj   rj   rk   Ú
<listcomp>¬  s     z8test_issue_17247_expression_blowup_6.<locals>.<listcomp>é@   TZbareissr   ©r0   rª   rA   Údetr„   rä   rj   rj   rk   Ú$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 )Nr—   c                 S   s   dd| |  t   S rï   rÞ   ro   rj   rj   rk   rr   ±  rs   z6test_issue_17247_expression_blowup_7.<locals>.<lambda>TÚ	berkowitzr   )r0   rA   rú   r„   rä   rj   rj   rk   Ú$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 rj   rö   r}   rj   rj   rk   r÷   ¶  s     z8test_issue_17247_expression_blowup_8.<locals>.<listcomp>rø   TZlur   rù   rä   rj   rj   rk   Ú$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 rj   rö   r}   rj   rj   rk   r÷   »  s     z8test_issue_17247_expression_blowup_9.<locals>.<listcomp>rø   Tr“   r   rÇ   rÙ   rš   éüÿÿÿéûÿÿÿrð   r{   rz   r–   r¤   r—   r¥   r¨   )r0   rª   rA   Úrrefr„   rä   rj   rj   rk   Ú$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 )Nr—   c                 S   s   dd| |  t   S rï   rÞ   ro   rj   rj   rk   rr   È  rs   z7test_issue_17247_expression_blowup_10.<locals>.<lambda>Tr   )r0   rA   Zcofactorr„   rä   rj   rj   rk   Ú%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 )Nr—   c                 S   s   dd| |  t   S rï   rÞ   ro   rj   rj   rk   rr   Í  rs   z7test_issue_17247_expression_blowup_11.<locals>.<lambda>Tr   rñ   )r0   rA   Zcofactor_matrixr„   rä   rj   rj   rk   Ú%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 )Nr—   c                 S   s   dd| |  t   S rï   rÞ   ro   rj   rj   rk   rr   Ò  rs   z7test_issue_17247_expression_blowup_12.<locals>.<lambda>Tr“   r   r–   )r0   rA   Z	eigenvalsr	   r„   rä   rj   rj   rk   Ú%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   r“   r{   rÇ   FT)ÚdeepZnumerrÿ   )r0   r]   Z
eigenvectsr„   r   r   )r¬   Zevrj   rj   rk   Ú%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§   r“   r–   Tr   )r0   r]   rA   Úechelon_formr„   rä   rj   rj   rk   Ú%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  )r0   r]   rA   Úrowspacer„   rä   rj   rj   rk   Ú%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§   r“   r–   T)r0   r]   rA   Úcolumnspacer„   rä   rj   rj   rk   Ú%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 rj   rö   r}   rj   rj   rk   r÷   
  s     z9test_issue_17247_expression_blowup_17.<locals>.<listcomp>rø   Tr“   rÙ   r   r{   rš   rz   rÿ   r–   r   r¤   rð   r—   éùÿÿÿ)r0   rª   rA   Ú	nullspacer„   rä   rj   rj   rk   Ú%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 )Nr—   r“   rz   T)r0   r]   rA   Úis_nilpotentr„   rä   rj   rj   rk   Ú%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)r0   r   rA   Úis_diagonalizabler„   rä   rj   rj   rk   Ú%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 )Nr“   r   TrÇ   r{   )r0   r]   rA   Údiagonalizer„   rä   rj   rj   rk   Ú%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ÚGE©Úmethodá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]]©r0   r   rA   rè   r„   rä   rj   rj   rk   Ú%test_issue_17247_expression_blowup_214  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ä   rj   rj   rk   Ú%test_issue_17247_expression_blowup_22A  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  )r0   r   rA   rè   r   r„   rä   rj   rj   rk   Ú%test_issue_17247_expression_blowup_23N  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  ©r1   r   rA   rè   r0   r„   rä   rj   rj   rk   Ú%test_issue_17247_expression_blowup_24[  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ä   rj   rj   rk   Ú%test_issue_17247_expression_blowup_25h  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]]Tr–   ©r0   r   rA   Úrankr„   rä   rj   rj   rk   Ú%test_issue_17247_expression_blowup_26u  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   r“   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]])r0   r]   rA   rç   r   r   r„   ré   rj   rj   rk   Ú%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)])r0   r   rA   Zsingular_valuesr„   rä   rj   rj   rk   Ú%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ä   rj   rj   rk   Ú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 )Nr“   r   r{   rÇ   r   r  rÙ   rš   rz   r¥   r–   éôÿÿÿr¿   T)r   r“   r{   rz   r–   r¤   r—   r¥   )r0   r   rA   r  r   r„   rä   rj   rj   rk   Ú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 )Nr¤   é   )r0   rª   rj   rj   rj   rk   rr   Ï  rs   ztest_creation.<locals>.<lambda>c                   S   s   t ddg ƒS )Nr¤   rÇ   r¼   rj   rj   rj   rk   rr   Ð  rs   c                   S   s   t dƒd S r»   r¼   rj   rj   rj   rk   rr   Ñ  rs   r¤   r�   rz   r   r“   r{   )r{   r¦   r¥   r³   r–   r—   r§   r£   F©ÚevaluaterÐ   r¨   r¯   r°   c                 S   s   g | ]
}|g‘qS rj   rj   r}   rj   rj   rk   r÷     s     z!test_creation.<locals>.<listcomp>c                   S   s   t tdƒtddƒgƒS )Nr{   r   rz   ©r0   r7   rj   rj   rj   rk   rr     rs   c                   S   s   t tdƒtddƒgƒS )Nr{   rz   r   r3  rj   rj   rj   rk   rr     rs   )r¤   r—   )rM   rá   Ú
IndexErrorr0   r„   rR   ÚtolistÚTr   ZEmptySetr]   r†   r…   rª   r4   r.   Úas_immutableÚ
as_mutabler7   r@   )
r¬   rY   r�   rZ   Zc23Zc13r[   ÚdatrÐ   ÚM2rj   rj   rk   Ú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 )Nrz   r{   r“   r–   r¤   r—   r¥   )r0   Z	irregularr7   r„   rj   rj   rj   rk   Útest_irregular_block   s    &   ÿüÿr<  c                  C   sT   t jt jtt t jgttttd gtt j tt dgg} t| ƒ}| ¡ | ksPt	‚d S )Nr{   rz   )
r   ÚOnerß   r]   r^   ÚZeror_   r0   r5  r„   )Úlstr�   rj   rj   rk   Útest_tolist)  s    8r@  c                   C   s`   t ddƒ ¡ t ddƒkst‚t ddƒ ¡ tt ddƒƒks<t‚t ddƒ ¡ tt ddƒƒks\t‚d S ©Nr   rz   )r=   r8  r„   r7  r.   rj   rj   rj   rk   Útest_as_mutable/  s     rB  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 )Nr–   rz   r{   r   c                 S   s   | | S rm   rj   ro   rj   rj   rk   rr   :  rs   ztest_slicing.<locals>.<lambda>r“   ©r   r“   r{   ©r{   rz   r¤   r—   r¥   r§   r£   r³   é   r¿   é   é   r´   rÇ   rÙ   )r4   r„   r=   r0   )Úm0Úm1Úm2rj   rj   rk   Útest_slicing5  s        0(rK  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 )Nr–   r{   )©r   r   r   r   rL  )r   r   r“   r   )r   r   r   r“   r“   ©r“   r{   rz   r–   r   ))r“   r   r   r   )r{   r“   r   r   )rz   r   r“   r   )r–   r   r   r“   ©r¤   r—   r¥   r§   ©r£   r³   rE  r¿   ©rF  rG  r´   é   ©rM  rN  rO  rP  ))r   r{   rz   r–   )r   r—   r¥   r§   rO  rP  )r=   r4   r0   r„   rÊ   rj   rj   rk   Útest_submatrix_assignmentC  s    rS  c                
      s¸   t dddd„ ƒ‰ ˆ  dddgddg¡t dddddddd	gƒksBt‚ˆ  ddgdddg¡t dddddddd
gƒkstt‚ˆ  tdƒtdƒ¡ˆ ks�t‚tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nr–   rz   c                 S   s   | d | S ©Nrz   rj   ro   rj   rj   rk   rr   `  rs   ztest_extract.<locals>.<lambda>r   r“   r{   r£   r³   rE  c                      s   ˆ   dgdg¡S )Nr–   r   ©r«   rj   rÊ   rj   rk   rr   d  rs   c                      s   ˆ   dgdg¡S rA  rU  rj   rÊ   rj   rk   rr   e  rs   )r0   r«   r„   rª   rM   r4  rj   rj   rÊ   rk   Útest_extract_  s    22rV  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 )Nrz   r“   r£   )	r“   r   r   r   r“   r   r   r   r“   r–   c                 S   s   | | S rm   rj   ro   rj   rj   rk   rr   k  rs   ztest_reshape.<locals>.<lambda>)rC  )rz   r“   r{   )rz   r–   r{   )rz   r–   r¤   r{   r—   ))r   r“   r{   rz   r“   r{   )rz   r–   r{   rz   r–   r¤   )r4   Úreshaper0   r„   ©rH  rI  rj   rj   rk   Útest_reshapeh  s     ÿÿrY  c                  C   sD   t dƒ} |  dd„ ¡t dƒd ks&t‚|  dd„ ¡tdƒks@t‚d S )Nrz   c                 S   s   d|  S ©Nr{   rj   rö   rj   rj   rk   rr   s  rs   z test_applyfunc.<locals>.<lambda>r{   c                 S   s   dS rx   rj   rö   rj   rj   rk   rr   t  rs   )r4   Ú	applyfuncr„   r=   )rH  rj   rj   rk   Útest_applyfuncq  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 )
Nr{   rz   rY   T©Úreal)Úcomplexr   r“   rÇ   )r0   r]   r^   r   r„   r   r   r	   r   r   r   )rH  rI  rY   rj   rj   rk   Útest_expandw  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 rZ  )r0   r   r]   r   r^   ZrefinerT   r^  r„   rÝ   rÓ   rX  rj   rj   rk   Útest_refine‰  s    .ÿ<0ra  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 )Nrz   )Úseedr–   r   é–   T)rb  Ú	symmetric)rd  Úprng)r³   rE  )rÁ   éF   é   )rd  Úpercentre  r³   r“   rf  )Úminrh  rg  )	r8   r„   Úcopyr$   ÚrandomÚRandomr6  rª   r‚   )r¬   r   ÚrngÚsizerh  Z
zero_countrp   rq   rj   rj   rk   Útest_random•  s,    

ro  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 )Nr–   r  r  r!  r#  r&  ZQRr{   rz   r¤   r—   r§   r   r“   ZBLOCKrÅ   é1   é   r£   éG   é^   é;   é   éA   c                 3   s    | ]}t ˆ |¡ƒˆ kV  qd S rm   ©r|   rè   ©r~   Ús©rŒ   r�   rj   rk   r   å  s     ztest_inverse.<locals>.<genexpr>zGE ADJ LU CH LDL QRc                 3   s    | ]}t ˆ |¡ƒˆ kV  qd S rm   rw  rx  rz  rj   rk   r   ê  s     )	r4   rè   r„   r0   r‚   r.   rƒ   Úsplitr/   )rÐ   ZAinvZAArj   rz  rk   Ú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   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 )Nr“   r{   r–   rz   r   r—   )r0   r]   r^   Újacobianr„   r5   r_   r6  )ÚLZsymsÚfÚgÚansrj   rj   rk   Útest_jacobian_hessianí  s0    (6>0>ÿ
ÿýr‚  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 )Nr{   rz   r“   rð   r—   rü   r  )r<   r   r]   r   r„   r   r   )Zw1Zw2rj   rj   rk   Útest_wronskian	  s&    2**Jÿÿ*"ÿ
R*"ÿ
rƒ  c                  C   sv  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ƒjttd ttd idd	�t td td  gƒk�s:t‚tD ]2} t dd
gd
dggƒ|  d¡ dd¡k�s>t‚�q>d S )Nr“   r–   r¤   r{   rÇ   rÙ   rš   T)Zsimultaneousr   )r0   r]   rÚ   r„   r^   r�   r4   ©rŒ   rj   rj   rk   Ú	test_subs  s    4(ÿ(ÿ$ÿ&ÿ
r…  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 )	Nr“   r–   r¤   r{   rÇ   rÙ   rš   r   )r0   r]   Úxreplacer„   r^   r�   r4   r„  rj   rj   rk   Útest_xreplace(  s    ÿ$ÿr‡  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‚d S )Nrv   r  r“   r{   )Úratio)
r   r   r0   r]   r^   r   r   r$   r„   r   )rv   r  r¬   Úeqrj   rj   rk   Útest_simplify0  s     :ÿ&ÿ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 )Nr“   r{   rz   r–   r¤   r—   r¥   r§   r£   r   )r0   r6  r„   Ú	transposerä   rj   rj   rk   Útest_transposeA  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   r¤   r“   r{   )r0   r	   r6  r„   ÚCÚ	conjugateÚHrä   rj   rj   rk   Útest_conjugateR  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 rT  )r4   ÚDrj   rj   rj   rk   rr   e  rs   z!test_conj_dirac.<locals>.<lambda>r“   r   rÇ   )rM   ÚAttributeErrorr0   r	   r‘  r„   rä   rj   rj   rk   Útest_conj_diracd  s    


ýýr“  c                  C   s4   t dddgdddgdddggƒ} |  ¡ dks0t‚d S )Nr“   r   r¤   r§   rG  )r0   Útracer„   rä   rj   rj   rk   Ú
test_tracer  s
    
þr•  c                  C   s*   t tddgdtdggƒ} | jdks&t‚d S )Nr   rD  )r0   r]   r^   r‚   r„   rä   rj   rj   rk   Ú
test_shapey  s    
ÿr–  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   r“   c                 S   s   | | d S ©Nr“   rj   )Úrrq   rj   rj   rk   rr   ‚  rs   z!test_col_row_op.<locals>.<lambda>r{   rz   c                 S   s   | t |  S rm   )r^   )r[   rq   rj   rj   rk   rr   †  rs   é*   r¦   rÇ   )r0   r]   r^   Zrow_opr„   Zcol_opÚrowÚcol)r¬   Úr1Úc1rj   rj   rk   Útest_col_row_op  s2    
ÿÿÿ"

rž  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 )Nr“   r{   rz   r–   r¤   r—   r¯   r¿   r¦   r�   r±   )r0   Zrow_multr„   rä   rj   rj   rk   Útest_row_multœ  s    
ÿrŸ  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 )Nr“   r{   rz   r–   r¤   r—   r   r¦   r¯   ©r   r{   r§   )r0   Zrow_addr„   rä   rj   rj   rk   Útest_row_add¥  s    
þr¡  c                  C   s®   t d d… D ]œ} |  d¡}| dddd„ ¡ || dddgdddgdddggƒksTt‚|  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 )Nr{   rz   r“   r   c                 S   s   | d|  S rZ  rj   ©r”   Úurj   rj   rk   rr   ²  rs   z!test_zip_row_op.<locals>.<lambda>rÇ   r¨   c                 S   s   | d|  S rZ  rj   r¢  rj   rj   rk   rr   ¹  rs   r–   )r�   r4   Z
zip_row_opr„   )rŒ   r¬   rj   rj   rk   Útest_zip_row_op¯  s    
þ þr¤  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 )Nr“   r{   rz   rj   )r“   ©r0   r„   )r�   rY   rZ   rj   rj   rk   Útest_issue_3950¾  s    r¦  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 r—  rj   ©Úselfrj   rj   rk   Ú	__index__Ë  s    z)test_issue_3981.<locals>.Index1.__index__N©rg   rh   ri   r©  rj   rj   rj   rk   ÚIndex1Ê  s   r«  c                   @   s   e Zd Zdd„ ZdS )ztest_issue_3981.<locals>.Index2c                 S   s   dS rZ  rj   r§  rj   rj   rk   r©  Ï  s    z)test_issue_3981.<locals>.Index2.__index__Nrª  rj   rj   rj   rk   ÚIndex2Î  s   r¬  r“   r{   rz   r¤   r–   r—   r�   r§   r¥  )r«  r¬  Zindex1Úindex2r�   rj   rj   rk   Útest_issue_3981É  s$    r®  c                      sn   t tdƒdgƒ‰ t‡ fdd„tdƒD ƒƒs.t‚t‡ fdd„tdƒD ƒƒsLt‚t‡ fdd„tdƒD ƒƒsjt‚d S )Nr¤   r—   c                 3   s&   | ]}ˆ   ¡ | ˆ |   ¡ kV  qd S rm   ©Úevalfr}   ©rY   rj   rk   r   ê  s     ztest_evalf.<locals>.<genexpr>r{   c                 3   s*   | ]"}ˆ   d ¡| ˆ |   d ¡kV  qdS ©r{   Nr¯  r}   r±  rj   rk   r   ë  s     c                 3   s*   | ]"}ˆ   d ¡| ˆ |   d ¡kV  qdS r²  ru   r}   r±  rj   rk   r   ì  s     )r0   r   rƒ   rª   r„   rj   rj   r±  rk   Ú
test_evalfè  s    r³  c                  C   s
  t ttgttggƒ} |  ¡ dks$t‚t ddddgdddd	ggƒ} |  ¡ d
ksPt‚t ddddgddtd	ggƒ} |  ¡ dks|t‚t dtdggƒ} |  ¡ dksœt‚t dddggƒ} |  ¡ d
ks¼t‚t dgtgdggƒ} |  ¡ dksàt‚t dgdgdggƒ} |  ¡ d
k�st‚d S )NTr“   r{   rz   r–   r¤   r—   r¥   r§   F)r0   r]   Zis_symbolicr„   r±  rj   rj   rk   Útest_is_symbolicï  s    r´  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 )Nr“   r{   rz   TFr–   )r0   Zis_upperr„   r=   r±  rj   rj   rk   Útest_is_upper   s    
rµ  c                  C   sD   t dddggƒ} | jdkst‚t dgdgdggƒ} | jdks@t‚d S )Nr“   r{   rz   FT)r0   Úis_lowerr„   r±  rj   rj   rk   Útest_is_lower	  s    r·  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 )Nr–   r   r{   r“   r—   rz   )r0   r  r„   r±  rj   rj   rk   Útest_is_nilpotent  s    ,r¸  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)rz   r¤   r¤   rz   r{   r   r—   r“   )r=   Úfillr7   r„   r…   r†   r‚   r0   )rv   r�   rY   rZ   rj   rj   rk   Útest_zeros_ones_fill  s    

  
rº  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   r{   )r=   r0   r„   r…   r†   r±  rj   rj   rk   Ú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 )Nr{   r“   r   rz   )r0   r]   r^   r   r   r   r„   r   Úlimitr   r›   r   r   r±  rj   rj   rk   Útest_issue_37499  s0    ,."þ þý$þ þý

 &þr½  c                  C   sD   t dƒ} |  dd¡ dD ]&}| j|dd„ d�| jdd	�kst‚qd S )
Nr–   r   r“   )r  r  c                 S   s   | dkS rx   rj   rö   rj   rj   rk   rr   M  rs   z%test_inv_iszerofunc.<locals>.<lambda>)r  Ú
iszerofuncr!  r  )r4   Zcol_swaprè   r„   )rÐ   r  rj   rj   rk   Útest_inv_iszerofuncI  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   r“   r{   )r   r0   r   r   r}  r6  r„   r4   r‚   r[  r%   )ÚrhoÚphiÚXÚYrë   r€  rj   rj   rk   Útest_jacobian_metricsQ  s    

rÅ  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À  r{   r   )r   r0   r   r   r}  r„   )rÁ  rÂ  rÃ  rÄ  rë   rj   rj   rk   Útest_jacobian2^  s    "
ýrÆ  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 ©Nr“   rz   )
r0   r   r]   r^   r_   rª   r}  r…   r„   r†   )rÃ  rÄ  rp   rq   ZX_sliceZY_slicerë   Úkrj   rj   rk   Útest_issue_4564j  s    2
rÉ  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 rm   ©r}  r0   r]   r^   r_   rj   ©rÃ  rj   rk   rr   {  rs   z(test_nonvectorJacobian.<locals>.<lambda>r   c                      s
   ˆ   ˆ¡S rm   )r}  rj   ©rÃ  rÄ  rj   rk   rr   ~  rs   c                      s   ˆ   tttgttggƒ¡S rm   rÊ  rj   rË  rj   rk   rr     rs   )r0   r   r]   r^   r_   rM   Ú	TypeErrorrj   rj   rÌ  rk   Útest_nonvectorJacobianx  s     ÿrÎ  c                  C   sP   t ddgddggƒ} |  ¡ }|jdks*t‚tdƒD ]}|| |d ks2t‚q2d S ©Nr“   rz   r{   r–   )r0   Zvecr†   r„   rª   )r�   Zm_vecrp   rj   rj   rk   Útest_vec‚  s
    rÐ  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 )Nr“   r{   rz   F)Údiagonalr   )rÑ  Zcheck_symmetryc                   S   s   t ddggƒ ¡ S rÇ  ©r0   Úvechrj   rj   rj   rk   rr   ›  rs   ztest_vech.<locals>.<lambda>c                   S   s   t ddgddggƒ ¡ S rÏ  rÒ  rj   rj   rj   rk   rr   œ  rs   c                   S   s   t ddggƒ ¡ S rÇ  rÒ  rj   rj   rj   rk   rr   �  rs   c                   S   s   t ddgddggƒ ¡ S rÏ  rÒ  rj   rj   rj   rk   rr   ž  rs   )
r0   rÓ  r†   r„   rª   r]   r^   rM   r&   rá   )r�   Zm_vechrp   rj   rj   rk   Ú	test_vechŠ  s"    ( rÔ  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 )Nr“   r{   rz   c                      s   t ˆ ƒS rm   )r3   rj   rÊ   rj   rk   rr   ¥  rs   ztest_diag.<locals>.<lambda>F)Ústrict)r3   r0   r„   rM   rá   rj   rj   rÊ   rk   Ú	test_diag¡  s     rÖ  c                  C   s‚   t ddgddggƒ} t dtgtdggƒ}t dtdgtdtgtttggƒ}|  ¡ | gksZt‚| ¡ |gkslt‚| ¡ |gks~t‚d S ©Nr“   r{   rz   )r0   r]   r^   r_   Úget_diag_blocksr„   ©rY   rZ   r[   rj   rj   rk   Útest_get_diag_blocks1©  s     rÚ  c                  C   sÄ   t ddgddggƒ} t dtgtdggƒ}t dtdgtdtgtttggƒ}t| ||ƒ ¡ | ||gksft‚t| ||ƒ ¡ | ||gks„t‚t| ||ƒ ¡ | ||gks¢t‚t|||ƒ ¡ |||gksÀt‚d S r×  )r0   r]   r^   r_   r3   rØ  r„   rÙ  rj   rj   rk   Útest_get_diag_blocks2²  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| ||ƒ}|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 )	Nr“   r{   rz   T)Útry_block_diagr!  )rÜ  r  r  )r0   r]   r^   r_   r3   rè   r„   )rY   rZ   r[   rÐ   rj   rj   rk   Útest_inv_block¼  s4     (((     ÿ
 
 

 
 
þrÝ  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 )Nrz   rÇ   ©r=   rj   rj   rj   rk   rr   Ó  rs   z$test_creation_args.<locals>.<lambda>c                   S   s   t ddddƒS ©Nr“   r{   rz   r–   rÞ  rj   rj   rj   rk   rr   Ô  rs   rz   c                   S   s   t dƒS ©Nç      @rÞ  rj   rj   rj   rk   rr   ×  rs   c                   S   s   t dƒS rà  ©r4   rj   rj   rj   rk   rr   Ú  rs   r–   c                   S   s   t dƒS ©Nr¤   r¼   rj   rj   rj   rk   rr   Ü  rs   c                   S   s
   t ddƒS r’   r¼   rj   rj   rj   rk   rr   Ý  rs   c                   S   s   t ddggƒS r’   r¼   rj   rj   rj   rk   rr   Þ  rs   N)	rM   rá   rÍ  r=   rn   r„   r
   r4   r7   rj   rj   rj   rk   Ú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 )	Nr{   r   r“   F©r$   rz   ))r¤   r   r®   r¦   ))r¤   r   r   )r   r—   r   )	r0   Úis_diagonalr„   Úis_symmetricr3   r=   r]   r^   r   rÊ   rj   rj   rk   Ú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 )Nr“   r{   rz   rš   r0  r³   c                      s   ˆ   ¡ S rm   ©r  rj   rÊ   rj   rk   rr     rs   z&test_diagonalization.<locals>.<lambda>r   rÿ   rÇ   Tc                      s
   ˆ   d¡S )NTré  rj   rÊ   rj   rk   rr   4  rs   c                      s   ˆ   ¡ S rm   ré  rj   rÊ   rj   rk   rr   <  rs   rÙ   r–   c                      s   ˆ   ¡ S rm   ré  rj   rÊ   rj   rk   rr   @  rs   úa b c d)r0   r	   r  r„   rç  rM   r(   r3   r  r4   rè   Zas_numer_denomræ  r'   r   )rê   r‘  rp   rY   rZ   r[   r\   rj   rÊ   rk   Ú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   r“   Tr¯   Fc                      s   ˆ   ¡ S rm   ré  rj   r±  rj   rk   rr   S  rs   z"test_issue_15887.<locals>.<lambda>)r>   r  r„   r  rM   r'   rj   rj   r±  rk   Útest_issue_15887I  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 )#Nrz   r{   rš   r“   r0  r³   c                      s   ˆ   ¡ S rm   )rç   rj   rÊ   rj   rk   rr   Y  rs   z"test_jordan_form.<locals>.<lambda>r¥   r.  r—   iíÿÿÿr¿   ièÿÿÿrF  rÇ   r   rÿ   r–   rÙ   éñÿÿÿr   rð   r¤   r  é÷ÿÿÿéøÿÿÿr£   z1.0én   )Ú	precisionz2.0z3.14159265358979323846264338327z4.0)r0   rM   r(   rç   r„   r  r  r   Úvaluesr·   Z_prec)ZJmustrê   rë   Útermrj   rÊ   rk   Útest_jordan_formV  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 )Nr{   r–   r“   r   rÿ   )r0   r	   rç   r„   r$   rè   )rÐ   ÚpÚqZJmust1ZJmust2rê   rë   rj   rj   rk   Ú#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 )Nr“   r   )r0   rç   r„   ré   rj   rj   rk   Ú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 )Nr“   r   rÙ   rÇ   r{   )r0   rç   r   r	   r   r„   )rÐ   rê   rë   rj   rj   rk   Ú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_wr{   zZZ(K_i,K_w,UA)rò   r“   rz   r   r—   )r   r0   rô   r]   r   r„   r|   r   ÚgenZas_exprrÚ   )ZUAZK_iZK_wrÐ   rô   rõ  rj   rj   rk   Ú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Úlamdar“   rz   r{   r   )r   r0   Újordan_blockZ_eval_matrix_exp_jblockr   r„   )Úlr�   rj   rj   rk   Ú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 )	Nrz   r–   r   rÙ   rÿ   r¤   r“   rÇ   )r0   r   r„   r   r   r   )r�   Zm_exprj   rj   rk   Ú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ü  r“   r–   rÇ   r{   rz   r   c                      s   ˆ   ¡ S rm   )r   rj   rÊ   rj   rk   rr      rs   ztest_log.<locals>.<lambda>)r   r0   rý  Z_eval_matrix_log_jblockr   r„   rM   r'   )rþ  rj   rÊ   rk   Útest_log
  s(    *üÿÿ
þÿr  c                  C   sX   t ttfdfƒ} |  t¡st‚|  t¡r,t‚|  t¡s:t‚|  td¡} |  t¡rTt‚d S )NrD  r{   )r0   r]   r^   Úhasr„   r_   r   rÚ   rÏ   rj   rj   rk   Útest_has#  s    r  c                  C   sR   t dƒ} tdd| t| ƒd t| ƒd  tjgƒ}t|ƒ\}}}}|tjksNt‚d S )Nr]   rz   r“   r{   )r   r0   r   r   r   rß   r+   r„   ©r]   ÚcolumnZpivot_offsetZ	pivot_valZpivot_assumed_nonzeroZ
simplifiedrj   rj   rk   Ú: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 )Nr]   rz   r“   r{   ©Zsimpfunc)r   r0   r   r   r+   r,   r„   r  rj   rj   rk   Ú:test_find_reasonable_pivot_naive_finds_guaranteed_nonzero29  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 )Nr]   rz   r“   r{   r  r   )r   r0   r   r   r+   r,   Úlenr„   r  rj   rj   rk   Ú+test_find_reasonable_pivot_naive_simplifiesH  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¼   rj   rj   rj   rk   rr   [  rs   ztest_errors.<locals>.<lambda>c                   S   s   t ddggƒd S )Nr“   r{   )g333333ó?r¤   r¼   rj   rj   rj   rk   rr   \  rs   c                   S   s   t ddggƒd S )Nr“   r{   )r“   gÍÌÌÌÌÌ@r¼   rj   rj   rj   rk   rr   ]  rs   c                   S   s   t dddd�S )Nrz   r–   T)r[   rd  )r8   rj   rj   rj   rk   rr   ^  rs   c                   S   s   t ddgƒ dd¡S )Nr“   r{   r–   r—   )r0   rW  rj   rj   rj   rk   rr   _  rs   c                   S   s(   t ddgddggƒ ddgt ddgƒ¡S ©Nr“   r{   rz   r–   r   )r0   Zcopyin_matrixrj   rj   rj   rk   rr   a  rs   c                   S   s"   t ddgddggƒ ddgtƒ ¡S r  )r0   Zcopyin_listÚsetrj   rj   rj   rk   rr   b  s   ÿÿc                   S   s   t dddgdddggƒ ¡ S ©Nr“   r{   rz   r   ©r0   rè   rj   rj   rj   rk   rr   d  rs   c                   S   s&   t ddddgƒ t ddgddggƒ¡S rß  )r0   Úrow_joinrj   rj   rj   rk   rr   f  rs   c                   S   s"   t ddgƒ t ddgddggƒ¡S rß  )r0   Úcol_joinrj   rj   rj   rk   rr   h  rs   c                   S   s"   t dgƒ dt ddgddggƒ¡S rß  )r0   Ú
row_insertrj   rj   rj   rk   rr   i  s   ÿÿc                   S   s"   t dgƒ dt ddgddggƒ¡S rß  )r0   Ú
col_insertrj   rj   rj   rk   rr   k  s   ÿÿc                   S   s   t ddgƒ ¡ S r’   )r0   r”  rj   rj   rj   rk   rr   m  rs   c                   S   s   t dgƒ d¡S r—  )r0   r[  rj   rj   rj   rk   rr   n  rs   c                   S   s   t ddgddggƒ dd¡S ©Nr“   r{   rz   r–   r¤   )r0   Úminorrj   rj   rj   rk   rr   o  rs   c                   S   s   t ddgddggƒ dd¡S r  )r0   Zminor_submatrixrj   rj   rj   rk   rr   p  rs   c                   S   s   t dddgƒ d¡S r×  ©r0   Úcrossrj   rj   rj   rk   rr   q  rs   c                   S   s   t dddgƒ d¡S r×  ©r0   Údotrj   rj   rj   rk   rr   r  rs   c                   S   s   t dddgƒ t ddgƒ¡S r×  r  rj   rj   rj   rk   rr   s  rs   c                   S   s   t ddgƒ g ¡S r’   r  rj   rj   rj   rk   rr   t  rs   c                   S   s   t ddgƒ d¡S )Nr“   r{   rY   r  rj   rj   rj   rk   rr   u  rs   c                   S   s   t ddgƒ dddg¡S r×  r  rj   rj   rj   rk   rr   v  rs   c                   S   s   t dddgƒ ¡ S r×  )r0   r   rj   rj   rj   rk   rr   w  rs   c                   S   s   t ddgddggƒ ¡ S rß  )r0   Ú
normalizedrj   rj   rj   rk   rr   x  rs   c                   S   s   t ddgƒjdd�S )Nr“   r{   znot a methodr  r  rj   rj   rj   rk   rr   y  rs   c                   S   s   t ddgƒ ¡ S r’   ©r0   Z
inverse_GErj   rj   rj   rk   rr   z  rs   c                   S   s   t ddgddggƒ ¡ S r’   r  rj   rj   rj   rk   rr   {  rs   c                   S   s   t ddgƒ ¡ S r’   ©r0   Zinverse_ADJrj   rj   rj   rk   rr   |  rs   c                   S   s   t ddgddggƒ ¡ S r’   r  rj   rj   rj   rk   rr   }  rs   c                   S   s   t ddgƒ ¡ S r’   )r0   Z
inverse_LUrj   rj   rj   rk   rr   ~  rs   c                   S   s   t ddgƒ ¡ S r’   )r0   r  rj   rj   rj   rk   rr     rs   c                   S   s   t ddgƒ ¡ S r’   ©r0   rú   rj   rj   rj   rk   rr   €  rs   c                   S   s   t ddgddggƒjdd�S )Nr“   r{   rz   r–   zNot a real methodr  r  rj   rj   rj   rk   rr   ‚  rs   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 )Nr“   r{   rz   r–   r¤   r—   r¥   r§   r£   r³   rE  r¿   rF  rG  r´   rQ  zNot function©r¾  r  rj   rj   rj   rk   rr   „  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 )Nr“   r{   rz   r–   r¤   r—   r¥   r§   r£   r³   rE  r¿   rF  rG  r´   rQ  Fr  r  rj   rj   rj   rk   rr   ‡  s
   
 
ÿÿc                   S   s*   t tddgddggƒtddgddggƒƒS rß  ©r5   r0   rj   rj   rj   rk   rr   Š  rs   c                   S   s   t tddgddggƒg ƒS rß  r  rj   rj   rj   rk   rr   ‹  rs   c                   S   s   t tdƒd dƒS )Nr]   r{   rY   )r5   r   rj   rj   rj   rk   rr   Œ  rs   c                   S   s   t dƒd S )Nrz   )r¤   r{   râ  rj   rj   rj   rk   rr   �  rs   c                   S   s   t dƒd S )Nrz   )r{   r¤   râ  rj   rj   rj   rk   rr   Ž  rs   rR  c                      s
   ˆ   d¡S )Nzmethod=LU_decomposition())rú   rj   rä   rj   rk   rr   �  rs   r³   r“   r{   rz   r–   r¤   c                      s   ˆ   dˆ¡S )NgÍÌÌÌÌÌ@)r  rj   ©r¬   ÚVrj   rk   rr   “  rs   c                      s   ˆ   dˆ¡S )NgÍÌÌÌÌÌÀ)r  rj   r  rj   rk   rr   •  rs   )rM   rá   r4  r&   rÍ  r(   r0   rj   rj   r  rk   Útest_errorsZ  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   r“   r{   c                 S   s   dS rx   rj   ro   rj   rj   rk   rr   š  rs   ztest_len.<locals>.<lambda>c                 S   s   dS rx   rj   ro   rj   rj   rk   rr   ›  rs   rz   r–   r¤   r—   )r	  r0   r„   rj   rj   rj   rk   Ú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‚d S )Nr“   r–   r{   r³   r¤   rz   )r0   r]   r^   r   r„   rÏ   rj   rj   rk   Útest_integrate¢  s    $FÿFÿr#  c                  C   sX   t ddttƒt ftddfddtd d ffƒ} |  td¡t dtddfdfƒksTt‚d S )	Nr“   r–   r{   r³   r¤   r   )r“   r–   r“   )r³   r¤   r“   )r0   r   r]   r^   r¼  r„   rÏ   rj   rj   rk   Ú
test_limitª  s    0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 )Nr“   r–   r{   r³   r¤   ©r   r   r“   ©r   r   r   r   )r&  ©r“   r   r   r&  Fr1  )
r>   r]   r^   r·   r   r|   r„   r7  r?   rV   )rÐ   ÚA_immrj   rj   rk   Ú	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 )Nr“   r   r{   )r{   r{   r“   r  rz   ©r   r“   r   )r{   r“   r   c                    s&   g | ]‰ ‡‡ fd d„t ttfD ƒ‘qS )c                    s   g | ]}ˆ   |¡  ˆ¡‘qS rj   )r   r}   )Úfxyzrq   rj   rk   r÷   ð  s     z2test_diff_by_matrix.<locals>.<listcomp>.<listcomp>)r]   r^   r_   )r~   ©r+  )rq   rk   r÷   ð  s     z'test_diff_by_matrix.<locals>.<listcomp>)r>   r]   r^   r_   r`   r   rU   r„   r7  rY   r?   rZ   r=   r‚   r   r   r   r   r0   r·   )rÐ   r(  ÚBZdBr  ÚexprÚresrj   r,  rk   Útest_diff_by_matrixÄ  sF    RRTT$ T&8   ý:<>d44>r0  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 )Nr“   r–   r{   r³   r¤   c                      s   ˆ j S rm   )Znonexistantattributerj   rÏ   rj   rk   rr   ý  rs   ztest_getattr.<locals>.<lambda>r   r%  r&  r   )r0   r]   r^   rM   r’  Úgetattrr„   rj   rj   rÏ   rk   Útest_getattrû  s    (r2  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 )	Nrz   r–   r“   r{   r¤   r   )r   rÇ   F)r0   Zis_upper_hessenbergr„   r6  Zis_lower_hessenbergr=   rÏ   rj   rj   rk   Útest_hessenberg  s     

 

r3  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�   ©r0   Úcholeskyrj   rj   rj   rk   rr     rs   ztest_cholesky.<locals>.<lambda>c                   S   s   t dƒ ¡ S ©N©r�   )rz   r–   r5  rj   rj   rj   rk   rr     rs   c                   S   s   t dt dfdfƒ ¡ S ©Nr¤   r   r¨   )r0   r	   r6  rj   rj   rj   rk   rr     rs   c                   S   s   t dƒ ¡ S ©N©)r“   r¤   )r¤   r“   r5  rj   rj   rj   rk   rr     rs   c                   S   s   t dƒjdd�S ©Nr8  F©Ú	hermitianr5  rj   rj   rj   rk   rr     rs   r¤   r   r¨   Fr=  r“   r;  r{   r—   ))é   r´   r   )r´   r±   r   )r   r   rE  rz   rÇ   r–   rÙ   rE  )r{   r   r   c                   S   s   t dƒ ¡ S r4  ©r1   r6  rj   rj   rj   rk   rr   $  rs   c                   S   s   t dƒ ¡ S r7  r@  rj   rj   rj   rk   rr   %  rs   c                   S   s   t dt dfdfƒ ¡ S r9  )r1   r	   r6  rj   rj   rj   rk   rr   &  rs   c                   S   s   t dƒ ¡ S r:  r@  rj   rj   rj   rk   rr   '  rs   c                   S   s   t dƒjdd�S r<  r@  rj   rj   rj   rk   rr   (  rs   )rM   r(   rá   r0   r	   r6  r   r„   r6  r¶  r   r1   )rÐ   r~  rj   rj   rk   Útest_cholesky  sP     ÿ(
*@0 ÿ**@rA  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 )Nr]   Tr]  r{   r“   r³   r¤   rz   r?  r£   r–   rÙ   r   Z	frobeniusÚfroé%   rš   rF  i…  r§   iI3 rÇ   Úalpha)rB  r{   rÙ   g      Y@r—   )r   r0   r   r   r%   Únormr„   r   r   r   rß   r   Úmaxri  r4   r^   r   r   r›   r>  r	   r=   r$   r
   ÚInfinityÚNegativeInfinityÚtrue)r]   r”   rÐ   r-  r�  r‘  r~  rD  ÚorderrÃ  rÄ  Zdifr¬   rY   rZ   r[   r\   Úerj   rj   rk   Útest_matrix_norm8  s„    2"2,ÿ
*ÿÿ
 
ÿ ÿrL  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 )Nr]   Tr]  rz   r³   r¦   r“   ©r{   r{   rÁ   r°   c                 3   s(   | ] }t d ƒ ˆ  ˆ|¡ ¡ ¡V  qdS )ç      ð?N)r   Z
epsilon_eqrÚ   r°  )r~   Úval©ZMcr]   rj   rk   r   ¡  s     z(test_condition_number.<locals>.<genexpr>r¤   r{   r¥   r–   r   )r   r4   r   Zcondition_numberr„   r   r   r   r0   r   r   rƒ   r   rß   r   )rÐ   r¬   rj   rP  rk   Útest_condition_number•  s    .&*ÿrQ  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))r“   r{   rz   )r–   r¤   r—   )r¥   r§   r£   ))r£   r§   r¥   )r—   r¤   r–   )rz   r{   r“   r³   )r'  r*  r%  )r0   r„   r1   )rÐ   r-  r�  r‘  rj   rj   rk   Útest_equality¨  s    rR  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 )Nrz   r¥   r“   r   )r4   r  r0   r„   rj   rj   rj   rk   Útest_col_join¹  s    
ýÿrS  c                  C   s`   t dddggƒ} tddƒD ]@}dddg}| |d¡ ttdƒ || ¡ d¡ ¡ ƒ|kst‚qd S )Nr–   rÿ   r¤   r“   r   rz   )	r0   rª   ÚinsertrI   r4   r  r›  r5  r„   )Zr4rp   rþ  rj   rj   rk   Útest_row_insertÁ  s
    
rU  c                  C   s^   t dddgƒ} tddƒD ]@}dddg}| |d¡ ttdƒ || ¡ d¡ ¡ ƒ|kst‚qd S )Nr–   rÿ   r¤   r   rz   )	r0   rª   rT  rI   r=   r  rš  r5  r„   )Zc4rp   rþ  rj   rj   rk   Útest_col_insertÉ  s
    
rV  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 )	Nrz   r–   r¤   r   g0Žä.ÿ++c                 S   s   | j ddd�jS )Nr³   T)rv   Zchop)r°  Úis_zerorö   rj   rj   rk   rr   Û  rs   z!test_normalized.<locals>.<lambda>r  )r0   r  r   r„   rÊ   rj   rj   rk   Útest_normalizedÑ  s    ÿ$ÿþrX  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 rT  ©r4   Zprint_nonzerorj   rj   rj   rk   rr   à  rs   z$test_print_nonzero.<locals>.<lambda>z[X  ]
[ X ]
[  X]
c                   S   s   t dƒ d¡S )Nrz   Ú.rY  rj   rj   rj   rk   rr   â  rs   z[.  ]
[ . ]
[  .]
)rJ   r„   rj   rj   rj   rk   Ú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 )Nrz   r–   r“   r¿   r   r{   r„  )r0   r4   r„   r=   r7   r�   r|   )rp   r_   rŒ   r�   rj   rj   rk   Ú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   rz   r–   r“   FrY   T)Znonzero)
r0   Zis_zero_matrixr„   r=   r4   r]   r1   r.   r/   r   r±  rj   rj   rk   Ú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 )Nrz   r“   r{   r   )r   r;   r:   r9   r4   r„   r”  r   rX   Zfrom_axis_angleZto_rotation_matrixrB   rC   rD   )
ÚthetaZr3_plusZr3_minusZr2_plusZr2_minusZr1_plusZr1_minusÚq1Úq2Zq3rj   rj   rk   Útest_rotation_matrices	  s2    


ra  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vectorr–   z	vector[4]r\   c                   S   s   t dƒd S )Nr\   rÇ   r)   rj   rj   rj   rk   rr   .	  rs   z%test_DeferredVector.<locals>.<lambda>ÚtestzDeferredVector('test'))Ústrr*   r„   r   rM   r4  Úreprrj   rj   rj   rk   Útest_DeferredVector+	  s
    re  c                   C   s   t tdƒƒrt‚d S )NrÃ  )rK   r*   r„   rj   rj   rj   rk   Ú test_DeferredVector_not_iterable2	  s    rf  c                   C   s   t tdd„ ƒ d S )Nc                   S   s   t tdƒƒS )Nr   )r0   r*   rj   rj   rj   rk   rr   6	  rs   z,test_DeferredVector_Matrix.<locals>.<lambda>)rM   rÍ  rj   rj   rj   rk   Útest_DeferredVector_Matrix5	  s    rg  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 )Nr“   r{   rz   r¤   rÇ   Tr³   )r   r0   r-   r„   r6  r   r"   )râ   rI  rJ  r~  rj   rj   rk   Útest_GramSchmidt8	  s    
.ÿ.ÿ þrh  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 )Nr“   r{   rz   r–   r   F)Úzero)r2   r„   rj   rj   rj   rk   Útest_casoratianI	  s    rj  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   rz   )r   rz   )r0   r=   r‚   r„   rj   rj   rj   rk   Útest_zero_dimension_multiplyN	  s    "rk  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 )	Nr{   r–   r“   rz   rÇ   c                      s   ˆ dd d …f S rZ  rj   rj   rÊ   rj   rk   rr   Z	  rs   z'test_slice_issue_2884.<locals>.<lambda>c                      s   ˆ d S )NrM  rj   rj   rÊ   rj   rk   rr   [	  rs   )r0   rª   r„   r6  rM   r4  rj   rj   rÊ   rk   Útest_slice_issue_2884T	  s    ""$$rl  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   rz   rÇ   r¨   r“   )r=   r‚   r„   r0   rj   rj   rj   rk   Útest_slice_issue_3401^	  s     rm  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 )Nrz   r“   r   r–   r™  r°   r¤   r—   é+   é   r¦   )r=   r0   r„   r1   )ry  rj   rj   rk   Útest_copyinc	  s(    
""$&($$rp  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 )Nr“   r{   r   )r   c                   S   s   t ddgddggƒ ¡ S r’   r  rj   rj   rj   rk   rr   ~	  rs   z'test_invertible_check.<locals>.<lambda>rÇ   rz   rå  c                      s   ˆ j dd�S )Nr!  r  ©rè   rj   rÊ   rj   rk   rr   ‰	  rs   c                      s   ˆ j dd�S )Nr  r  rq  rj   rÊ   rj   rk   rr   Š	  rs   c                      s   ˆ j dd�S )Nr  r  rq  rj   rÊ   rj   rk   rr   ‹	  rs   )
r0   r  r„   rM   rá   r]   r	  r…   r4   r#   rj   rj   rÊ   rk   Útest_invertible_checkz	  s    4ýrr  c                  C   sD   t dƒ\} }| | }| | tdddgƒ¡tdddgƒ| ks@t‚d S )Nzx, yrz   r¤   )r   rÚ   r0   r„   )r]   r^   rK  rj   rj   rk   Útest_issue_3959Ž	  s    rs  c                   C   s$   t tddgddggƒƒdks t‚d S )Nr“   r{   rz   r–   zMatrix([[1, 2], [3, 4]]))rc  r0   r„   rj   rj   rj   rk   Útest_issue_5964”	  s    rt  c                  C   s<   t dƒ\} }tt| d| g|d | d ggƒƒdks8t‚d S )Núx yr{   rz   z'Matrix([
[   x,   2*y],
[y**2, x + 3]]))r   r!   r0   r„   )r]   r^   rj   rj   rk   Útest_issue_7604˜	  s    "ÿrv  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 )	Nrz   r“   r   )r¦   r°   rM  r{   r—   )r¦   r°   )r¦   r°   rM  r¨   r   )	r4   Zis_Identityr„   r7  r=   r7   r0   r1   rª   rj   rj   rj   rk   Útest_is_Identityž	  s    rw  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 )Nr“   rz   r{   rG  r   Fr=  TrF  Zphysics©r>  Úconjugate_conventionr–   r¤   r—   Úrightr§   Úleft)ry  c                   S   s    t ddgƒjt ddgƒddd�S )Nr“   r{   rz   r–   Trb  rx  r  rj   rj   rj   rk   rr   ¸	  rs   ztest_dot.<locals>.<lambda>)r7   r  r„   r0   r	   rM   rá   rj   rj   rj   rk   Ú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   rz   )r   r0   ZdualÚequalsr„   r4   r=   )ZB_xZB_yZB_zZE_xZE_yZE_zÚFZFdrj   rj   rk   Ú	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 )Nr“   r{   Frz   r   Trå  c                 S   s   | S rm   rj   rö   rj   rj   rk   rr   Ô	  rs   z%test_anti_symmetric.<locals>.<lambda>r²   r¦   )r0   Úis_anti_symmetricr„   r]   r^   r   rÊ   rj   rj   rk   Ú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²   T)Ú	normalize)r‚  Úsort)r0   r  r6  r4   r†   r„   rè   )rÐ   rê   rT   rj   rj   rk   Ú#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¼   rj   rj   rj   rk   rr   ì	  rs   z!test_issue_5321.<locals>.<lambda>)rM   rá   rj   rj   rj   rk   Ú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 )Nr{   r“   r   )r0   Úhstackr4   r„   Úvstackr1   r„  rj   rj   rk   Ú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 r—  )r0   r   r†  r„   r‡  )rÐ   ZAImrj   rj   rk   Ú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 )Nr“   r{   rz   r–   r¤   rÙ   c                    s    || kst ‚t| ƒˆ kst ‚d S rm   )r„   r|   )r¬   r�  r„  rj   rk   rb  
  s    ztest_cross.<locals>.testc                   S   s"   t ddddgƒ t ddddgƒ¡S r’   r  rj   rj   rj   rk   rr   
  s    ztest_cross.<locals>.<lambda>)r0   r6  r�   r  rM   r&   )rY   rZ   r›  rš  rb  rÐ   r-  rj   r„  rk   Ú
test_cross
  s    

rŠ  c                  C   s^   t tttgƒ} t tttgƒ}|  ¡ | |  |¡ks6t	‚|  ¡  
¡ sFt	‚|  ¡  ¡ | ksZt	‚d S rm   )r0   r]   r^   r_   rY   rZ   r[   Zhatr  r„   r€  Zvee)Zv1Zv2rj   rj   rk   Útest_hat_vee
  s
    r‹  c                  C   sr   t dd … D ]:} |  d¡|  d¡h}t|ƒdkrB| ¡ |  d¡kst‚qt d d… D ]} t|  d¡tƒrTt‚qTd S )NrÙ   r“   r{   )r�   r4   r	  Úpopr„   r·   r   )rŒ   ry  rj   rj   rk   Ú	test_hash 
  s
    $r�  c                      s   t d ‰ tt‡ fdd„ƒ d S )Nr   c                      s   t ˆ  d¡ƒS r—  )Úhashr4   rj   r„  rj   rk   rr   .
  rs   z!test_issue_3979.<locals>.<lambda>)r�   rM   r’  rj   rj   r„  rk   Útest_issue_3979)
  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   r“   )r	   r0   r�   Zadjointr„   )r9  r�  rŒ   rj   rj   rk   Útest_adjoint1
  s    r‘  c                   C   s8   t tttƒd ttƒd  ggƒƒtdggƒks4t‚d S )Nr{   r“   )r$   r.   r   r]   r   r„   rj   rj   rj   rk   Útest_simplify_immutable7
  s    "
ÿr’  c                     sT   t dtd�\‰ ‰tdd‡fdd„ƒ} tdd‡ fdd„ƒ}| ˆ ˆ¡}|| ksPt‚d S )NzF, Gr„  r{   c                    s   ˆ | | ƒS rm   rj   ro   )ÚGrj   rk   rr   =
  rs   ztest_replace.<locals>.<lambda>c                    s   ˆ | | ƒS rm   rj   ro   )r~  rj   rk   rr   >
  rs   )r   r   r0   Úreplacer„   )ÚKr¬   ÚNrj   )r~  r“  rk   Útest_replace;
  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’   )r0   r]   Úatomsr   r=  ZNegativeOner„   r   rÊ   rj   rj   rk   Ú
test_atomsC
  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  rF  éh   i¤  rz   rš   r¤   r“   r¥   r£   rE  ro  é   ÚEDr   ©Úcompi_àþÿib,  i¾Ø  ijô  c                 3   s$   | ]\}}ˆ |  ¡ |  ¡ ƒV  qd S rm   ru   )r~   rp   rq   r�  rj   rk   r   p
  s   ÿztest_pinv.<locals>.<genexpr>)r0   rY   rZ   r[   r\   r$   Úpinvrè   r„   r�  Úsympy.core.numbersrž  rƒ   ÚziprÚ   )	ÚA1ÚAsrÐ   ÚA_pinvÚAApÚApArö  ÚwZrepsrj   r�  rk   Ú	test_pinvI
  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   r0  rr  r   é>   é`   éU   rQ  éE   é8   ro  r–   é6   r³   é[   é)   r¥   rg  rÅ   éZ   rœ  r  c                 S   s<   |   t¡}dd„ |D ƒ}| |  |¡ ¡ }tdd„ |D ƒƒS )Nc                 S   s   i | ]}||  ¡ “qS rj   r¯  )r~   r˜  rj   rj   rk   Ú
<dictcomp>•
  s      zYtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<dictcomp>c                 s   s   | ]}t |ƒd k V  qdS )g»½×Ùß|Û=N©r›   ©r~   rK  rj   rj   rk   r   —
  s     zXtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose.<locals>.<genexpr>)r˜  r    r†  r°  rƒ   )ÚM1r:  ZrootofsZrootofs_approxZdiff_approxrj   rj   rk   Úallclose“
  s    
zEtest_pinv_rank_deficient_when_diagonalization_fails.<locals>.allclose)r0   rŸ  r�  r„   )r£  rÐ   r¤  r¥  r¦  r¸  rj   rj   rk   Ú3test_pinv_rank_deficient_when_diagonalization_failsv
  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�  )r7   r0   r„   rj   rj   rj   rk   Útest_issue_7201œ
  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 rx   )r.   r/   r0   r1   r]   Zfree_symbolsr„   rä   rj   rj   rk   Útest_free_symbols 
  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ddg ƒk�sŽn t‚dS )zSee issue 7465.r   ©Úarrayú?NumPy must be available to test creating matrices from ndarraysr“   r{   rz   r–   r¤   r—   c                      s(   t ˆ ddgddggddgddgggƒƒS )	Nr“   r{   rz   r–   r¤   r—   r¥   r§   r¼   rj   r¼  rj   rk   rr   ±
  rs   z#test_from_ndarray.<locals>.<lambda>N)Únumpyr½  ÚImportErrorrP   r0   r„   r]   r^   r_   rM   ÚNotImplementedErrorrj   rj   r¼  rk   Útest_from_ndarray¤
  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 matricesr“   r{   rz   r–   )Úsympy.matrices.commonrÄ  r¿  r½  rÅ  rÀ  rP   r„   rˆ   rL   ÚPendingDeprecationWarning)rÄ  r½  rÅ  r�   rj   rj   rk   Ú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 matricesr“   r{   rz   r–   ç      @rN  g       @rá  )rÆ  rÄ  ZmpmathrÅ  rÀ  rP   r„   rˆ   )rÄ  rÅ  r�   rj   rj   rk   Útest_17522_mpmathÆ
  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Ã  )Ú
csr_matrixzJSciPy must be available to test indexing matrixified SciPy sparse matricesr“   r{   rz   r–   )rÆ  rÄ  Zscipy.sparserË  rÀ  rP   r„   rˆ   )rÄ  rË  r�   rj   rj   rk   Útest_17522_scipyÑ
  s    rÌ  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 )Nr“   r{   r¦   Fr¯   r¨   )r0   r	   Zis_hermitianr„   r]   r±  rj   rj   rk   Útest_hermitianÜ
  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 )NFr1  r   r{   )r0   r   r]   r„   rÛ   r±  rj   rj   rk   Ú	test_doitæ
  s    rÎ  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 )Nr“   r{   rz   r–   r¤   rÙ   r—   r¥   r£   r³   rE  rÇ   c                      s
   ˆ   d¡S rÈ   ©Úrow_delrj   ©rê   rj   rk   rr   ÷
  rs   z+test_issue_9457_9467_9876.<locals>.<lambda>c                      s
   ˆ   d¡S ©NrË   rÏ  rj   rS   rj   rk   rr   ù
  rs   c                      s
   ˆ   d¡S rÈ   ©Úcol_delrj   rÑ  rj   rk   rr     rs   c                      s
   ˆ   d¡S rÒ  rÓ  rj   rS   rj   rk   rr     rs   )r0   rÐ  r„   rM   r4  rÔ  )r¬   r–  ÚOrj   )rê   rT   rk   Útest_issue_9457_9467_9876ë
  s.     
  
  
    
$ 
$  rÖ  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 )Nru  F)Zcommutativeza br{   r   )r   r4   r0   r_   r„   )r]   r^   rY   rZ   r¬   r·  rj   rj   rk   Útest_issue_9422  s    r×  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£   r—   rz   r  r  r“   r{   r–   Újoinr™  )r0   r6  r1  Úidr„   )	r¬   rY   rZ   r[   Zopsr�   Úopr  Únewrj   rj   rk   Ú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 )Nr“   r{   rz   r–   r¤   r—   r¥   r§   r£   r   TF)r0   r«   r„   rÏ   rj   rj   rk   Ú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   r¤   r{   r“   rz   rî  r–   rš   r   ú/a_x a_y b_x b_y c_x c_y d_x d_y e_x e_y t_0 t_1)	r0   r   r)  r„   r	   r$   r  r=   r   )r�   ÚaxÚayÚbxÚbyÚcxÚcyÚdxÚdyÚexÚeyÚt0Út1rj   rj   rk   Ú!test_opportunistic_simplification,  s    <4F „rë  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   rN  rÌ   çVçž¯Ò<gqµô7K‘<r–   g      ð¿r§   r“   rÉ  g        g       @g      À)r0   r  rE  r„   rè   )ÚmmZm_mixedZm_floatZm_invrj   rj   rk   Útest_partial_pivoting<  s(    ÿ
ÿ
þ
þ
þrî  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µ  rö   rj   rj   rk   rr   [  rs   z*test_iszero_substitution.<locals>.<lambda>r  rN  g¡4iÒ¤IÓ¿g¹lÙ²eËæ¿rì  rM  N)r0   r  rE  r„   )r�   Zm_rrefZ	m_correctZm_diffrj   rj   rk   Útest_iszero_substitutionT  s    &&rï  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§   rF  é-   rz   rï  r{   rÄ   rš   r“   c                 S   s   t |  ¡ ƒdk S )Ng#B’¡œÇ;)r›   rv   rö   rj   rj   rk   rr   p  rs   z"test_issue_11238.<locals>.<lambda>T)r$   r¾  )
Zsympy.geometry.pointrð  r   r   r   r   r0   r$   r)  r„   )
rð  ZxxÚyyÚp1Zp2Úp0rI  rJ  Úm3ÚZrj   rj   rk   Útest_issue_11238b  s    0R

r÷  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 )Nr{   r“   rz   r–   )r0   r   ZImaginaryUnitr�   Zas_real_imagrˆ   r„   )rI  rJ  rõ  ZklsrY   rZ   rj   rj   rk   Útest_as_real_imagu  s    
rø  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 )Nrz   r   r“   rÿ   r–   rÙ   r{   )r0   Zjordan_cellsr„   )r�   rê   ZJcellsrj   rj   rk   Útest_deprecated  s    rù  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Ç   r“   r{   r³   r0  rí  rz   r–   )Zsympy.core.modrú  r0   r„   )rú  rÐ   r-  rj   rj   rk   Útest_issue_14489Š  s
    rû  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¾  r“   r{   rz   r–   )ÚdtypeZfloat64)	r¿  r½  rÀ  rP   r0   Úfloatrü  Únamer„   )r½  r¬   rj   rj   rk   Útest_issue_14943’  s    rÿ  c                  C   s4   t dddƒ} tdƒ}| d dk}t|ƒdks0t‚d S )Nr�   r“   rY   r¦   r   zm[0, 0] > 0)r@   r   rc  r„   )r�   rY   rj   rj   rk   Útest_case_6913œ  s    r   c                  C   s.   t dddƒ} tdƒ}|  |¡|| iks*t‚d S )NrÐ   rz   rY   )r@   rG   Úmatchr„   )rÐ   rY   rj   rj   rk   Útest_issue_11948¢  s    r  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 )Nr“   r   r{   )r0   r	   Zorthogonalizer„   r   ZQRdecompositionr�  r4   )Zvecsr�   rT   râ   rj   rj   rk   Ú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 )NrY   rz   r“   rZ   r¦   r   )r0   r@   r  r   r„   )rY   rZ   r[   r\   rK  rj   rj   rk   Ú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   ©Únthrootr“   r{   rz   r—   r–   c                   S   s   t dƒ ttƒt¡S rã  )r=   Úanalytic_funcr   r]   rj   rj   rj   rk   rr   Ç  rs   ztest_func.<locals>.<lambda>c                      s   ˆ t   tt ƒt ¡S rm   )r]   r  r   rj   rÏ   rj   rk   rr   È  rs   rÇ   rÙ   c                      s   ˆ   ttƒt¡S rm   )r  r   r]   rj   rÏ   rj   rk   rr   Ì  rs   r²  r¿   é"   r.  r¤   )Úsympy.simplify.simplifyr  r0   r  r   r]   r`   r„   r   r   r   rM   rá   r   r$   r   r  rj   rÏ   rk   Ú	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æ   )rE   Ústater„   r0   rÊ   rj   rj   rk   r  Þ  s    ztest_issue_19809.<locals>.fT)rA   Ú
concurrentZfuturesZThreadPoolExecutorZsubmitÚresultr„   )r  ÚexecutorÚfuturerj   rj   rk   Útest_issue_19809Û  s
    

r  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�  )r0   r]   r^   r   r   rß   r„   rä   rj   rj   rk   Útest_issue_23276ê  s
    þr  c               	   C   sÄ   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gƒ} |  ¡ }|d tdddd
gƒks\t‚|d tddd	dgƒksxt‚|d tddddgƒks”t‚t|ƒd
ks¤t‚tj| f|žŽ  ¡ |ksÀt‚d S ©Nr“   r{   r   r¤   rÙ   r   rÇ   rï  rš   rz   r–   r—   r  )re   r  r0   r„   r	  r†  ©r�   Zbasisrj   rj   rk   Útest_columnspace_oneò  s    ýr  c               	   C   s´   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gƒ} |  ¡ }|d tdddddggƒks`t‚|d tdddd
dggƒks€t‚|d tdddddggƒks t‚t|ƒd
ks°t‚d S r  )re   r  r0   r„   r	  r  rj   rj   rk   Útest_rowspace  s    ý   r  c               	   C   s¼   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gƒ} |  ¡ }|d tdddddgƒks^t‚|d tdddddgƒks|t‚tdd„ | |d  D ƒƒsšt‚tdd„ | |d  D ƒƒs¸t‚d S )Nr“   r{   r   r¤   rÙ   r   rÇ   rï  rš   rz   r–   r—   r  c                 s   s   | ]}|j V  qd S rm   ©rW  r¶  rj   rj   rk   r     s     z%test_nullspace_one.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S rm   r  r¶  rj   rj   rk   r     s     )re   r  r0   r„   rƒ   r  rj   rj   rk   Útest_nullspace_one  s    ýr  c                     s–  t dƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ  ddd¡tdddgdddgdddggƒk�s&t‚ˆ  ddd¡tdddgdddgdddggƒk�sZt‚ˆ jdddd�tdddgdddgdddggƒk�s�t‚ˆ jdddd�tdddgdddgdddggƒk�sÆt‚ˆ  ddd¡tdddgdddgdddggƒk�sút‚ˆ jdddd�tdddgdddgdddggƒk�s0t‚ˆ jdddd�tdddgdddgdddggƒk�sft‚ˆ  dddd¡tdddgdddgdddggƒk�sœt‚ˆ jddddd�tdddgdddgdddggƒk�sÔt‚ˆ jdddd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d¡tdddgd ƒk�sDt‚|  ddd¡tdddgd ƒk�sjt‚|  dddd¡tdddgd ƒk�s’t‚d S )Nrz   c                      s
   ˆ   d¡S ©NÚabc©Úelementary_row_oprj   ©rK  rj   rk   rr   !  rs   ztest_row_op.<locals>.<lambda>c                      s   ˆ   ¡ S rm   r  rj   r  rj   rk   rr   "  rs   c                      s   ˆ j dddd�S )Nún->knr¤   ©rš  rÈ  r  rj   r  rj   rk   rr   #  rs   c                      s   ˆ j dddd�S )Nr  r   r¤   r  r  rj   r  rj   rk   rr   $  rs   c                      s   ˆ j dddd�S )Nún<->mr“   r¤   ©Úrow1Úrow2r  rj   r  rj   rk   rr   %  rs   c                      s   ˆ j dddd�S )Nr  r¤   r“   r   r  rj   r  rj   rk   rr   &  rs   c                      s   ˆ j dddd�S )Nr  r   r“   r   r  rj   r  rj   rk   rr   '  rs   c                      s   ˆ j dddd�S )Nr  r“   r   r   r  rj   r  rj   rk   rr   (  rs   c                      s   ˆ j ddddd�S ©Nún->n+kmr“   r¤   ©r!  r"  rÈ  r  rj   r  rj   rk   rr   )  rs   c                      s   ˆ j ddddd�S )Nr$  r¤   r“   r%  r  rj   r  rj   rk   rr   *  rs   c                      s   ˆ j ddddd�S )Nr$  r   r“   r¤   r%  r  rj   r  rj   rk   rr   +  rs   c                      s   ˆ j ddddd�S )Nr$  r“   r   r¤   r%  r  rj   r  rj   rk   rr   ,  rs   c                      s   ˆ j ddddd�S r#  r  rj   r  rj   rk   rr   -  rs   r  r   r¤   r“   r  )r!  rÈ  r  r   )rš  r"  r$  )rš  rÈ  r"  )r!  rÈ  r"  r{   r—   )rw   rM   rá   r  r0   r„   rl   r±  rj   r  rk   Útest_row_op  s8    4466466688&&r&  c                     s–  t dƒ‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ  ddd¡tdddgdddgdddggƒk�s&t‚ˆ  ddd¡tdddgdddgdddggƒk�sZt‚ˆ jdddd�tdddgdddgdddggƒk�s�t‚ˆ jdddd�tdddgdddgdddggƒk�sÆt‚ˆ  ddd¡tdddgdddgdddggƒk�sút‚ˆ jdddd�tdddgdddgdddggƒk�s0t‚ˆ jdddd�tdddgdddgdddggƒk�sft‚ˆ  dddd¡tdddgdddgdddggƒk�sœt‚ˆ jddddd�tdddgdddgdddggƒk�sÔt‚ˆ jdddd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d¡tdddgd ƒk�sDt‚|  ddd¡tdddgd ƒk�sjt‚|  dddd¡tdddgd ƒk�s’t‚d S )Nrz   c                      s
   ˆ   d¡S r  ©Úelementary_col_oprj   r  rj   rk   rr   E  rs   ztest_col_op.<locals>.<lambda>c                      s   ˆ   ¡ S rm   r'  rj   r  rj   rk   rr   F  rs   c                      s   ˆ j dddd�S )Nr  r¤   ©r›  rÈ  r'  rj   r  rj   rk   rr   G  rs   c                      s   ˆ j dddd�S )Nr  r   r¤   r)  r'  rj   r  rj   rk   rr   H  rs   c                      s   ˆ j dddd�S )Nr  r“   r¤   ©Úcol1Úcol2r'  rj   r  rj   rk   rr   I  rs   c                      s   ˆ j dddd�S )Nr  r¤   r“   r*  r'  rj   r  rj   rk   rr   J  rs   c                      s   ˆ j dddd�S )Nr  r   r“   r*  r'  rj   r  rj   rk   rr   K  rs   c                      s   ˆ j dddd�S )Nr  r“   r   r*  r'  rj   r  rj   rk   rr   L  rs   c                      s   ˆ j ddddd�S ©Nr$  r“   r¤   ©r+  r,  rÈ  r'  rj   r  rj   rk   rr   M  rs   c                      s   ˆ j ddddd�S )Nr$  r¤   r“   r.  r'  rj   r  rj   rk   rr   N  rs   c                      s   ˆ j ddddd�S )Nr$  r   r“   r¤   r.  r'  rj   r  rj   rk   rr   O  rs   c                      s   ˆ j ddddd�S )Nr$  r“   r   r¤   r.  r'  rj   r  rj   rk   rr   P  rs   c                      s   ˆ j ddddd�S r-  r'  rj   r  rj   rk   rr   Q  rs   r  r   r¤   r“   r)  )r+  rÈ  r  r*  )r›  r,  r$  )r›  rÈ  r,  )r+  rÈ  r,  r{   r—   )rw   rM   rá   r(  r0   r„   rl   r±  rj   r  rk   Útest_col_opB  s8    4466466688&&r/  c                  C   sê   t dƒ} tdƒ}| jst‚|js$t‚tddg ƒ}|js:t‚tddddddddgƒ}|js\t‚tddddddddgƒ}|jr~t‚tdƒ}tdd|ddgƒ}|js¢t‚tdd||dgƒ}|jr¾t‚tdddddddddddg	ƒ}|jræt‚d S )Nrz   r   r{   r“   r—   r]   )ry   rw   Ú
is_echelonr„   rl   r   )ZzroÚidentrY   r]   rj   rj   rk   Útest_is_echelonf  s"    






r2  c                     s  t dƒ‰ tdƒ} ˆ  ¡ ˆ ks t‚|  ¡ | ks0t‚tddg ƒ‰ ˆ  ¡ ˆ ksLt‚tdddgƒ‰ ˆ  ¡ ˆ ksjt‚‡fdd„}tdddddddd	d
ddg	ƒ‰ tdgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆjsÔt‚|ˆ ||ƒ tdddddddd	d
ddg	ƒ‰ g }‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆj�s.t‚|ˆ ||ƒ tdddddddddddg	ƒ‰ tt	ddƒgdgdggƒtt	ddƒgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆj�s¸t‚|ˆ ||ƒ tdddddddddddg	ƒ‰ tdgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆj�s$t‚|ˆ ||ƒ tdddddddddddg	ƒ‰ tdgdgdggƒtdgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆj�s¢t‚|ˆ ||ƒ tddddddddgƒ‰ tdgdgdggƒg}‡ fdd„tˆ jƒD ƒ}ˆ  ¡ ‰ˆj�st‚|ˆ ||ƒ d S )Nrz   r   r“   r¤   c                    sb   |D ]}t dd„ ˆ | D ƒƒst‚q|D ]4}t dd„ |D ƒƒs(t dd„ ˆ | ¡  D ƒƒr(t‚q(d S )Nc                 s   s   | ]}|j V  qd S rm   r  ©r~   r`   rj   rj   rk   r   —  s     zCtest_echelon_form.<locals>.verify_row_null_space.<locals>.<genexpr>c                 s   s   | ]}|j V  qd S rm   r  r3  rj   rj   rk   r   ™  s     c                 s   s   | ]}|j V  qd S rm   r  r3  rj   rj   rk   r   š  s     )rƒ   r„   r‹  )r�   r…   Únullsr”   )Ú	a_echelonrj   rk   Úverify_row_null_space•  s
    z0test_echelon_form.<locals>.verify_row_null_spacer{   r–   r—   r¥   r§   r£   rÙ   c                    s   g | ]}ˆ |d d …f ‘qS rm   rj   r}   r±  rj   rk   r÷   ¡  s     z%test_echelon_form.<locals>.<listcomp>c                    s   g | ]}ˆ |d d …f ‘qS rm   rj   r}   r±  rj   rk   r÷   ©  s     rÇ   rš   c                    s   g | ]}ˆ |d d …f ‘qS rm   rj   r}   r±  rj   rk   r÷   ·  s     c                    s   g | ]}ˆ |d d …f ‘qS rm   rj   r}   r±  rj   rk   r÷   Â  s     c                    s   g | ]}ˆ |d d …f ‘qS rm   rj   r}   r±  rj   rk   r÷   Ð  s     c                    s   g | ]}ˆ |d d …f ‘qS rm   rj   r}   r±  rj   rk   r÷   Ú  s     )
ry   rw   r	  r„   rl   r0   rª   r…   r0  r   )rK  r6  r4  r…   rj   )rY   r5  rk   Útest_echelon_form�  sš    ý

ý
ýüýýýüýr7  c                  C   s  t ddg ƒ} | jdd�| ks t‚t dddgƒ} t dddgƒ}| jdd�|jdd�  kr`| ksfn t‚t dddddgƒ}|jdd�tdgdgdggƒksœt‚t dddddgƒ}|jdd�tdddggƒksÎt‚t dddddddd	d
ddg	ƒ}|jdd�tdddgdddgdddg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	ƒ}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	ƒ}|jdd�|jdd�  k�ræ|jdd�  k�ræ|jdd�  k�ræ|k�sìn t‚tdƒ} tdƒ}| jdd�| k�st‚|jdd�|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gƒ}| ¡ \}}|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gƒk�sÎt‚|dk�sÜt‚t tddƒ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�tdddtddƒgdddtddƒgdddtddƒgddddggƒk�slt‚tdƒ}t dd|ddt|ƒ|dgƒ}t	|jdd�ddt|ƒ| d  |tddƒ  |  dddt|ƒ| d  gƒD ]\}	}
t
|	|
 ƒj�sàt‚�qàd S )Nr   F)Úpivotsr“   r¤   rz   r{   r–   r—   r¥   r§   r£   rÇ   r   r  rÙ   rš   )r   r{   rz   r›  r³   rE  r¿   rF  rG  r´   i´ÿÿÿé�   éî   r]   )rl   r  r„   r0   rw   ry   r   r   r   r¡  r$   rW  )rK  rY   rZ   r[   r\   r_   r�   Zpivot_offsetsr]   rp   rq   rj   rj   rk   Ú	test_rrefà  s†    *$ ý

ÿ

þ

ý
ýüü


ý
ü(  ÿÿr;  c                  C   s¢   t dƒ\} }}}tddgddgddgddggƒ}t| |||gƒ}| |¡tddgddgddgddggƒtd| | gd| d |d  g| g|ggƒfksžt‚d S )Nrê  r   r“   r{   rz   r–   rÙ   )r   r0   Zrref_rhsr„   )rY   rZ   r[   r\   rÐ   r-  rj   rj   rk   Útest_rref_rhs!  s      
üüür<  c               
      s"  t ddddgddddgdd	ddgd	ddd
gddddgddddggƒ‰ ˆ jdd	dd�} ˆ jddddd�}ˆ jddd	d�}| dd d …f t dd	ddggƒksœt‚|dd d …f t ddddggƒksÂt‚|dd d …f t ddddggƒksèt‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )Nrz   r–   rÇ   r“   r£   r¿   rš   r   r{   rÙ   r   r§   r´   r—   r  r¤   r   r$  rÿ   r%  r  r  rG  rQ  rg  c                      s   ˆ j dddd�S )Nr  r{   r—   r   r  rj   ©r�  rj   rk   rr   A  rs   z"test_issue_17827.<locals>.<lambda>c                      s   ˆ j dddd�S )Nr  r¥   r{   r  r  rj   r=  rj   rk   rr   B  rs   c                      s   ˆ j ddddd�S )Nr$  rÇ   r¤   r{   r%  r  rj   r=  rj   rk   rr   C  rs   )r0   r  r„   rM   rá   )r‘  r   r~  rj   r=  rk   Útest_issue_178270  s"    





ú	&&&r>  c                  C   sj   t ddgtddt  ggƒ} |  ¡ dks,t‚t ddtddƒƒ}| ¡ dksNt‚tdƒ}| ¡ dksft‚d S )Nr“   r{   rz   r³   r   )r0   r]   r)  r„   rª   r=   )r�   rv   rõ  rj   rj   rk   Ú	test_rankE  s    r?  c                  C   s¸   t dƒ\} }}}}}}}}}	}
}t| || |
 ||
 dg||||
 ||
 dg||||
 ||
 dg||||
 ||
 dg||	d| | ||
  d|	 | |	|
  dggƒ}| ¡ dks´t‚d S )NrÞ  r   r“   r{   r–   )r   r0   r)  r„   )rß  rà  rá  râ  rã  rä  rå  ræ  rç  rè  ré  rê  r¬   rj   rj   rk   Útest_issue_11434M  s    ÿ,ür@  c               	   C   sô   t dƒ\} }td|  dddgd|  d|  d ddgdd|  d|  | d dgdd| | dggƒ}tdddd| d | |    gdddd| | |    gdddd| |   gddddggƒ}d	}| ¡ \}}t|| ƒt|jŽ ksät‚||ksðt‚d S )
Nz
nu, lambdarš   r“   r   rz   rÙ   r{   rÇ   rC  )r   r0   r  r$   r=   r‚   r„   )ÚnuZlambrÐ   Zexpected_reducedZexpected_pivotsZreducedr8  rj   rj   rk   Útest_rank_regression_from_soW  s    ý
ýrB  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¡t  }| ¡ dksRt‚|d  ¡ dksft‚|d  ¡ dkszt‚d S )Nr“   r   rÙ   rÇ   r{   r–   rz   )r0   r4   r	   r)  r„   )rÐ   r-  rj   rj   rk   Útest_issue_15872k  s
    0rC  (Q  rk  Úconcurrent.futuresr  Úcollections.abcr   Zsympy.core.addr   Zsympy.core.functionr   r   r   r   r   r   r	   r
   r   r   r   r   Zsympy.core.powerr   Zsympy.core.singletonr   Zsympy.core.symbolr   r   Zsympy.core.sympifyr   Z$sympy.functions.elementary.complexesr   Z&sympy.functions.elementary.exponentialr   r   Z(sympy.functions.elementary.miscellaneousr   r   r   Z(sympy.functions.elementary.trigonometricr   r   r   Zsympy.integrals.integralsr   Zsympy.polys.polytoolsr   r   Zsympy.polys.rootoftoolsr    Zsympy.printing.strr!   Zsympy.sets.setsr"   r	  r#   r$   Zsympy.simplify.trigsimpr%   Zsympy.matrices.exceptionsr&   r'   r(   Zsympy.matrices.matrixbaser*   Zsympy.matrices.determinantr+   Zsympy.matrices.utilitiesr,   Zsympy.matricesr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   Z
sympy.corerF   rG   Z(sympy.functions.special.tensor_functionsrH   Zsympy.utilities.iterablesrI   rJ   rK   Zsympy.utilities.exceptionsrL   Zsympy.testing.pytestrM   rN   rO   rP   rQ   rR   Zsympy.assumptionsrT   Zsympy.tensor.arrayrU   Z$sympy.tensor.array.array_derivativesrV   Zsympy.matrices.expressionsrW   Zsympy.algebrasrX   rà   rY   rZ   r[   r\   r]   r^   r_   r`   r�   rÆ  ra   rb   Zsympy.matrices.matricesrc   rd   re   rl   rw   ry   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@  rB  rK  rS  rV  rY  r\  r`  ra  ro  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  rA  rL  rQ  rR  rS  rU  rV  rX  r[  r\  r]  ra  re  rf  rg  rh  rj  rk  rl  rm  rp  rr  rs  rt  rv  rw  r|  r  r�  r„  r…  rˆ  r‰  rŠ  r‹  r�  r�  r‘  r’  r—  r™  r¨  r¹  rº  r»  rÂ  rÈ  rÊ  rÌ  rÍ  rÎ  rÖ  r×  rÜ  rÝ  rë  rî  rï  r÷  rø  rù  rû  rÿ  r   r  r  r  r
  r  r  r  r  r  r&  r/  r2  r7  r;  r<  r>  r?  r@  rB  rC  rj   rj   rj   rk   Ú<module>   sè  (h (,Ma,	R			:	
		
	
 HK
=7(]%
		-%


	$$_A
