U
    ˜9%eP  ã                   @   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   s  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sTt‚t|j|d6}||jksrt‚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st‚|jj
|d6\}}||jks(t‚| |j¡|jks@t‚|j ¡ j	|d6}||j ¡ ksft‚|j ¡ j
|d6\}}||j ¡ kst‚| |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ÚAssertionErrorr   Úmatmulr   ÚlllÚlll_transformÚto_sdm)Znormal_test_datar,   Zbasis_dmZ
reduced_dmZreducedZ	transform© r5   úb/var/www/html/Darija-Ai-API/env/lib/python3.8/site-packages/sympy/polys/matrices/tests/test_lll.pyÚtest_lll	   sŽ    ýýýýû
þþ
þþü	


ýý


ýýûí
 r7   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/   r5   ©Z	not_basisr5   r6   Ú<lambda>]   ó    z+test_lll_linear_dependent.<locals>.<lambda>c                      s
   t ˆ jƒS r;   ©r   r/   r5   r=   r5   r6   r>   ^   r?   c                      s
   ˆ j  ¡ S r;   ©r/   r2   r5   r=   r5   r6   r>   _   r?   c                      s   ˆ j  ¡  ¡ S r;   ©r/   r4   r2   r5   r=   r5   r6   r>   `   r?   c                      s   ˆ   ¡ S r;   ©r2   r5   r=   r5   r6   r>   a   r?   c                      s   t ˆ jddS ©NT)r.   r<   r5   r=   r5   r6   r>   b   r?   c                      s
   t ˆ jƒS r;   ©r   r/   r5   r=   r5   r6   r>   c   r?   c                      s
   ˆ j  ¡ S r;   ©r/   r3   r5   r=   r5   r6   r>   d   r?   c                      s   ˆ j  ¡  ¡ S r;   ©r/   r4   r3   r5   r=   r5   r6   r>   e   r?   c                      s   ˆ   ¡ S r;   ©r3   r5   r=   r5   r6   r>   f   r?   )r   r   r   r   )Zlinear_dependent_test_datar5   r=   r6   Útest_lll_linear_dependentN   s@    


ýý


ýý
þþ÷rI   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<   r5   ©Zdummy_matrixZwrong_deltar5   r6   r>   l   r?   z&test_lll_wrong_delta.<locals>.<lambda>c                      s   t ˆ jˆdS rL   r@   r5   rM   r5   r6   r>   m   r?   c                      s   ˆ j jˆdS rL   rA   r5   rM   r5   r6   r>   n   r?   c                      s   ˆ j  ¡ jˆdS rL   rB   r5   rM   r5   r6   r>   o   r?   c                      s   ˆ j ˆdS rL   rC   r5   rM   r5   r6   r>   p   r?   c                      s   t ˆ jˆddS )NTr-   r<   r5   rM   r5   r6   r>   q   r?   c                      s   t ˆ jˆdS rL   rE   r5   rM   r5   r6   r>   r   r?   c                      s   ˆ j jˆdS rL   rF   r5   rM   r5   r6   r>   s   r?   c                      s   ˆ j  ¡ jˆdS rL   rG   r5   rM   r5   r6   r>   t   r?   c                      s   ˆ j ˆdS rL   rH   r5   rM   r5   r6   r>   u   r?   )r   Úonesr   r   r   r   r5   r5   rM   r6   Útest_lll_wrong_deltai   s    0rO   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;   r<   r5   ©Zwrong_shape_matrixr5   r6   r>   z   r?   z&test_lll_wrong_shape.<locals>.<lambda>c                      s
   t ˆ jƒS r;   r@   r5   rP   r5   r6   r>   {   r?   c                      s
   ˆ j  ¡ S r;   rA   r5   rP   r5   r6   r>   |   r?   c                      s   ˆ j  ¡  ¡ S r;   rB   r5   rP   r5   r6   r>   }   r?   c                      s   ˆ   ¡ S r;   rC   r5   rP   r5   r6   r>   ~   r?   c                      s   t ˆ jddS rD   r<   r5   rP   r5   r6   r>      r?   c                      s
   t ˆ jƒS r;   rE   r5   rP   r5   r6   r>   €   r?   c                      s
   ˆ j  ¡ S r;   rF   r5   rP   r5   r6   r>      r?   c                      s   ˆ j  ¡  ¡ S r;   rG   r5   rP   r5   r6   r>   ‚   r?   c                      s   ˆ   ¡ S r;   rH   r5   rP   r5   r6   r>   ƒ   r?   )r   rN   r   r   r   r5   r5   rP   r6   Útest_lll_wrong_shapex   s    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 )NrJ   c                      s
   t ˆ jƒS r;   r<   r5   ©Zwrong_domain_matrixr5   r6   r>   ˆ   r?   z'test_lll_wrong_domain.<locals>.<lambda>c                      s
   t ˆ jƒS r;   r@   r5   rR   r5   r6   r>   ‰   r?   c                      s
   ˆ j  ¡ S r;   rA   r5   rR   r5   r6   r>   Š   r?   c                      s   ˆ j  ¡  ¡ S r;   rB   r5   rR   r5   r6   r>   ‹   r?   c                      s   ˆ   ¡ S r;   rC   r5   rR   r5   r6   r>   Œ   r?   c                      s   t ˆ jddS rD   r<   r5   rR   r5   r6   r>      r?   c                      s
   t ˆ jƒS r;   rE   r5   rR   r5   r6   r>   Ž   r?   c                      s
   ˆ j  ¡ S r;   rF   r5   rR   r5   r6   r>      r?   c                      s   ˆ j  ¡  ¡ S r;   rG   r5   rR   r5   r6   r>      r?   c                      s   ˆ   ¡ S r;   rH   r5   rR   r5   r6   r>   ‘   r?   )r   rN   r   r   r	   r5   r5   rR   r6   Útest_lll_wrong_domain†   s    rS   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   r7   rI   rO   rQ   rS   r5   r5   r5   r6   Ú<module>   s   E