o
    oÇ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   ÚOneÚHalfÚlen)Úpm1Úv1Úm1ÚAÚBÚpm2Úv2Úm2ÚCÚpm3Úv3Úpm4Úv4© r&   úu/var/www/html/construction_image-detection-poc/venv/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   ÚgensÚshapeÚrowsÚcolsr   Úlistr   r   Ú
frac_fieldr   Ú	TypeError©ÚM1ÚM2r&   r&   r'   Útest_polymatrix_constructor2   sB   040042.00R64r9   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   Ú	to_Matrixr&   r&   r&   r'   Útest_polymatrix_eq\   s   :( r;   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   Úfrom_Matrixr   r   r	   r   Úset_gens)ÚpmxÚpmyr&   r&   r'   Útest_polymatrix_from_Matrixm   s   .(rA   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   rC   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rG   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   rD   é   é   r   r   éþÿÿÿéýÿÿÿéüÿÿÿc                      s   ˆ d S r-   r&   r&   rE   r&   r'   r,   Š   r.   z,test_polymatrix_arithmetic.<locals>.<lambda>c                      s   ˆ d S r-   r&   r&   rE   r&   r'   r,   ‹   r.   c                      s   dˆ  S r-   r&   r&   rE   r&   r'   r,   Œ   r.   c                      s   dˆ  S r-   r&   r&   rE   r&   r'   r,      r.   é   é
   é   é   c                      s   g ˆ  S r)   r&   r&   rE   r&   r'   r,   ”   r.   c                      s   ˆ g  S r)   r&   r&   rE   r&   r'   r,   •   r.   r   c                      s   ˆ g  S r)   r&   r&   rE   r&   r'   r,   œ   r.   )	r   r   r   r5   r   r   r   r	   r   )r8   r&   rE   r'   Útest_polymatrix_arithmetic…   s*   "" """&&&&4:rQ   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   rD   é   rH   rM   rI   )r   r   rR   rH   )r   rD   rM   rI   c                 S   s   d|  S )Nr   r&   )Úer&   r&   r'   r,   ¥   r.   z/test_polymatrix_manipulations.<locals>.<lambda>)r   r   Ú	transposeÚrow_joinÚcol_joinÚ	applyfuncr6   r&   r&   r'   Útest_polymatrix_manipulationsŸ   s   "$0,rX   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   Úzerosr   Úeyer&   r&   r&   r'   Útest_polymatrix_ones_zeros¨   s   "*r[   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   rD   )r   r   c                   S   ó   t ddgtt d ¡ S r<   )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	   r]   r&   r&   r&   r'   r,   ±   r^   )r   r   r]   rZ   r   Ú
ValueErrorrE   r&   r&   r'   Útest_polymatrix_rref­   s   rb   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   rH   rJ   c                   S   r\   r<   )r   r   r   Ú	nullspacer&   r&   r&   r'   r,   ·   r^   z+test_polymatrix_nullspace.<locals>.<lambda>c                   S   r_   r`   )r   r   r	   rc   r&   r&   r&   r'   r,   ¸   r^   )r   r   rc   r   ra   ÚrankrE   r&   r&   r'   Útest_polymatrix_nullspace´   s
   re   N)Úsympy.testing.pytestr   Úsympy.polys.polymatrixr   Úsympy.polysr   Úsympy.core.singletonr   Úsympy.matrices.denser   Úsympy.polys.domains.integerringr   Ú!sympy.polys.domains.rationalfieldr	   Ú	sympy.abcr   r   r(   r9   r;   rA   rC   rG   rQ   rX   r[   rb   re   r&   r&   r&   r'   Ú<module>   s&    $*	
	