o
    GZŽh¹  ã                   @   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szJ ‚t| | t ƒsƒJ ‚| | |ks‹J ‚| | |ks“J ‚||  |ks›J ‚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×J ‚t g d
¢dd}t g d
¢dd}t ttd tdd	ggƒ}|| |ksüJ ‚|| |ksJ ‚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s2J ‚|	tj	 |
ks<J ‚|
jtt ksFJ ‚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szJ ‚t
t tt dƒdksˆJ ‚t g d¢tƒd t g d¢tƒks›J ‚d S )Né   é   éÿÿÿÿé   r   zZZ[x]©Úringr	   ©Údomain)r   r   r   r   r   r   zQQ[x]r   )r   r   r   r   )r   r   r   r   )r   r   r   r   r   Ú
isinstancer	   r   ZOneÚHalfÚlen)Zpm1Úv1Úm1ÚAÚBZpm2Úv2Úm2ÚCZpm3Zv3Zpm4Zv4© r   úP/var/www/auris/lib/python3.10/site-packages/sympy/polys/tests/test_polymatrix.pyÚ_test_polymatrix   s>   :ÿ80.ÿ
2,,*r!   c                  C   sú  t ttggtttf d} | jtttf ksJ ‚| jtksJ ‚| jttfks(J ‚| jdks/J ‚| jdks6J ‚| j	dks=J ‚t
| ƒdksEJ ‚t| ƒttttftdttttftdgks]J ‚t ttggtt t d}|jtt t ksuJ ‚|jtt ks~J ‚|jtfks†J ‚|jdksJ ‚|jdks”J ‚|j	dks›J ‚t
|ƒdks£J ‚t|ƒtttftt dtttftt dgks½J ‚t ttggtƒt ttggt t¡t dksÕJ ‚t ttggddt ttggtttf dksíJ ‚t ttggttfƒt ttggtttf dksJ ‚t ttggttƒt ttggtttf dks J ‚t ttgƒt tgtggtttf dks7J ‚t ddttgƒt ttggtttf dksOJ ‚t dddd„ ƒt ttggtttf dksgJ ‚t d	dg ttƒjd
ksuJ ‚t dd	g ttƒjdksƒJ ‚t g g gttƒjdks‘J ‚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ºJ ‚ J ‚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ãJ ‚t tttƒdgƒt tgdggtt dksûJ ‚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   s    z-test_polymatrix_constructor.<locals>.<lambda>r   )r   r   )r   r   c                   S   s   t ƒ S r"   r   r   r   r   r    r%   S   s    c                   S   s   t dƒS ©Nr   r   r   r   r   r    r%   T   ó    )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40042.00R64r/   c                   C   sB  t tgƒt tgƒkdu sJ ‚t tgƒt tgƒkdu sJ ‚t tgƒt tgƒkdu s*J ‚t tgƒt tgƒkdu s8J ‚t ttggƒt ttgƒ  krRt tgtggƒksUJ ‚ J ‚t tgtt dt tgtt dksiJ ‚t tgƒttgƒksuJ ‚t tgƒ ¡ ttgƒksƒJ ‚t dgtƒt dgtƒks‘J ‚t dgtƒt dgtƒksŸJ ‚d S )NTFr   r   )r   r   r   r	   r   r   Z	to_Matrixr   r   r   r    Útest_polymatrix_eq\   s   :( r0   c                  C   s”   t  tddgƒt¡t ddgttt dksJ ‚t jtdgƒtt dt dgtƒks+J ‚t ddgtƒ} t ddgtƒ}| |ks?J ‚|  t¡|ksHJ ‚d S ©Nr   r   r   )r   Zfrom_Matrixr   r   r	   r   Zset_gens)ZpmxZpmyr   r   r    Útest_polymatrix_from_Matrixm   s   .(r2   c                   C   s:   t tddggtƒƒdksJ ‚t tddg tƒƒdksJ ‚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    Útest_polymatrix_reprv   s   r4   c                  C   sÜ   t ddgddggtƒ} | d d …d d …f | ksJ ‚| dd d …f t ddggtƒks+J ‚| d d …df t ddgtƒks<J ‚| d tdttdksIJ ‚| d tdttdksVJ ‚| d d… tdttdtdttdgkslJ ‚d S )Nr   r   r   é   r   )r   r   r   )r   r   r   r	   ©ÚMr   r   r    Útest_polymatrix_getitem{   s   $"0r8   c                     s~  t ddgddggtƒ‰ ˆ ˆ  t ddgddggtƒksJ ‚ˆ ˆ  t ddgddggtƒks-J ‚ˆ  t dd	gd
dggtƒks=J ‚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srJ ‚dˆ  t ddgddggtƒksƒJ ‚ˆ d t ddgddggtƒks”J ‚tdƒˆ  t ddgddggtƒks§J ‚ˆ tdƒ t ddgddggtƒksºJ ‚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êJ ‚| tj t tjdggtt dksýJ ‚ˆ d t tdƒd dgtdƒd dggtƒksJ ‚ˆ tdtƒ t tdƒd dgtdƒd dggtƒks4J ‚tt‡ fdd„ƒ d S )Nr   r   r   r5   é   é   r   r   éþÿÿÿéýÿÿÿéüÿÿÿc                      s   ˆ d S r&   r   r   r6   r   r    r%   Š   r'   z,test_polymatrix_arithmetic.<locals>.<lambda>c                      s   ˆ d S r&   r   r   r6   r   r    r%   ‹   r'   c                      s   dˆ  S r&   r   r   r6   r   r    r%   Œ   r'   c                      s   dˆ  S r&   r   r   r6   r   r    r%      r'   é   é
   é   é   c                      s   g ˆ  S r"   r   r   r6   r   r    r%   ”   r'   c                      s   ˆ g  S r"   r   r   r6   r   r    r%   •   r'   r   c                      s   ˆ g  S r"   r   r   r6   r   r    r%   œ   r'   )	r   r   r   r,   r   r   r   r	   r   )r.   r   r6   r    Útest_polymatrix_arithmetic…   s*   "" """&&&&4:rB   c                  C   sÎ   t ddgddggtƒ} |  ¡ t ddgddggtƒksJ ‚t ddgddggtƒ}|  |¡t g d	¢g d
¢gtƒks9J ‚|  |¡t ddgddgddgddggtƒksQJ ‚|  dd„ ¡t ddgddggtƒkseJ ‚d S )Nr   r   r   r5   é   r9   r>   r:   )r   r   rC   r9   )r   r5   r>   r:   c                 S   s   d|  S )Nr   r   )Úer   r   r    r%   ¥   r'   z/test_polymatrix_manipulations.<locals>.<lambda>)r   r   Z	transposeZrow_joinZcol_joinZ	applyfuncr-   r   r   r    Útest_polymatrix_manipulationsŸ   s   "$0,rE   c                   C   sL   t  ddt¡t ddggtƒksJ ‚t  dt¡t ddgddggtƒks$J ‚d S )Nr   r   r   )r   Zzerosr   Úeyer   r   r   r    Útest_polymatrix_ones_zeros¨   s   "*rG   c                  C   sR   t ddgddggtƒ} |  ¡ t  dt¡dfksJ ‚ttdd„ ƒ ttdd„ ƒ d S )	Nr   r   r   r5   )r   r   c                   S   ó   t ddgtt d ¡ S r1   )r   r   r   Úrrefr   r   r   r    r%   °   ó    z&test_polymatrix_rref.<locals>.<lambda>c                   S   ó   t dtgtt d ¡ S ©Nr   r   )r   r   r	   rI   r   r   r   r    r%   ±   rJ   )r   r   rI   rF   r   Ú
ValueErrorr6   r   r   r    Útest_polymatrix_rref­   s   rN   c                  C   sb   t ddgddggtƒ} |  ¡ t ddgtƒgksJ ‚ttdd„ ƒ ttdd„ ƒ |  ¡ dks/J ‚d S )	Nr   r   r   r9   r;   c                   S   rH   r1   )r   r   r   Ú	nullspacer   r   r   r    r%   ·   rJ   z+test_polymatrix_nullspace.<locals>.<lambda>c                   S   rK   rL   )r   r   r	   rO   r   r   r   r    r%   ¸   rJ   )r   r   rO   r   rM   Zrankr6   r   r   r    Útest_polymatrix_nullspace´   s
   rP   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/   r0   r2   r4   r8   rB   rE   rG   rN   rP   r   r   r   r    Ú<module>   s&    $*	
	