U
    Ý@·fà  ã                   @   sŒ   d dl mZmZ d dlmZ d dlmZ d dlmZm	Z	m
Z
mZ d dlmZmZmZ d dlmZ dd„ Zd	d
„ Zdd„ Zdd„ Zdd„ ZdS )é    )ÚZZÚQQ)ÚDM)ÚDomainMatrix)ÚDMRankErrorÚDMValueErrorÚDMShapeErrorÚDMDomainError)Ú_ddm_lllÚddm_lllÚddm_lll_transform)Úraisesc                  C   s4  t dddddgdddddgdddddgdddddggtƒt ddd	d
dgddd
ddgdddddgdddddggtƒft dddgdddgdddggtƒt dddgdddgdddggtƒft dddd gd!dd"d#gd$d%d&d'gd(d)d*d+ggtƒt dddd gd,d-d.d/gd!dd"d#gd0d1d2d3ggtƒfg} td4d5ƒ}| D ]\}}t|j ¡ |d6d }||j ¡ ks\t‚t|j ¡ |d6}||j ¡ ks‚t‚t|j ¡ |d7d8\}}||j ¡ ks®t‚| |j ¡ ¡|j ¡ ksÎt‚t	|j ¡ |d6\}}||j ¡ ksøt‚| |j ¡ ¡|j ¡ kst‚|jj
|d6}||jks6t‚|jj|d6\}}||jksXt‚| |j¡|jkspt‚|j ¡ j
|d6}||j ¡ ks–t‚|j ¡ j|d6\}}||j ¡ ksÀt‚| |j ¡ ¡|j ¡ ksàt‚|j
|d6}||ksút‚|j|d6\}}||kst‚| |¡|ks(t‚q(d S )9Né   r   i@±ÿÿièƒ  išš  iº  é
   éýÿÿÿéþÿÿÿé   éüÿÿÿé   i÷ÿÿÿiõÿÿÿé   iôÿÿÿiùÿÿÿé	   éÿÿÿÿé   é4   i€  é   é   é"   iFþÿÿé¼   i›ÿÿÿéì   is  iªÿÿÿé   iÊÿÿÿé7   i¦  é   iª  éê   i  éW   é1   i™  é   i#  é+   é•   éS   iCÿÿÿi  iHÿÿÿi!ÿÿÿé   é   ©ÚdeltaT©r,   Úreturn_transform)r   r   r   r
   ÚrepÚto_ddmÚAssertionErrorr   Úmatmulr   ÚlllÚlll_transformÚto_sdm)Znormal_test_datar,   Zbasis_dmZ
reduced_dmZreducedZ	transform© r6   úG/tmp/pip-unpacked-wheel-6uje5nh9/sympy/polys/matrices/tests/test_lll.pyÚtest_lll	   sŽ    ýýýýû
þþ
þþü	


ýý


ýýûí
   r8   c               	      sF  t ddddgddddgddddgddddggtƒt ddddgddddgddddgddddggtƒt dd	dgd
ddgdddggtƒg} | D ]¸‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ qˆd S )Nr   r   r   r   r   é   r   r*   éûÿÿÿé   r   r   c                      s   t ˆ j ¡ ƒS ©N©r
   r/   r0   r6   ©Z	not_basisr6   r7   Ú<lambda>]   ó    z+test_lll_linear_dependent.<locals>.<lambda>c                      s   t ˆ j ¡ ƒS r<   )r   r/   r0   r6   r>   r6   r7   r?   ^   r@   c                      s
   ˆ j  ¡ S r<   ©r/   r3   r6   r>   r6   r7   r?   _   r@   c                      s   ˆ j  ¡  ¡ S r<   ©r/   r5   r3   r6   r>   r6   r7   r?   `   r@   c                      s   ˆ   ¡ S r<   ©r3   r6   r>   r6   r7   r?   a   r@   c                      s   t ˆ j ¡ ddS ©NT)r.   r=   r6   r>   r6   r7   r?   b   r@   c                      s   t ˆ j ¡ ƒS r<   )r   r/   r0   r6   r>   r6   r7   r?   c   r@   c                      s
   ˆ j  ¡ S r<   ©r/   r4   r6   r>   r6   r7   r?   d   r@   c                      s   ˆ j  ¡  ¡ S r<   ©r/   r5   r4   r6   r>   r6   r7   r?   e   r@   c                      s   ˆ   ¡ S r<   ©r4   r6   r>   r6   r7   r?   f   r@   )r   r   r   r   )Zlinear_dependent_test_datar6   r>   r7   Útest_lll_linear_dependentN   s@    


ýý


ýý
þþ÷rH   c                      s
  t  dt¡‰ tddƒtddƒtddƒtddƒtddƒfD ]Ì‰tt‡ ‡fdd„ƒ tt‡ ‡fd	d„ƒ tt‡ ‡fd
d„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ tt‡ ‡fdd„ƒ q8d S )N©r   r   r   r;   r   r   éd   c                      s   t ˆ jˆdS ©Nr+   ©r
   r/   r6   ©Zdummy_matrixZwrong_deltar6   r7   r?   l   r@   z&test_lll_wrong_delta.<locals>.<lambda>c                      s   t ˆ jˆdS rK   ©r   r/   r6   rM   r6   r7   r?   m   r@   c                      s   ˆ j jˆdS rK   rA   r6   rM   r6   r7   r?   n   r@   c                      s   ˆ j  ¡ jˆdS rK   rB   r6   rM   r6   r7   r?   o   r@   c                      s   ˆ j ˆdS rK   rC   r6   rM   r6   r7   r?   p   r@   c                      s   t ˆ jˆddS )NTr-   rL   r6   rM   r6   r7   r?   q   r@   c                      s   t ˆ jˆdS rK   ©r   r/   r6   rM   r6   r7   r?   r   r@   c                      s   ˆ j jˆdS rK   rE   r6   rM   r6   r7   r?   s   r@   c                      s   ˆ j  ¡ jˆdS rK   rF   r6   rM   r6   r7   r?   t   r@   c                      s   ˆ j ˆdS rK   rG   r6   rM   r6   r7   r?   u   r@   )r   Úonesr   r   r   r   r6   r6   rM   r7   Útest_lll_wrong_deltai   s    0rQ   c                      sÄ   t  dt¡‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )N)r;   r   c                      s
   t ˆ jƒS r<   rL   r6   ©Zwrong_shape_matrixr6   r7   r?   z   r@   z&test_lll_wrong_shape.<locals>.<lambda>c                      s
   t ˆ jƒS r<   rN   r6   rR   r6   r7   r?   {   r@   c                      s
   ˆ j  ¡ S r<   rA   r6   rR   r6   r7   r?   |   r@   c                      s   ˆ j  ¡  ¡ S r<   rB   r6   rR   r6   r7   r?   }   r@   c                      s   ˆ   ¡ S r<   rC   r6   rR   r6   r7   r?   ~   r@   c                      s   t ˆ jddS rD   rL   r6   rR   r6   r7   r?      r@   c                      s
   t ˆ jƒS r<   rO   r6   rR   r6   r7   r?   €   r@   c                      s
   ˆ j  ¡ S r<   rE   r6   rR   r6   r7   r?      r@   c                      s   ˆ j  ¡  ¡ S r<   rF   r6   rR   r6   r7   r?   ‚   r@   c                      s   ˆ   ¡ S r<   rG   r6   rR   r6   r7   r?   ƒ   r@   )r   rP   r   r   r   r6   r6   rR   r7   Útest_lll_wrong_shapex   s    rS   c                      sÄ   t  dt¡‰ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ tt‡ fd	d„ƒ tt‡ fd
d„ƒ tt‡ fdd„ƒ tt‡ fdd„ƒ d S )NrI   c                      s
   t ˆ jƒS r<   rL   r6   ©Zwrong_domain_matrixr6   r7   r?   ˆ   r@   z'test_lll_wrong_domain.<locals>.<lambda>c                      s
   t ˆ jƒS r<   rN   r6   rT   r6   r7   r?   ‰   r@   c                      s
   ˆ j  ¡ S r<   rA   r6   rT   r6   r7   r?   Š   r@   c                      s   ˆ j  ¡  ¡ S r<   rB   r6   rT   r6   r7   r?   ‹   r@   c                      s   ˆ   ¡ S r<   rC   r6   rT   r6   r7   r?   Œ   r@   c                      s   t ˆ jddS rD   rL   r6   rT   r6   r7   r?      r@   c                      s
   t ˆ jƒS r<   rO   r6   rT   r6   r7   r?   Ž   r@   c                      s
   ˆ j  ¡ S r<   rE   r6   rT   r6   r7   r?      r@   c                      s   ˆ j  ¡  ¡ S r<   rF   r6   rT   r6   r7   r?      r@   c                      s   ˆ   ¡ S r<   rG   r6   rT   r6   r7   r?   ‘   r@   )r   rP   r   r   r	   r6   r6   rT   r7   Útest_lll_wrong_domain†   s    rU   N)Zsympy.polys.domainsr   r   Zsympy.polys.matricesr   Z!sympy.polys.matrices.domainmatrixr   Zsympy.polys.matrices.exceptionsr   r   r   r	   Zsympy.polys.matrices.lllr
   r   r   Zsympy.testing.pytestr   r8   rH   rQ   rS   rU   r6   r6   r6   r7   Ú<module>   s   E