a
    kº”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   sF  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ôJ ‚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spJ ‚|	tj	 |
ks„J ‚|
jtt ks˜J ‚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 J ‚t
t tt dƒdksJ ‚t g d¢tƒd t g d¢tƒksBJ ‚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pm1Zv1Úm1ÚAÚBZpm2Zv2Úm2ÚCZpm3Zv3Zpm4Zv4© r   úO/var/www/auris/lib/python3.9/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s0J ‚| jtks>J ‚| jttfksPJ ‚| jdks^J ‚| jdkslJ ‚| j	dkszJ ‚t
| ƒdksŠJ ‚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sêJ ‚|jtt ksüJ ‚|jtfksJ ‚|jdksJ ‚|jdks.J ‚|j	dks>J ‚t
|ƒdksPJ ‚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sPJ ‚t ttgƒt tgtggtttf dks~J ‚t ddttgƒt ttggtttf dks®J ‚t dddd„ ƒt ttggtttf dksÞJ ‚t d	dg ttƒjd
ksúJ ‚t dd	g ttƒjdksJ ‚t g g gttƒjdks2J ‚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 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   ó    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   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u sJ ‚t tgƒt tgƒkdu s8J ‚t tgƒt tgƒkdu sTJ ‚t tgƒt tgƒkdu spJ ‚t ttggƒt ttgƒ  kr¢t tgtggƒks¨n J ‚t tgtt dt tgtt dksÐJ ‚t tgƒttgƒksèJ ‚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sBJ ‚d S )NTFr   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.J ‚t jtdgƒtt dt dgtƒksVJ ‚t ddgtƒ} t ddgtƒ}| |ks~J ‚|  t¡|ksJ ‚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    .(r0   c                   C   s:   t tddggtƒƒdksJ ‚t tddg tƒƒdks6J ‚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    r2   c                  C   sÜ   t ddgddggtƒ} | d d …d d …f | ks2J ‚| dd d …f t ddggtƒksVJ ‚| d d …df t ddgtƒksxJ ‚| d tdttdks’J ‚| d tdttdks¬J ‚| d d… tdttdtdttdgksØJ ‚d S )Nr   r   r   é   r   )r   r   r   )r   r   r   r	   ©ÚMr   r   r   Útest_polymatrix_getitem{   s    $"r6   c                     sŠ  t ddgddggtƒ‰ ˆ ˆ  t ddgddggtƒks8J ‚ˆ ˆ  t ddgddggtƒksZJ ‚ˆ  t dd	gd
dggtƒkszJ ‚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äJ ‚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sTJ ‚ˆ 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stJ ‚tt‡ fdd„ƒ d S )Nr   r   r   r3   é   é   r   r   éþÿÿÿéýÿÿÿéüÿÿÿc                      s   ˆ d S r%   r   r   r4   r   r   r#   Š   r$   z,test_polymatrix_arithmetic.<locals>.<lambda>c                      s   ˆ d S r%   r   r   r4   r   r   r#   ‹   r$   c                      s   dˆ  S r%   r   r   r4   r   r   r#   Œ   r$   c                      s   dˆ  S r%   r   r   r4   r   r   r#      r$   é   é
   é   é   c                      s   g ˆ  S r    r   r   r4   r   r   r#   ”   r$   c                      s   ˆ g  S r    r   r   r4   r   r   r#   •   r$   r   c                      s   ˆ g  S r    r   r   r4   r   r   r#   œ   r$   )	r   r   r   r*   r   r   r   r	   r   )r,   r   r4   r   Útest_polymatrix_arithmetic…   s*    "" "$$((((4:r@   c                  C   sÎ   t ddgddggtƒ} |  ¡ t ddgddggtƒks8J ‚t ddgddggtƒ}|  |¡t g d	¢g d
¢gtƒksrJ ‚|  |¡t ddgddgddgddggtƒks¢J ‚|  dd„ ¡t ddgddggtƒksÊJ ‚d S )Nr   r   r   r3   é   r7   r<   r8   )r   r   rA   r7   )r   r3   r<   r8   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rC   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sHJ ‚d S )Nr   r   r   )r   Úzerosr   Ú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s2J ‚ttdd„ ƒ ttdd„ ƒ d S )	Nr   r   r   r3   )r   r   c                   S   s   t ddgtt d ¡ S r/   )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   Ú
ValueErrorr4   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s2J ‚ttdd„ ƒ ttdd„ ƒ |  ¡ dks^J ‚d S )	Nr   r   r   r7   r9   c                   S   s   t ddgtt d ¡ S r/   )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   rI   Zrankr4   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.   r0   r2   r6   r@   rC   rF   rJ   rL   r   r   r   r   Ú<module>   s$   $*	
	