o
    GZh                     @   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reducedZ	transform r7   R/var/www/auris/lib/python3.10/site-packages/sympy/polys/matrices/tests/test_lll.pytest_lll	   s   	
 r9   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   r7   Z	not_basisr7   r8   <lambda>]       z+test_lll_linear_dependent.<locals>.<lambda>c                      r=   r>   )r   r1   r2   r7   r@   r7   r8   rA   ^   rB   c                      
    j  S r>   r1   r4   r7   r@   r7   r8   rA   _      
 c                          j   S r>   r1   r6   r4   r7   r@   r7   r8   rA   `   rB   c                            S r>   r4   r7   r@   r7   r8   rA   a       c                      s   t  j ddS NT)r0   r?   r7   r@   r7   r8   rA   b       c                      r=   r>   )r   r1   r2   r7   r@   r7   r8   rA   c   rB   c                      rC   r>   r1   r5   r7   r@   r7   r8   rA   d   rE   c                      rF   r>   r1   r6   r5   r7   r@   r7   r8   rA   e   rB   c                      rH   r>   r5   r7   r@   r7   r8   rA   f   rJ   )r   r   r   r   )Zlinear_dependent_test_datar7   r@   r8   test_lll_linear_dependentN   sB   rP   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   r7   Zdummy_matrixZwrong_deltar7   r8   rA   l   rB   z&test_lll_wrong_delta.<locals>.<lambda>c                      rS   rT   r   r1   r7   rV   r7   r8   rA   m   rB   c                          j jdS rT   rD   r7   rV   r7   r8   rA   n   rB   c                          j  jdS rT   rG   r7   rV   r7   r8   rA   o   rL   c                          j dS rT   rI   r7   rV   r7   r8   rA   p       c                      s   t  jddS )NTr/   rU   r7   rV   r7   r8   rA   q   s    c                      rS   rT   r   r1   r7   rV   r7   r8   rA   r   rB   c                      rX   rT   rM   r7   rV   r7   r8   rA   s   rB   c                      rY   rT   rN   r7   rV   r7   r8   rA   t   rL   c                      rZ   rT   rO   r7   rV   r7   r8   rA   u   r[   )r   onesr   r   r   r   r7   r7   rV   r8   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>   rU   r7   Zwrong_shape_matrixr7   r8   rA   z   rE   z&test_lll_wrong_shape.<locals>.<lambda>c                      r`   r>   rW   r7   ra   r7   r8   rA   {   rE   c                      rC   r>   rD   r7   ra   r7   r8   rA   |   rE   c                      rF   r>   rG   r7   ra   r7   r8   rA   }   rB   c                      rH   r>   rI   r7   ra   r7   r8   rA   ~   rJ   c                         t  jddS rK   rU   r7   ra   r7   r8   rA      rB   c                      r`   r>   r\   r7   ra   r7   r8   rA      rE   c                      rC   r>   rM   r7   ra   r7   r8   rA      rE   c                      rF   r>   rN   r7   ra   r7   r8   rA      rB   c                      rH   r>   rO   r7   ra   r7   r8   rA      rJ   )r   r]   r   r   r   r7   r7   ra   r8   test_lll_wrong_shapex      rc   c                      r_   )NrQ   c                      r`   r>   rU   r7   Zwrong_domain_matrixr7   r8   rA      rE   z'test_lll_wrong_domain.<locals>.<lambda>c                      r`   r>   rW   r7   re   r7   r8   rA      rE   c                      rC   r>   rD   r7   re   r7   r8   rA      rE   c                      rF   r>   rG   r7   re   r7   r8   rA      rB   c                      rH   r>   rI   r7   re   r7   r8   rA      rJ   c                      rb   rK   rU   r7   re   r7   r8   rA      rB   c                      r`   r>   r\   r7   re   r7   r8   rA      rE   c                      rC   r>   rM   r7   re   r7   r8   rA      rE   c                      rF   r>   rN   r7   re   r7   r8   rA      rB   c                      rH   r>   rO   r7   re   r7   r8   rA      rJ   )r   r]   r   r   r	   r7   r7   re   r8   test_lll_wrong_domain   rd   rf   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   r9   rP   r^   rc   rf   r7   r7   r7   r8   <module>   s    E