U
    ZŹ¹ją  ć                   @   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   śb/var/www/html/bwave/python/venv/lib/python3.8/site-packages/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