a
    kŗ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s$J t|j ” |dd\}}||j ” ksPJ | |j ” ”|j ” kspJ t|j ” |d\}}||j ” ksJ | |j ” ”|j ” ksŗJ |jj	|d}||jksŲJ |jj
|d\}}||jksśJ | |j”|jksJ |j ” j	|d}||j ” ks8J |j ” j
|d\}}||j ” ksbJ | |j ” ”|j ” ksJ |j	|d}||ksJ |j
|d\}}||ksŗJ | |”|ksĢJ qĢd 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   )iō’’’ił’’’r   é	   é’’’’)é   é4   i  )é   é   r   )é"   iFž’’r   )é¼   i’’’r   )éģ   r   is  )r   r   iŖ’’’é   )iŹ’’’r   é7   i¦  )é   iŖ  éź   i  )éW   é1   i  é   )i#  é+   é   éS   )iC’’’i  iH’’’i!’’’é   é   ©Ś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   śQ/var/www/auris/lib/python3.9/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 qbd 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                      s   t  j ” S ©N©r
   r1   r2   r7   ©Z	not_basisr7   r8   Ś<lambda>]   ó    z+test_lll_linear_dependent.<locals>.<lambda>c                      s   t  j ” S r=   )r   r1   r2   r7   r?   r7   r8   r@   ^   rA   c                      s
    j  ” S r=   ©r1   r4   r7   r?   r7   r8   r@   _   rA   c                      s    j  ”  ” S r=   ©r1   r6   r4   r7   r?   r7   r8   r@   `   rA   c                      s      ” S r=   ©r4   r7   r?   r7   r8   r@   a   rA   c                      s   t  j ” ddS ©NT)r0   r>   r7   r?   r7   r8   r@   b   rA   c                      s   t  j ” S r=   )r   r1   r2   r7   r?   r7   r8   r@   c   rA   c                      s
    j  ” S r=   ©r1   r5   r7   r?   r7   r8   r@   d   rA   c                      s    j  ”  ” S r=   ©r1   r6   r5   r7   r?   r7   r8   r@   e   rA   c                      s      ” S r=   ©r5   r7   r?   r7   r8   r@   f   rA   )r   r   r   r   )Zlinear_dependent_test_datar7   r?   r8   Ś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
   r1   r7   ©Zdummy_matrixZwrong_deltar7   r8   r@   l   rA   z&test_lll_wrong_delta.<locals>.<lambda>c                      s   t  jdS rL   ©r   r1   r7   rN   r7   r8   r@   m   rA   c                      s    j jdS rL   rB   r7   rN   r7   r8   r@   n   rA   c                      s    j  ” jdS rL   rC   r7   rN   r7   r8   r@   o   rA   c                      s    j dS rL   rD   r7   rN   r7   r8   r@   p   rA   c                      s   t  jddS )NTr/   rM   r7   rN   r7   r8   r@   q   rA   c                      s   t  jdS rL   ©r   r1   r7   rN   r7   r8   r@   r   rA   c                      s    j jdS rL   rF   r7   rN   r7   r8   r@   s   rA   c                      s    j  ” jdS rL   rG   r7   rN   r7   r8   r@   t   rA   c                      s    j dS rL   rH   r7   rN   r7   r8   r@   u   rA   )r   Śonesr   r   r   r   r7   r7   rN   r8   Śtest_lll_wrong_deltai   s    0rR   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=   rM   r7   ©Zwrong_shape_matrixr7   r8   r@   z   rA   z&test_lll_wrong_shape.<locals>.<lambda>c                      s
   t  jS r=   rO   r7   rS   r7   r8   r@   {   rA   c                      s
    j  ” S r=   rB   r7   rS   r7   r8   r@   |   rA   c                      s    j  ”  ” S r=   rC   r7   rS   r7   r8   r@   }   rA   c                      s      ” S r=   rD   r7   rS   r7   r8   r@   ~   rA   c                      s   t  jddS rE   rM   r7   rS   r7   r8   r@      rA   c                      s
   t  jS r=   rP   r7   rS   r7   r8   r@      rA   c                      s
    j  ” S r=   rF   r7   rS   r7   r8   r@      rA   c                      s    j  ”  ” S r=   rG   r7   rS   r7   r8   r@      rA   c                      s      ” S r=   rH   r7   rS   r7   r8   r@      rA   )r   rQ   r   r   r   r7   r7   rS   r8   Śtest_lll_wrong_shapex   s    rT   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=   rM   r7   ©Zwrong_domain_matrixr7   r8   r@      rA   z'test_lll_wrong_domain.<locals>.<lambda>c                      s
   t  jS r=   rO   r7   rU   r7   r8   r@      rA   c                      s
    j  ” S r=   rB   r7   rU   r7   r8   r@      rA   c                      s    j  ”  ” S r=   rC   r7   rU   r7   r8   r@      rA   c                      s      ” S r=   rD   r7   rU   r7   r8   r@      rA   c                      s   t  jddS rE   rM   r7   rU   r7   r8   r@      rA   c                      s
   t  jS r=   rP   r7   rU   r7   r8   r@      rA   c                      s
    j  ” S r=   rF   r7   rU   r7   r8   r@      rA   c                      s    j  ”  ” S r=   rG   r7   rU   r7   r8   r@      rA   c                      s      ” S r=   rH   r7   rU   r7   r8   r@      rA   )r   rQ   r   r   r	   r7   r7   rU   r8   Śtest_lll_wrong_domain   s    rV   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   rI   rR   rT   rV   r7   r7   r7   r8   Ś<module>   s   E