U
    ZÊ¹j¹  ã                   @   sÀ   d dl mZ d dlmZ d dlmZ d dlmZ d dlm	Z	 d dl
mZ d dlmZ d dlmZmZ d	d
„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ Zdd„ ZdS ) é    )Úraises©Ú
PolyMatrix)ÚPoly)ÚS)ÚMatrix)ÚZZ)ÚQQ©ÚxÚyc                  C   s^  t ttd tƒtt tƒgttd tƒtdt tƒggƒ} t ddgddggdd�}t ddgddggdd�}t ttd t tƒtdtƒgttd t d tƒtdtƒggƒ}t ttd tƒtt tƒgttd  tƒtttƒggƒ}|jtt ksôt‚t| | t ƒ�st‚| | |k�st‚| | |k�s,t‚||  |k�s>t‚t ttd tdd	�tdtdd	�ttd  tdd	�ttd tdd	�tdtdd	�ttd  tdd	�ggƒ}|jtt k�s¸t‚t ddddddgdd�}t ddddddgdd�}t ttd tdd	�ggƒ}|| |k�st‚|| |k�s&t‚t ttd tƒtj	ggdd�}	tj
|	 }
|
t ttj
td  tdd	�tj
ggd
d�k�s€t‚|	tj
 |
k�s”t‚|
jtt k�s¨t‚t ttd tdd	�ttd  tdd	�ggƒ}t ddgdd�}|| t tdtd  tdd	�ggƒk�st‚tt tt d�ƒdk�s,t‚t ddddgtƒd t ddddgtƒk�sZt‚d S )Né   é   éÿÿÿÿé   r   zZZ[x]©Úringr	   ©ÚdomainzQQ[x]r   )r   r   r   r   r   ÚAssertionErrorÚ
isinstancer	   r   ZOneÚHalfÚlen)Zpm1Zv1Úm1ÚAÚBZpm2Zv2Úm2ÚCZpm3Zv3Zpm4Zv4© r   ú`/var/www/html/bwave/python/venv/lib/python3.8/site-packages/sympy/polys/tests/test_polymatrix.pyÚ_test_polymatrix   sB    :ÿ80  ÿ
2,,r    c                  C   s  t ttggtttf d�} | jtttf ks0t‚| jtks>t‚| jttfksPt‚| jdks^t‚| j	dkslt‚| j
dkszt‚t| ƒdksŠt‚t| ƒttttftd�ttttftd�gksºt‚t ttggtt t d�}|jtt t ksêt‚|jtt ksüt‚|jtfk�st‚|jdk�st‚|j	dk�s.t‚|j
dk�s>t‚t|ƒdk�sPt‚t|ƒtttftt d�tttftt d�gk�s†t‚t ttggtƒt ttggt t¡t d�k�s¸t‚t ttggdd�t ttggtttf d�k�sêt‚t ttggttfƒt ttggtttf d�k�st‚t ttggttƒt ttggtttf d�k�sPt‚t ttgƒt tgtggtttf d�k�s~t‚t ddttgƒt ttggtttf d�k�s®t‚t dddd„ ƒt ttggtttf d�k�sÞt‚t d	dg ttƒjd
k�sút‚t dd	g ttƒjdk�st‚t g g gttƒjdk�s2t‚t tttf d�t d	d	g tttf d�  k�r|t g tttf d�k�s‚n t‚ttdd„ ƒ ttdd„ ƒ t ttƒttƒgƒt tgtggtttf d�k�sÔt‚t tttƒdgƒt tgdggtt d�k�st‚d S )Nr   )r   r   r   r   r   zZZ[x,y]c                 S   s   t tg| S ©Nr
   )ÚiÚjr   r   r   Ú<lambda>N   ó    z-test_polymatrix_constructor.<locals>.<lambda>r   )r   r   )r   r   c                   S   s   t ƒ S r!   r   r   r   r   r   r$   S   r%   c                   S   s   t dƒS ©Nr   r   r   r   r   r   r$   T   r%   )r   r   r   r	   r   r   r   ZgensÚshapeÚrowsÚcolsr   Úlistr   r   Z
frac_fieldr   Ú	TypeError©ZM1ÚM2r   r   r   Útest_polymatrix_constructor2   sB    062242.00P6r.   c                   C   sF  t tgƒt tgƒkdkst‚t tgƒt tgƒkdks8t‚t tgƒt tgƒkdksTt‚t tgƒt tgƒkdkspt‚t ttggƒt ttgƒ  kr¢t tgtggƒks¨n t‚t tgtt d�t tgtt d�ksÐt‚t tgƒttgƒksèt‚t tgƒ ¡ ttgƒk�st‚t dgtƒt dgtƒk�s$t‚t dgtƒt dgtƒk�sBt‚d S )NTFr   r   )r   r   r   r   r	   r   r   Z	to_Matrixr   r   r   r   Útest_polymatrix_eq\   s    8(r/   c                  C   s”   t  tddgƒt¡t ddgttt d�ks.t‚t jtdgƒtt d�t dgtƒksVt‚t ddgtƒ} t ddgtƒ}| |ks~t‚|  t¡|ks�t‚d S ©Nr   r   r   )r   Zfrom_Matrixr   r   r	   r   r   Zset_gens)ZpmxZpmyr   r   r   Útest_polymatrix_from_Matrixm   s    .(r1   c                   C   s:   t tddggtƒƒdkst‚t tddg tƒƒdks6t‚d S )Nr   r   z PolyMatrix([[1, 2]], ring=QQ[x])r   z PolyMatrix(0, 2, [], ring=QQ[x]))Úreprr   r   r   r   r   r   r   Útest_polymatrix_reprv   s    r3   c                  C   sÜ   t ddgddggtƒ} | d d …d d …f | ks2t‚| dd d …f t ddggtƒksVt‚| d d …df t ddgtƒksxt‚| d tdttd�ks’t‚| d tdttd�ks¬t‚| d d… tdttd�tdttd�gksØt‚d S )Nr   r   r   é   r   )r   r   r   )r   r   r   r   r	   ©ÚMr   r   r   Útest_polymatrix_getitem{   s    $"r7   c                     sŠ  t ddgddggtƒ‰ ˆ ˆ  t ddgddggtƒks8t‚ˆ ˆ  t ddgddggtƒksZt‚ˆ  t dd	gd
dggtƒkszt‚tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ ˆ ˆ  t ddgddggtƒksät‚dˆ  t ddgddggtƒk�st‚ˆ d t ddgddggtƒk�s,t‚tdƒˆ  t ddgddggtƒk�sTt‚ˆ tdƒ t ddgddggtƒk�s|t‚tt‡ fdd„ƒ tt‡ fdd„ƒ t ddggtt d�} tj|  t tjdggtt d�k�sÞt‚| tj t tjdggtt d�k�st‚ˆ d t tdƒd dgtdƒd dggtƒk�s:t‚ˆ t	dtƒ t tdƒd dgtdƒd dggtƒk�stt‚tt‡ fdd„ƒ d S )Nr   r   r   r4   é   é   r   r   éþÿÿÿéýÿÿÿéüÿÿÿc                      s   ˆ d S r&   r   r   r5   r   r   r$   Š   r%   z,test_polymatrix_arithmetic.<locals>.<lambda>c                      s   ˆ d S r&   r   r   r5   r   r   r$   ‹   r%   c                      s   dˆ  S r&   r   r   r5   r   r   r$   Œ   r%   c                      s   dˆ  S r&   r   r   r5   r   r   r$   �   r%   é   é
   é   é   c                      s   g ˆ  S r!   r   r   r5   r   r   r$   ”   r%   c                      s   ˆ g  S r!   r   r   r5   r   r   r$   •   r%   r   c                      s   ˆ g  S r!   r   r   r5   r   r   r$   œ   r%   )
r   r   r   r   r+   r   r   r   r	   r   )r-   r   r5   r   Útest_polymatrix_arithmetic…   s*    "" "$$((((4:rA   c                  C   sÖ   t ddgddggtƒ} |  ¡ t ddgddggtƒks8t‚t ddgddggtƒ}|  |¡t ddddgddddggtƒkszt‚|  |¡t ddgddgddgddggtƒksªt‚|  d	d
„ ¡t ddgddggtƒksÒt‚d S )Nr   r   r   r4   é   r8   r=   r9   c                 S   s   d|  S )Nr   r   )Úer   r   r   r$   ¥   r%   z/test_polymatrix_manipulations.<locals>.<lambda>)r   r   Z	transposer   Zrow_joinZcol_joinZ	applyfuncr,   r   r   r   Útest_polymatrix_manipulationsŸ   s    ",0rD   c                   C   sL   t  ddt¡t ddggtƒks"t‚t  dt¡t ddgddggtƒksHt‚d S )Nr   r   r   )r   Zzerosr   r   Úeyer   r   r   r   Útest_polymatrix_ones_zeros¨   s    "rF   c                  C   sR   t ddgddggtƒ} |  ¡ t  dt¡dfks2t‚ttdd„ ƒ ttdd„ ƒ d S )	Nr   r   r   r4   )r   r   c                   S   s   t ddgtt d� ¡ S r0   )r   r   r   Úrrefr   r   r   r   r$   °   r%   z&test_polymatrix_rref.<locals>.<lambda>c                   S   s   t dtgtt d� ¡ S ©Nr   r   )r   r   r	   rG   r   r   r   r   r$   ±   r%   )r   r   rG   rE   r   r   Ú
ValueErrorr5   r   r   r   Útest_polymatrix_rref­   s    rJ   c                  C   sb   t ddgddggtƒ} |  ¡ t ddgtƒgks2t‚ttdd„ ƒ ttdd„ ƒ |  ¡ dks^t‚d S )	Nr   r   r   r8   r:   c                   S   s   t ddgtt d� ¡ S r0   )r   r   r   Ú	nullspacer   r   r   r   r$   ·   r%   z+test_polymatrix_nullspace.<locals>.<lambda>c                   S   s   t dtgtt d� ¡ S rH   )r   r   r	   rK   r   r   r   r   r$   ¸   r%   )r   r   rK   r   r   rI   Zrankr5   r   r   r   Útest_polymatrix_nullspace´   s
    rL   N)Zsympy.testing.pytestr   Zsympy.polys.polymatrixr   Zsympy.polysr   Zsympy.core.singletonr   Zsympy.matrices.denser   Zsympy.polys.domains.integerringr   Z!sympy.polys.domains.rationalfieldr	   Z	sympy.abcr   r   r    r.   r/   r1   r3   r7   rA   rD   rF   rJ   rL   r   r   r   r   Ú<module>   s$   $*	
	