o
    g                     @   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 g dg dg dg dgtt g dg dg dg dgtft g d	g d
g dgtt g d
g dg dgtft g dg dg dg dgtt g dg dg dg dgtfg} tdd}| D ]\}}t|j |dd }||j ks~J t|j |d}||j ksJ t|j |dd\}}||j ksJ ||j |j ksJ t|j |d\}}||j ksJ ||j |j ksJ |jj	|d}||jksJ |jj
|d\}}||jksJ ||j|jksJ |j j	|d}||j ksJ |j j
|d\}}||j ks)J ||j |j ks9J |j	|d}||ksFJ |j
|d\}}||ksUJ |||ks_J qfd S )N)   r   r   r   i@)r   r   r   r   i  )r   r   r   r   i  )r   r   r   r   i  )
      )   r   r   )r      r   r   r   )iir   	   )   4   i  )      r   )"   iFr   )   ir   )   r   is  )r   r   i   )ir   7   i  )   i     i  )W   1   i     )i#  +      S   )iCi  iHi!      deltar   Tr.   return_transform)r   r   r   r
   repto_ddmr   matmulr   llllll_transformto_sdm)normal_test_datar.   basis_dm
reduced_dmreduced	transform r<   Z/var/www/visachat/venv/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_lll.pytest_lll	   s   	
 r>   c                     s   t g dg dg dg dgtt g dg dg dg dgtt g d	g d
g d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 q1d S )N)r   r   r   r   )r   r   r   r   )   r   r   r   )r   r?   r   r   )r   r   r   r   )r   r   r   r   )r   r   r   r   )r   r?   r   r,   )r   r   )   r,   r   )r   r   r?   c                         t  j S Nr
   r1   r2   r<   	not_basisr<   r=   <lambda>]       z+test_lll_linear_dependent.<locals>.<lambda>c                      rB   rC   )r   r1   r2   r<   rE   r<   r=   rG   ^   rH   c                      
    j  S rC   r1   r4   r<   rE   r<   r=   rG   _      
 c                          j   S rC   r1   r6   r4   r<   rE   r<   r=   rG   `   rH   c                            S rC   r4   r<   rE   r<   r=   rG   a       c                      s   t  j ddS NT)r0   rD   r<   rE   r<   r=   rG   b       c                      rB   rC   )r   r1   r2   r<   rE   r<   r=   rG   c   rH   c                      rI   rC   r1   r5   r<   rE   r<   r=   rG   d   rK   c                      rL   rC   r1   r6   r5   r<   rE   r<   r=   rG   e   rH   c                      rN   rC   r5   r<   rE   r<   r=   rG   f   rP   )r   r   r   r   )linear_dependent_test_datar<   rE   r=   test_lll_linear_dependentN   sB   rW   c                      s
  t dt tddtddtddtddtddfD ]f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 )Nr   r   r   rA   r   r   d   c                         t  jdS Nr-   r
   r1   r<   dummy_matrixwrong_deltar<   r=   rG   l   rH   z&test_lll_wrong_delta.<locals>.<lambda>c                      rZ   r[   r   r1   r<   r]   r<   r=   rG   m   rH   c                          j jdS r[   rJ   r<   r]   r<   r=   rG   n   rH   c                          j  jdS r[   rM   r<   r]   r<   r=   rG   o   rR   c                          j dS r[   rO   r<   r]   r<   r=   rG   p       c                      s   t  jddS )NTr/   r\   r<   r]   r<   r=   rG   q   s    c                      rZ   r[   r   r1   r<   r]   r<   r=   rG   r   rH   c                      ra   r[   rS   r<   r]   r<   r=   rG   s   rH   c                      rb   r[   rT   r<   r]   r<   r=   rG   t   rR   c                      rc   r[   rU   r<   r]   r<   r=   rG   u   rd   )r   onesr   r   r   r   r<   r<   r]   r=   test_lll_wrong_deltai   s   0rg   c                         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)rA   r   c                      
   t  jS rC   r\   r<   wrong_shape_matrixr<   r=   rG   z   rK   z&test_lll_wrong_shape.<locals>.<lambda>c                      ri   rC   r`   r<   rj   r<   r=   rG   {   rK   c                      rI   rC   rJ   r<   rj   r<   r=   rG   |   rK   c                      rL   rC   rM   r<   rj   r<   r=   rG   }   rH   c                      rN   rC   rO   r<   rj   r<   r=   rG   ~   rP   c                         t  jddS rQ   r\   r<   rj   r<   r=   rG      rH   c                      ri   rC   re   r<   rj   r<   r=   rG      rK   c                      rI   rC   rS   r<   rj   r<   r=   rG      rK   c                      rL   rC   rT   r<   rj   r<   r=   rG      rH   c                      rN   rC   rU   r<   rj   r<   r=   rG      rP   )r   rf   r   r   r   r<   r<   rj   r=   test_lll_wrong_shapex      rm   c                      rh   )NrX   c                      ri   rC   r\   r<   wrong_domain_matrixr<   r=   rG      rK   z'test_lll_wrong_domain.<locals>.<lambda>c                      ri   rC   r`   r<   ro   r<   r=   rG      rK   c                      rI   rC   rJ   r<   ro   r<   r=   rG      rK   c                      rL   rC   rM   r<   ro   r<   r=   rG      rH   c                      rN   rC   rO   r<   ro   r<   r=   rG      rP   c                      rl   rQ   r\   r<   ro   r<   r=   rG      rH   c                      ri   rC   re   r<   ro   r<   r=   rG      rK   c                      rI   rC   rS   r<   ro   r<   r=   rG      rK   c                      rL   rC   rT   r<   ro   r<   r=   rG      rH   c                      rN   rC   rU   r<   ro   r<   r=   rG      rP   )r   rf   r   r   r	   r<   r<   ro   r=   test_lll_wrong_domain   rn   rq   N)sympy.polys.domainsr   r   sympy.polys.matricesr   !sympy.polys.matrices.domainmatrixr   sympy.polys.matrices.exceptionsr   r   r   r	   sympy.polys.matrices.lllr
   r   r   sympy.testing.pytestr   r>   rW   rg   rm   rq   r<   r<   r<   r=   <module>   s    E