o
    h                     @   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)Znormal_test_datar.   Zbasis_dmZ
reduced_dmZreduced	transform r8   i/home/www/facesmatcher.com/frenv_anti/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   r8   Z	not_basisr8   r9   <lambda>]       z+test_lll_linear_dependent.<locals>.<lambda>c                      r>   r?   )r   r1   r2   r8   rA   r8   r9   rB   ^   rC   c                      
    j  S r?   r1   r4   r8   rA   r8   r9   rB   _      
 c                          j   S r?   r1   r6   r4   r8   rA   r8   r9   rB   `   rC   c                            S r?   r4   r8   rA   r8   r9   rB   a       c                      s   t  j ddS NT)r0   r@   r8   rA   r8   r9   rB   b       c                      r>   r?   )r   r1   r2   r8   rA   r8   r9   rB   c   rC   c                      rD   r?   r1   r5   r8   rA   r8   r9   rB   d   rF   c                      rG   r?   r1   r6   r5   r8   rA   r8   r9   rB   e   rC   c                      rI   r?   r5   r8   rA   r8   r9   rB   f   rK   )r   r   r   r   )Zlinear_dependent_test_datar8   rA   r9   test_lll_linear_dependentN   sB   rQ   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   r=   r   r   d   c                         t  jdS Nr-   r
   r1   r8   Zdummy_matrixZwrong_deltar8   r9   rB   l   rC   z&test_lll_wrong_delta.<locals>.<lambda>c                      rT   rU   r   r1   r8   rW   r8   r9   rB   m   rC   c                          j jdS rU   rE   r8   rW   r8   r9   rB   n   rC   c                          j  jdS rU   rH   r8   rW   r8   r9   rB   o   rM   c                          j dS rU   rJ   r8   rW   r8   r9   rB   p       c                      s   t  jddS )NTr/   rV   r8   rW   r8   r9   rB   q   s    c                      rT   rU   r   r1   r8   rW   r8   r9   rB   r   rC   c                      rY   rU   rN   r8   rW   r8   r9   rB   s   rC   c                      rZ   rU   rO   r8   rW   r8   r9   rB   t   rM   c                      r[   rU   rP   r8   rW   r8   r9   rB   u   r\   )r   onesr   r   r   r   r8   r8   rW   r9   test_lll_wrong_deltai   s   0r_   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)r=   r   c                      
   t  jS r?   rV   r8   Zwrong_shape_matrixr8   r9   rB   z   rF   z&test_lll_wrong_shape.<locals>.<lambda>c                      ra   r?   rX   r8   rb   r8   r9   rB   {   rF   c                      rD   r?   rE   r8   rb   r8   r9   rB   |   rF   c                      rG   r?   rH   r8   rb   r8   r9   rB   }   rC   c                      rI   r?   rJ   r8   rb   r8   r9   rB   ~   rK   c                         t  jddS rL   rV   r8   rb   r8   r9   rB      rC   c                      ra   r?   r]   r8   rb   r8   r9   rB      rF   c                      rD   r?   rN   r8   rb   r8   r9   rB      rF   c                      rG   r?   rO   r8   rb   r8   r9   rB      rC   c                      rI   r?   rP   r8   rb   r8   r9   rB      rK   )r   r^   r   r   r   r8   r8   rb   r9   test_lll_wrong_shapex      rd   c                      r`   )NrR   c                      ra   r?   rV   r8   Zwrong_domain_matrixr8   r9   rB      rF   z'test_lll_wrong_domain.<locals>.<lambda>c                      ra   r?   rX   r8   rf   r8   r9   rB      rF   c                      rD   r?   rE   r8   rf   r8   r9   rB      rF   c                      rG   r?   rH   r8   rf   r8   r9   rB      rC   c                      rI   r?   rJ   r8   rf   r8   r9   rB      rK   c                      rc   rL   rV   r8   rf   r8   r9   rB      rC   c                      ra   r?   r]   r8   rf   r8   r9   rB      rF   c                      rD   r?   rN   r8   rf   r8   r9   rB      rF   c                      rG   r?   rO   r8   rf   r8   r9   rB      rC   c                      rI   r?   rP   r8   rf   r8   r9   rB      rK   )r   r^   r   r   r	   r8   r8   rf   r9   test_lll_wrong_domain   re   rg   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   r:   rQ   r_   rd   rg   r8   r8   r8   r9   <module>   s    E