U
    	Ç-e¹  ã                   @   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   úb/var/www/html/Darija-Ai-Train/env/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st‚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$   $*	
	